salat-first
Version:
Islamic prayer times calculation with special support for Moroccan methods and Maliki madhab
206 lines (205 loc) • 7.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getMuslimWorldLeagueParameters = getMuslimWorldLeagueParameters;
exports.getEgyptianParameters = getEgyptianParameters;
exports.getKarachiParameters = getKarachiParameters;
exports.getUmmAlQuraParameters = getUmmAlQuraParameters;
exports.getDubaiParameters = getDubaiParameters;
exports.getQatarParameters = getQatarParameters;
exports.getKuwaitParameters = getKuwaitParameters;
exports.getMoonsightingCommitteeParameters = getMoonsightingCommitteeParameters;
exports.getNorthAmericaParameters = getNorthAmericaParameters;
exports.getSingaporeParameters = getSingaporeParameters;
exports.getTehranParameters = getTehranParameters;
exports.getTurkeyParameters = getTurkeyParameters;
exports.getParameters = getParameters;
const index_1 = require("./index");
const calculator_1 = require("../prayers/calculator");
const formatting_1 = require("../utils/formatting");
const morocco_1 = require("./morocco");
/**
* Creates calculation parameters for the Muslim World League method
* @returns The calculation parameters
*/
function getMuslimWorldLeagueParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.MuslimWorldLeague, 18, // Fajr angle
17, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments.dhuhr = 1;
return params;
}
/**
* Creates calculation parameters for the Egyptian General Authority of Survey method
* @returns The calculation parameters
*/
function getEgyptianParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.Egyptian, 19.5, // Fajr angle
17.5, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments.dhuhr = 1;
return params;
}
/**
* Creates calculation parameters for the University of Islamic Sciences, Karachi method
* @returns The calculation parameters
*/
function getKarachiParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.Karachi, 18, // Fajr angle
18, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments.dhuhr = 1;
return params;
}
/**
* Creates calculation parameters for the Umm al-Qura University, Makkah method
* @returns The calculation parameters
*/
function getUmmAlQuraParameters() {
return new calculator_1.CalculationParameters(index_1.CalculationMethod.UmmAlQura, 18.5, // Fajr angle
0, // No Isha angle
90, // Isha is 90 minutes after Maghrib
0 // No Maghrib angle
);
}
/**
* Creates calculation parameters for the Dubai method
* @returns The calculation parameters
*/
function getDubaiParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.Dubai, 18.2, // Fajr angle
18.2, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments = Object.assign(Object.assign({}, params.methodAdjustments), { sunrise: -3, dhuhr: 3, asr: 3, maghrib: 3 });
return params;
}
/**
* Creates calculation parameters for the Qatar method
* @returns The calculation parameters
*/
function getQatarParameters() {
return new calculator_1.CalculationParameters(index_1.CalculationMethod.Qatar, 18, // Fajr angle
0, // No Isha angle
90, // Isha is 90 minutes after Maghrib
0 // No Maghrib angle
);
}
/**
* Creates calculation parameters for the Kuwait method
* @returns The calculation parameters
*/
function getKuwaitParameters() {
return new calculator_1.CalculationParameters(index_1.CalculationMethod.Kuwait, 18, // Fajr angle
17.5, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
}
/**
* Creates calculation parameters for the Moonsighting Committee method
* @returns The calculation parameters
*/
function getMoonsightingCommitteeParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.MoonsightingCommittee, 18, // Fajr angle
18, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments = Object.assign(Object.assign({}, params.methodAdjustments), { dhuhr: 5, maghrib: 3 });
return params;
}
/**
* Creates calculation parameters for the North America (ISNA) method
* @returns The calculation parameters
*/
function getNorthAmericaParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.NorthAmerica, 15, // Fajr angle
15, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments.dhuhr = 1;
return params;
}
/**
* Creates calculation parameters for the Singapore method
* @returns The calculation parameters
*/
function getSingaporeParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.Singapore, 20, // Fajr angle
18, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments.dhuhr = 1;
params.rounding = formatting_1.Rounding.Up;
return params;
}
/**
* Creates calculation parameters for the Tehran method
* @returns The calculation parameters
*/
function getTehranParameters() {
return new calculator_1.CalculationParameters(index_1.CalculationMethod.Tehran, 17.7, // Fajr angle
14, // Isha angle
0, // No Isha interval
4.5 // Maghrib angle
);
}
/**
* Creates calculation parameters for the Turkey method
* @returns The calculation parameters
*/
function getTurkeyParameters() {
const params = new calculator_1.CalculationParameters(index_1.CalculationMethod.Turkey, 18, // Fajr angle
17, // Isha angle
0, // No Isha interval
0 // No Maghrib angle
);
params.methodAdjustments = Object.assign(Object.assign({}, params.methodAdjustments), { sunrise: -7, dhuhr: 5, asr: 4, maghrib: 7 });
return params;
}
/**
* Gets parameters for a given calculation method
* @param method The calculation method
* @returns The calculation parameters
*/
function getParameters(method) {
switch (method) {
case index_1.CalculationMethod.MuslimWorldLeague:
return getMuslimWorldLeagueParameters();
case index_1.CalculationMethod.Egyptian:
return getEgyptianParameters();
case index_1.CalculationMethod.Karachi:
return getKarachiParameters();
case index_1.CalculationMethod.UmmAlQura:
return getUmmAlQuraParameters();
case index_1.CalculationMethod.Dubai:
return getDubaiParameters();
case index_1.CalculationMethod.MoonsightingCommittee:
return getMoonsightingCommitteeParameters();
case index_1.CalculationMethod.NorthAmerica:
return getNorthAmericaParameters();
case index_1.CalculationMethod.Kuwait:
return getKuwaitParameters();
case index_1.CalculationMethod.Qatar:
return getQatarParameters();
case index_1.CalculationMethod.Singapore:
return getSingaporeParameters();
case index_1.CalculationMethod.Tehran:
return getTehranParameters();
case index_1.CalculationMethod.Turkey:
return getTurkeyParameters();
case index_1.CalculationMethod.MoroccanHabous:
return (0, morocco_1.getMoroccanHabousParameters)();
default:
throw new Error(`Unknown calculation method: ${method}`);
}
}