mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-08 12:23:59 +00:00
Recent community wildlife observations, as a new Wildlife group in the layer panel. - Server: keyless iNaturalist proxy (v2 observations with only the projected fields; undocumented v1 UTFGrid density tiles, decoded on the server) sharing one paced queue (burst 4, ~1/s, 60/min, 8,000/day budget, up to four in flight), in-memory caches and upstream-only cooldowns; Acartia Salish Sea marine-mammal feed rounded to 0.01 degrees with comments dropped. - Layer: grid counts drawn as a soft view-ranked density glow; real sampled sightings as taxon badges at their true positions with ambient photo thumbnails and labels; obscured records stay privacy cells; a clicked sighting stays pinned through camera moves and refreshes. - Anchored photo card per selection with the single iNaturalist link; attribution in the layer row and the Data attribution popover. - Filters (CONFIRMED, taxa presets) round-trip in share links with token 9. Co-Authored-By: Claude Opus 5.5 <[email protected]>
60 lines
1.9 KiB
JavaScript
60 lines
1.9 KiB
JavaScript
import { spawnSync } from 'node:child_process';
|
|
import path from 'node:path';
|
|
import { pathToFileURL } from 'node:url';
|
|
import {
|
|
discoverUnitTestFiles,
|
|
UNIT_TEST_NODE_FLAGS,
|
|
} from './run-unit-tests.mjs';
|
|
|
|
/** Discover every layer/provider benchmark, including those added by other branches. */
|
|
export function discoverPerfTestFiles(root = process.cwd()) {
|
|
return discoverUnitTestFiles(root).filter((file) =>
|
|
file.endsWith('.perf.test.mjs'),
|
|
);
|
|
}
|
|
|
|
/** Shared by benchmarks so normal unit runs visibly skip timing assertions. */
|
|
export function perfBudgetTestOptions(env = process.env) {
|
|
return {
|
|
skip:
|
|
env.GEV_PERF_BUDGETS === '1'
|
|
? false
|
|
: 'Timing budgets are opt-in; run npm run test:perf (GEV_PERF_BUDGETS=1). Deterministic delta/write checks still run in the normal suite.',
|
|
};
|
|
}
|
|
|
|
/** Build a serial invocation so benchmarks do not compete for CPU time. */
|
|
export function perfTestArgs(files) {
|
|
// A single serial test process keeps benchmark files from competing with
|
|
// each other; the normal suite still discovers them and reports their skips.
|
|
return [
|
|
...UNIT_TEST_NODE_FLAGS,
|
|
'--test',
|
|
'--test-concurrency=1',
|
|
'--test-isolation=none',
|
|
...files,
|
|
];
|
|
}
|
|
|
|
/** Run discovered benchmarks with wall-clock budgets enabled. */
|
|
export function runPerfTests({
|
|
root = process.cwd(),
|
|
env = process.env,
|
|
run = spawnSync,
|
|
} = {}) {
|
|
const files = discoverPerfTestFiles(root);
|
|
if (!files.length) throw new Error('No *.perf.test.mjs benchmarks found');
|
|
const result = run(process.execPath, perfTestArgs(files), {
|
|
cwd: root,
|
|
stdio: 'inherit',
|
|
env: { ...env, GEV_PERF_BUDGETS: '1' },
|
|
});
|
|
if (result.error) throw result.error;
|
|
return result.status ?? 1;
|
|
}
|
|
|
|
const invoked = process.argv[1]
|
|
? pathToFileURL(path.resolve(process.argv[1])).href
|
|
: '';
|
|
if (import.meta.url === invoked) process.exitCode = runPerfTests();
|