UNPKG

iztro

Version:

轻量级紫微斗数星盘生成库。可以通过出生年月日获取到紫微斗数星盘信息、生肖、星座等信息。This is a lightweight kit for generating astrolabes for Zi Wei Dou Shu (The Purple Star Astrology), an ancient Chinese astrology. It allows you to obtain your horoscope and personality analysis.

187 lines (186 loc) 4.89 kB
import { IFunctionalPalace } from '../../astro/FunctionalPalace'; import { Brightness, EarthlyBranchName, FiveElementsClassName, GenderName, HeavenlyStemName, PalaceName, StarName } from '../../i18n'; import FunctionalStar from '../../star/FunctionalStar'; import { HeavenlyStemAndEarthlyBranchDate, LunarDate } from 'lunar-lite/lib/types'; import { Language } from './general'; /** * 运限对象 * * @property * - index 所在宫位的索引 * - heavenlyStem 该运限天干 * - palaceNames 该运限的十二宫 * - mutagen 四化星 * - stars 流耀 */ export type HoroscopeItem = { /** 所在宫位的索引 */ index: number; /** 运限名称 */ name: string; /** 该运限天干 */ heavenlyStem: HeavenlyStemName; /** 该运限地支 */ earthlyBranch: EarthlyBranchName; /** 该运限的十二宫 */ palaceNames: PalaceName[]; /** 四化星 */ mutagen: StarName[]; /** 流耀 */ stars?: FunctionalStar[][]; }; /** * 大限 * * @property * - range 大限起止年龄 [起始年龄, 截止年龄] * - heavenlyStem 大限天干 * - earthlyBranch 大限地支 */ export type Decadal = { /** 大限起止年龄 [起始年龄, 截止年龄] */ range: [number, number]; /** 大限天干 */ heavenlyStem: HeavenlyStemName; /** 大限地支 */ earthlyBranch: EarthlyBranchName; }; /** * 运限 * * @property * - lunarDate 农历日期 * - solarDate 阳历日期 * - decadal 大限 * - age 小限 * - yearly 流年 * - monthly 流月 * - daily 流日 */ export type Horoscope = { /** 农历日期 */ lunarDate: string; /** 阳历日期 */ solarDate: string; /** 大限 */ decadal: HoroscopeItem; /** * 小限 * * @property * - nominalAge 虚岁 */ age: HoroscopeItem & { /** 虚岁 */ nominalAge: number; }; /** 流年 */ yearly: HoroscopeItem & { yearlyDecStar: { jiangqian12: StarName[]; suiqian12: StarName[]; }; }; /** 流月 */ monthly: HoroscopeItem; /** 流日 */ daily: HoroscopeItem; /** 流时 */ hourly: HoroscopeItem; }; /** * 星盘对象 * * @property * - solarDate 阳历日期 * - lunarDate 农历日期 * - chineseDate 干支纪年日期 * - time 时辰 * - timeRange 时辰对应的时间段 * - sign 星座 * - zodiac 生肖 * - earthlyBranchOfSoulPalace 命宫地支 * - earthlyBranchOfBodyPalace 身宫地支 * - soul 命主 * - body 身主 * - palaces 十二宫数据 * * @function * - horoscope() 获取运限数据 * - palace() 获取宫位数据 */ export type Astrolabe = { /** 性别 */ gender: string; /** 阳历日期 */ solarDate: string; /** 农历日期 */ lunarDate: string; /** 干支纪年日期 */ chineseDate: string; /** * 原始日期数据,用于今后内部方法使用 * * @property * - lunar 农历日期对象 * - chinese 干支纪年日期对象 */ rawDates: { /** 农历日期对象 */ lunarDate: LunarDate; /** 干支纪年日期对象 */ chineseDate: HeavenlyStemAndEarthlyBranchDate; }; /** 时辰 */ time: string; /** 时辰对应的时间段 */ timeRange: string; /** 星座 */ sign: string; /** 生肖 */ zodiac: string; /** 命宫地支 */ earthlyBranchOfSoulPalace: EarthlyBranchName; /** 身宫地支 */ earthlyBranchOfBodyPalace: EarthlyBranchName; /** 命主 */ soul: StarName; /** 身主 */ body: StarName; /** 五行局 */ fiveElementsClass: FiveElementsClassName; /** 十二宫数据 */ palaces: IFunctionalPalace[]; /** 版权 */ copyright: string; }; /** * 定义一个接口,表示插件函数的类型 * */ export type Plugin = () => void; export type ConfigMutagens = Partial<Record<HeavenlyStemName, StarName[]>>; export type ConfigBrightness = Partial<Record<StarName, Brightness[]>>; export type Config = { /** 四化配置 */ mutagens?: ConfigMutagens; /** 星耀亮度配置 */ brightness?: ConfigBrightness; /** 年分割点配置,normal为正月初一分界,exact为立春分割 */ yearDivide?: 'normal' | 'exact'; /** 运限分割点配置,normal为正月初一分界,exact为立春分割 */ horoscopeDivide?: 'normal' | 'exact'; /** 小限分割点配置,normal为以自然年分界,birthday为生日分界 */ ageDivide?: 'normal' | 'birthday'; /** 安星方法,default为通行版本,zhongzhou为中州派版本 */ algorithm?: 'default' | 'zhongzhou'; }; export type Option = { type: 'solar' | 'lunar'; dateStr: string; timeIndex: number; gender: GenderName; isLeapMonth?: boolean; fixLeap?: boolean; language?: Language; config?: Config; };