mirror of
https://github.com/acamarata/pray-calc.git
synced 2026-06-30 19:04:26 +00:00
chore: adopt shared config packages (tsconfig, eslint, prettier)
This commit is contained in:
parent
5b5466d8ad
commit
fbb2fa9179
7 changed files with 83 additions and 41 deletions
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"singleQuote": true,
|
||||
"trailingComma": "all",
|
||||
"printWidth": 100,
|
||||
"tabWidth": 2
|
||||
}
|
||||
|
|
@ -1,12 +1,16 @@
|
|||
import eslint from '@eslint/js';
|
||||
import tseslint from 'typescript-eslint';
|
||||
import tsParser from '@typescript-eslint/parser';
|
||||
import tsPlugin from '@typescript-eslint/eslint-plugin';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||
import { typescript } from '@acamarata/eslint-config';
|
||||
|
||||
export default tseslint.config(
|
||||
eslint.configs.recommended,
|
||||
...tseslint.configs.recommended,
|
||||
export default [
|
||||
{
|
||||
plugins: { '@typescript-eslint': tsPlugin },
|
||||
languageOptions: { parser: tsParser },
|
||||
},
|
||||
...typescript,
|
||||
eslintConfigPrettier,
|
||||
{
|
||||
ignores: ['dist/', 'node_modules/', 'test.mjs', 'test-cjs.cjs'],
|
||||
},
|
||||
);
|
||||
];
|
||||
|
|
|
|||
|
|
@ -72,6 +72,9 @@
|
|||
"nrel-spa": "^2.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@acamarata/eslint-config": "^0.1.0",
|
||||
"@acamarata/prettier-config": "^0.1.0",
|
||||
"@acamarata/tsconfig": "^0.1.0",
|
||||
"@eslint/js": "^10.0.1",
|
||||
"@types/node": "^25.3.0",
|
||||
"eslint": "^10.0.3",
|
||||
|
|
@ -82,5 +85,6 @@
|
|||
"typescript-eslint": "^8.56.1"
|
||||
},
|
||||
"type": "module",
|
||||
"packageManager": "pnpm@10.11.1"
|
||||
"packageManager": "pnpm@10.11.1",
|
||||
"prettier": "@acamarata/prettier-config"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,15 @@ importers:
|
|||
specifier: ^2.0.1
|
||||
version: 2.0.1
|
||||
devDependencies:
|
||||
'@acamarata/eslint-config':
|
||||
specifier: ^0.1.0
|
||||
version: 0.1.0(@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3))(@typescript-eslint/parser@8.56.1(eslint@10.0.3)(typescript@5.9.3))(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)
|
||||
'@acamarata/prettier-config':
|
||||
specifier: ^0.1.0
|
||||
version: 0.1.0(prettier@3.8.1)
|
||||
'@acamarata/tsconfig':
|
||||
specifier: ^0.1.0
|
||||
version: 0.1.0
|
||||
'@eslint/js':
|
||||
specifier: ^10.0.1
|
||||
version: 10.0.1(eslint@10.0.3)
|
||||
|
|
@ -39,6 +48,32 @@ importers:
|
|||
|
||||
packages:
|
||||
|
||||
'@acamarata/eslint-config@0.1.0':
|
||||
resolution: {integrity: sha512-St2TObpHKXBLBy1GPrXWlHzXCujJ7jaor6BuWRdLMTOjM56LPBDJx+898R7yFyI8Wi52VWNZdSTPxzHuyRAq+A==}
|
||||
engines: {node: '>=20'}
|
||||
peerDependencies:
|
||||
'@typescript-eslint/eslint-plugin': '>=8.0.0'
|
||||
'@typescript-eslint/parser': '>=8.0.0'
|
||||
eslint: '>=9.0.0'
|
||||
eslint-config-prettier: '>=9.0.0'
|
||||
eslint-plugin-react: '>=7.0.0'
|
||||
eslint-plugin-react-hooks: '>=5.0.0'
|
||||
peerDependenciesMeta:
|
||||
eslint-plugin-react:
|
||||
optional: true
|
||||
eslint-plugin-react-hooks:
|
||||
optional: true
|
||||
|
||||
'@acamarata/prettier-config@0.1.0':
|
||||
resolution: {integrity: sha512-ImMnz/653ettR4gJVd1f7Pz61DQSeDmUtguLrnCl8RdYncqfghT+QGEO5Znml0KvgX3vk4c4roPAWYdXaZgcPA==}
|
||||
engines: {node: '>=20'}
|
||||
peerDependencies:
|
||||
prettier: '>=3.0.0'
|
||||
|
||||
'@acamarata/tsconfig@0.1.0':
|
||||
resolution: {integrity: sha512-bgzyBak43mE+0HhduZX3cvaPjKcggtGGZZMjr35qtYWolsIWgZ9nx7OOswbVYoU35qoUv6rZ0mTK6GbZ8QTYjw==}
|
||||
engines: {node: '>=20'}
|
||||
|
||||
'@esbuild/aix-ppc64@0.27.3':
|
||||
resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==}
|
||||
engines: {node: '>=18'}
|
||||
|
|
@ -297,79 +332,66 @@ packages:
|
|||
resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm-musleabihf@4.59.0':
|
||||
resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-arm64-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-arm64-musl@4.59.0':
|
||||
resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-loong64-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-loong64-musl@4.59.0':
|
||||
resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
|
||||
cpu: [loong64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-ppc64-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-ppc64-musl@4.59.0':
|
||||
resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
|
||||
cpu: [ppc64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-riscv64-musl@4.59.0':
|
||||
resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
|
||||
cpu: [riscv64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-linux-s390x-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
|
||||
cpu: [s390x]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-gnu@4.59.0':
|
||||
resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [glibc]
|
||||
|
||||
'@rollup/rollup-linux-x64-musl@4.59.0':
|
||||
resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
libc: [musl]
|
||||
|
||||
'@rollup/rollup-openbsd-x64@4.59.0':
|
||||
resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
|
||||
|
|
@ -913,6 +935,19 @@ packages:
|
|||
|
||||
snapshots:
|
||||
|
||||
'@acamarata/eslint-config@0.1.0(@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3))(@typescript-eslint/parser@8.56.1(eslint@10.0.3)(typescript@5.9.3))(eslint-config-prettier@10.1.8(eslint@10.0.3))(eslint@10.0.3)':
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.3)(typescript@5.9.3))(eslint@10.0.3)(typescript@5.9.3)
|
||||
'@typescript-eslint/parser': 8.56.1(eslint@10.0.3)(typescript@5.9.3)
|
||||
eslint: 10.0.3
|
||||
eslint-config-prettier: 10.1.8(eslint@10.0.3)
|
||||
|
||||
'@acamarata/prettier-config@0.1.0(prettier@3.8.1)':
|
||||
dependencies:
|
||||
prettier: 3.8.1
|
||||
|
||||
'@acamarata/tsconfig@0.1.0': {}
|
||||
|
||||
'@esbuild/aix-ppc64@0.27.3':
|
||||
optional: true
|
||||
|
||||
|
|
|
|||
|
|
@ -67,11 +67,15 @@ export function getTimes(
|
|||
const spaOpts = { elevation, temperature, pressure };
|
||||
const spaData = getSpa(date, lat, lng, tz, spaOpts, [fajrZenith, ishaZenith]);
|
||||
|
||||
const fajrTime = spaData.angles[0].sunrise;
|
||||
// Non-null assertions: getSpa was called with exactly [fajrZenith, ishaZenith], so
|
||||
// index 0 and 1 are always defined.
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const fajrTime = spaData.angles[0]!.sunrise;
|
||||
const sunriseTime = spaData.sunrise;
|
||||
const noonTime = spaData.solarNoon;
|
||||
const maghribTime = spaData.sunset;
|
||||
const ishaTime = spaData.angles[1].sunset;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const ishaTime = spaData.angles[1]!.sunset;
|
||||
|
||||
// Dhuhr: offset after solar noon (standard practice to confirm transit).
|
||||
const dhuhrTime = noonTime + DHUHR_OFFSET_MINUTES / 60;
|
||||
|
|
|
|||
|
|
@ -192,11 +192,14 @@ export function getTimesAll(
|
|||
const spaData = getSpa(date, lat, lng, tz, spaOpts, allZeniths);
|
||||
|
||||
// 3. Extract core times (index 0 = dynamic Fajr, index 1 = dynamic Isha).
|
||||
const fajrTime = spaData.angles[0].sunrise;
|
||||
// Non-null assertions: allZeniths guarantees at least 2 angle entries (index 0 and 1 always set).
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const fajrTime = spaData.angles[0]!.sunrise;
|
||||
const sunriseTime = spaData.sunrise;
|
||||
const noonTime = spaData.solarNoon;
|
||||
const maghribTime = spaData.sunset;
|
||||
const ishaTime = spaData.angles[1].sunset;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const ishaTime = spaData.angles[1]!.sunset;
|
||||
const dhuhrTime = noonTime + DHUHR_OFFSET_MINUTES / 60;
|
||||
|
||||
// 4. Asr time (reuses declination from computeAngles — no extra ephemeris call).
|
||||
|
|
@ -208,10 +211,14 @@ export function getTimesAll(
|
|||
const Methods: Record<string, [number, number]> = {};
|
||||
|
||||
for (let i = 0; i < METHODS.length; i++) {
|
||||
const m = METHODS[i];
|
||||
// Non-null assertion: METHODS.length is static (14), allZeniths was built with exactly
|
||||
// 2 + METHODS.length*2 entries, so spaBaseIdx and spaBaseIdx+1 are always valid.
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
const m = METHODS[i]!;
|
||||
const spaBaseIdx = 2 + i * 2; // angles index offset for this method
|
||||
|
||||
let methodFajr = spaData.angles[spaBaseIdx].sunrise;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
let methodFajr = spaData.angles[spaBaseIdx]!.sunrise;
|
||||
let methodIsha: number;
|
||||
|
||||
if (m.useMSC) {
|
||||
|
|
@ -224,7 +231,8 @@ export function getTimesAll(
|
|||
// Fixed-minute Isha (UAQ = 90 min, Qatar = 90 min after sunset).
|
||||
methodIsha = isFinite(maghribTime) ? maghribTime + m.ishaMinutes / 60 : NaN;
|
||||
} else {
|
||||
methodIsha = spaData.angles[spaBaseIdx + 1].sunset;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
methodIsha = spaData.angles[spaBaseIdx + 1]!.sunset;
|
||||
}
|
||||
|
||||
Methods[m.id] = [methodFajr, methodIsha];
|
||||
|
|
|
|||
|
|
@ -1,16 +1,9 @@
|
|||
{
|
||||
"extends": "@acamarata/tsconfig/tsconfig.library.json",
|
||||
"compilerOptions": {
|
||||
"target": "ES2020",
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "bundler",
|
||||
"strict": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"esModuleInterop": true,
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "dist",
|
||||
"rootDir": "src",
|
||||
"types": ["node"]
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in a new issue