Comparing version
@@ -10,2 +10,16 @@ # 紫微斗数 | ||
## v2.3.0 | ||
- 🪄 功能(feature) | ||
🇨🇳 | ||
- 支持全局插件 #165 | ||
- 支持全局配置 #165 | ||
🇺🇸 | ||
- support global plugin #165 | ||
- support global configuration #165 | ||
## v2.2.3 | ||
@@ -12,0 +26,0 @@ |
@@ -1,5 +0,36 @@ | ||
import { Language } from '../data/types'; | ||
import { Config, Language, Plugin } from '../data/types'; | ||
import { GenderName } from '../i18n'; | ||
import FunctionalAstrolabe from './FunctionalAstrolabe'; | ||
/** | ||
* 批量加载插件 | ||
* | ||
* @version v2.3.0 | ||
* | ||
* @param plugins 插件方法数组 | ||
*/ | ||
export declare const loadPlugins: (plugins: Plugin[]) => void; | ||
/** | ||
* 加载单个插件 | ||
* | ||
* @version v2.3.0 | ||
* | ||
* @param plugin 插件方法 | ||
*/ | ||
export declare const loadPlugin: (plugin: Plugin) => void; | ||
/** | ||
* 全局配置四化和亮度 | ||
* | ||
* 由于key和value都有可能是不同语言传进来的, | ||
* 所以需会将key和value转化为对应的i18n key。 | ||
* | ||
* @version 2.3.0 | ||
* | ||
* @param {Config} param0 自定义配置 | ||
*/ | ||
export declare const config: ({ mutagens, brightness }: Config) => void; | ||
export declare const getConfig: () => { | ||
mutagens: Partial<Record<"jiaHeavenly" | "yiHeavenly" | "bingHeavenly" | "dingHeavenly" | "wuHeavenly" | "jiHeavenly" | "gengHeavenly" | "xinHeavenly" | "renHeavenly" | "guiHeavenly", ("lianzhenMaj" | "pojunMaj" | "wuquMaj" | "taiyangMaj" | "tianjiMaj" | "tianliangMaj" | "ziweiMaj" | "taiyinMaj" | "tiantongMaj" | "wenchangMin" | "jumenMaj" | "tanlangMaj" | "youbiMin" | "wenquMin" | "zuofuMin" | "huoxingMin" | "tianxiangMaj" | "lucunMin" | "si" | "bing" | "tianfuMaj" | "qishaMaj" | "tianmaMin" | "qingyangMin" | "tuoluoMin" | "lingxingMin" | "tiankuiMin" | "tianyueMin" | "dikongMin" | "dijieMin" | "tiankong" | "tianxing" | "tianyao" | "jieshen" | "yinsha" | "tianxi" | "tianguan" | "tianfu" | "tianku" | "tianxu" | "longchi" | "fengge" | "hongluan" | "guchen" | "guasu" | "feilian" | "posui" | "taifu" | "fenggao" | "tianwu" | "tianyue" | "santai" | "bazuo" | "engguang" | "tiangui" | "tiancai" | "tianshou" | "jiekong" | "xunzhong" | "xunkong" | "kongwang" | "jielu" | "yuede" | "tianshang" | "tianshi" | "tianchu" | "changsheng" | "muyu" | "guandai" | "linguan" | "diwang" | "shuai" | "mu" | "jue" | "tai" | "yang" | "boshi" | "lishi" | "qinglong" | "xiaohao" | "jiangjun" | "zhoushu" | "faylian" | "xishen" | "bingfu" | "dahao" | "fubing" | "guanfu" | "suijian" | "huiqi" | "sangmen" | "guansuo" | "gwanfu" | "longde" | "baihu" | "tiande" | "diaoke" | "jiangxing" | "panan" | "suiyi" | "xiishen" | "huagai" | "jiesha" | "zhaisha" | "tiansha" | "zhibei" | "xianchi" | "yuesha" | "wangshen" | "yunkui" | "yunyue" | "yunchang" | "yunqu" | "yunluan" | "yunxi" | "yunlu" | "yunyang" | "yuntuo" | "yunma" | "liukui" | "liuyue" | "liuchang" | "liuqu" | "liuluan" | "liuxi" | "liulu" | "liuyang" | "liutuo" | "liuma" | "nianjie")[]>>; | ||
brightness: Partial<Record<"lianzhenMaj" | "pojunMaj" | "wuquMaj" | "taiyangMaj" | "tianjiMaj" | "tianliangMaj" | "ziweiMaj" | "taiyinMaj" | "tiantongMaj" | "wenchangMin" | "jumenMaj" | "tanlangMaj" | "youbiMin" | "wenquMin" | "zuofuMin" | "huoxingMin" | "tianxiangMaj" | "lucunMin" | "si" | "bing" | "tianfuMaj" | "qishaMaj" | "tianmaMin" | "qingyangMin" | "tuoluoMin" | "lingxingMin" | "tiankuiMin" | "tianyueMin" | "dikongMin" | "dijieMin" | "tiankong" | "tianxing" | "tianyao" | "jieshen" | "yinsha" | "tianxi" | "tianguan" | "tianfu" | "tianku" | "tianxu" | "longchi" | "fengge" | "hongluan" | "guchen" | "guasu" | "feilian" | "posui" | "taifu" | "fenggao" | "tianwu" | "tianyue" | "santai" | "bazuo" | "engguang" | "tiangui" | "tiancai" | "tianshou" | "jiekong" | "xunzhong" | "xunkong" | "kongwang" | "jielu" | "yuede" | "tianshang" | "tianshi" | "tianchu" | "changsheng" | "muyu" | "guandai" | "linguan" | "diwang" | "shuai" | "mu" | "jue" | "tai" | "yang" | "boshi" | "lishi" | "qinglong" | "xiaohao" | "jiangjun" | "zhoushu" | "faylian" | "xishen" | "bingfu" | "dahao" | "fubing" | "guanfu" | "suijian" | "huiqi" | "sangmen" | "guansuo" | "gwanfu" | "longde" | "baihu" | "tiande" | "diaoke" | "jiangxing" | "panan" | "suiyi" | "xiishen" | "huagai" | "jiesha" | "zhaisha" | "tiansha" | "zhibei" | "xianchi" | "yuesha" | "wangshen" | "yunkui" | "yunyue" | "yunchang" | "yunqu" | "yunluan" | "yunxi" | "yunlu" | "yunyang" | "yuntuo" | "yunma" | "liukui" | "liuyue" | "liuchang" | "liuqu" | "liuluan" | "liuxi" | "liulu" | "liuyang" | "liutuo" | "liuma" | "nianjie", ("li" | "wang" | "de" | "miao" | "ping" | "xian" | "bu")[]>>; | ||
}; | ||
/** | ||
* 通过阳历获取星盘信息 | ||
@@ -27,3 +58,3 @@ * | ||
*/ | ||
export declare const bySolar: (solarDateStr: string, timeIndex: number, gender: GenderName, fixLeap?: boolean, language?: Language) => FunctionalAstrolabe; | ||
export declare function bySolar<T extends FunctionalAstrolabe>(solarDateStr: string, timeIndex: number, gender: GenderName, fixLeap?: boolean, language?: Language): T; | ||
/** | ||
@@ -30,0 +61,0 @@ * 通过农历获取星盘信息 |
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getMajorStarByLunarDate = exports.getMajorStarBySolarDate = exports.getSignByLunarDate = exports.getSignBySolarDate = exports.getZodiacBySolarDate = exports.byLunar = exports.astrolabeByLunarDate = exports.bySolar = exports.astrolabeBySolarDate = void 0; | ||
exports.getMajorStarByLunarDate = exports.getMajorStarBySolarDate = exports.getSignByLunarDate = exports.getSignBySolarDate = exports.getZodiacBySolarDate = exports.byLunar = exports.astrolabeByLunarDate = exports.bySolar = exports.astrolabeBySolarDate = exports.getConfig = exports.config = exports.loadPlugin = exports.loadPlugins = void 0; | ||
var lunar_lite_1 = require("lunar-lite"); | ||
@@ -16,3 +16,58 @@ var data_1 = require("../data"); | ||
var palace_1 = require("./palace"); | ||
var _plugins = []; | ||
var _mutagens = {}; | ||
var _brightness = {}; | ||
/** | ||
* 批量加载插件 | ||
* | ||
* @version v2.3.0 | ||
* | ||
* @param plugins 插件方法数组 | ||
*/ | ||
var loadPlugins = function (plugins) { | ||
Array.prototype.push.apply(_plugins, plugins); | ||
}; | ||
exports.loadPlugins = loadPlugins; | ||
/** | ||
* 加载单个插件 | ||
* | ||
* @version v2.3.0 | ||
* | ||
* @param plugin 插件方法 | ||
*/ | ||
var loadPlugin = function (plugin) { | ||
_plugins.push(plugin); | ||
}; | ||
exports.loadPlugin = loadPlugin; | ||
/** | ||
* 全局配置四化和亮度 | ||
* | ||
* 由于key和value都有可能是不同语言传进来的, | ||
* 所以需会将key和value转化为对应的i18n key。 | ||
* | ||
* @version 2.3.0 | ||
* | ||
* @param {Config} param0 自定义配置 | ||
*/ | ||
var config = function (_a) { | ||
var mutagens = _a.mutagens, brightness = _a.brightness; | ||
if (mutagens) { | ||
Object.entries(mutagens).forEach(function (_a) { | ||
var _b; | ||
var key = _a[0], value = _a[1]; | ||
_mutagens[(0, i18n_1.kot)(key)] = (_b = value.map(function (item) { return (0, i18n_1.kot)(item); })) !== null && _b !== void 0 ? _b : []; | ||
}); | ||
} | ||
if (brightness) { | ||
Object.entries(brightness).forEach(function (_a) { | ||
var _b; | ||
var key = _a[0], value = _a[1]; | ||
_brightness[(0, i18n_1.kot)(key)] = (_b = value.map(function (item) { return (0, i18n_1.kot)(item); })) !== null && _b !== void 0 ? _b : []; | ||
}); | ||
} | ||
}; | ||
exports.config = config; | ||
var getConfig = function () { return ({ mutagens: _mutagens, brightness: _brightness }); }; | ||
exports.getConfig = getConfig; | ||
/** | ||
* 通过阳历获取星盘信息 | ||
@@ -31,3 +86,3 @@ * | ||
if (fixLeap === void 0) { fixLeap = true; } | ||
return (0, exports.bySolar)(solarDateStr, timeIndex, gender, fixLeap, language); | ||
return bySolar(solarDateStr, timeIndex, gender, fixLeap, language); | ||
}; | ||
@@ -45,3 +100,3 @@ exports.astrolabeBySolarDate = astrolabeBySolarDate; | ||
*/ | ||
var bySolar = function (solarDateStr, timeIndex, gender, fixLeap, language) { | ||
function bySolar(solarDateStr, timeIndex, gender, fixLeap, language) { | ||
if (fixLeap === void 0) { fixLeap = true; } | ||
@@ -105,4 +160,5 @@ language && (0, i18n_1.setLanguage)(language); | ||
}); | ||
_plugins.map(function (plugin) { return result.use(plugin); }); | ||
return result; | ||
}; | ||
} | ||
exports.bySolar = bySolar; | ||
@@ -143,3 +199,3 @@ /** | ||
var solarDate = (0, lunar_lite_1.lunar2solar)(lunarDateStr, isLeapMonth); | ||
return (0, exports.bySolar)(solarDate.toString(), timeIndex, gender, fixLeap, language); | ||
return bySolar(solarDate.toString(), timeIndex, gender, fixLeap, language); | ||
}; | ||
@@ -146,0 +202,0 @@ exports.byLunar = byLunar; |
@@ -1,2 +0,2 @@ | ||
import { Astrolabe } from '../data/types'; | ||
import { Astrolabe, Plugin } from '../data/types'; | ||
import { EarthlyBranchName, PalaceName, StarName } from '../i18n'; | ||
@@ -14,2 +14,10 @@ import { IFunctionalStar } from '../star/FunctionalStar'; | ||
/** | ||
* 插件注入方法 | ||
* | ||
* @version v2.3.0 | ||
* | ||
* @param plugin 插件函数 | ||
*/ | ||
use(plugin: Plugin): void; | ||
/** | ||
* 获取运限数据 | ||
@@ -109,3 +117,5 @@ * | ||
palaces: IFunctionalPalace[]; | ||
private plugins; | ||
constructor(data: Astrolabe); | ||
use(plugin: Plugin): void; | ||
star: (starName: StarName) => IFunctionalStar; | ||
@@ -112,0 +122,0 @@ horoscope: (targetDate?: string | Date, timeIndexOfTarget?: number) => IFunctionalHoroscope; |
@@ -184,2 +184,4 @@ "use strict"; | ||
var _this = this; | ||
// 保存插件列表 | ||
this.plugins = []; | ||
this.star = function (starName) { | ||
@@ -265,4 +267,8 @@ var targetStar; | ||
} | ||
FunctionalAstrolabe.prototype.use = function (plugin) { | ||
this.plugins.push(plugin); | ||
plugin.apply(this); | ||
}; | ||
return FunctionalAstrolabe; | ||
}()); | ||
exports.default = FunctionalAstrolabe; |
@@ -90,3 +90,2 @@ import { Palace } from '../data/types'; | ||
* | ||
* @param from 源宫位 | ||
* @param to 目标宫位 | ||
@@ -93,0 +92,0 @@ * @param withMutagens 四化(禄、权、科、忌) |
import { IFunctionalPalace } from '../../astro/FunctionalPalace'; | ||
import { EarthlyBranchName, FiveElementsClassName, HeavenlyStemName, PalaceName, StarName } from '../../i18n'; | ||
import { Brightness, EarthlyBranchName, FiveElementsClassName, HeavenlyStemName, PalaceName, StarName } from '../../i18n'; | ||
import FunctionalStar from '../../star/FunctionalStar'; | ||
@@ -154,1 +154,11 @@ import { HeavenlyStemAndEarthlyBranchDate, LunarDate } from 'lunar-lite/lib/types'; | ||
}; | ||
/** | ||
* 定义一个接口,表示插件函数的类型 | ||
* */ | ||
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; | ||
}; |
@@ -8,2 +8,15 @@ "use strict"; | ||
var lunar_lite_1 = require("lunar-lite"); | ||
var astro_1 = require("../astro"); | ||
var getTargetMutagens = function (heavenlyStem) { | ||
var _a, _b; | ||
var mutagens = (0, astro_1.getConfig)().mutagens; | ||
var result; | ||
if (mutagens && mutagens[heavenlyStem]) { | ||
result = (_a = mutagens[heavenlyStem]) !== null && _a !== void 0 ? _a : []; | ||
} | ||
else { | ||
result = (_b = data_1.heavenlyStems[heavenlyStem].mutagen) !== null && _b !== void 0 ? _b : []; | ||
} | ||
return result; | ||
}; | ||
/** | ||
@@ -49,3 +62,8 @@ * 用于处理索引,将索引锁定在 0~max 范围内 | ||
var star = (0, i18n_1.kot)(starName); | ||
return (0, i18n_1.t)((_a = data_1.STARS_INFO[star]) === null || _a === void 0 ? void 0 : _a.brightness[(0, exports.fixIndex)(index)]); | ||
var brightness = (0, astro_1.getConfig)().brightness; | ||
var targetBrightness = brightness[star] ? brightness[star] : (_a = data_1.STARS_INFO[star]) === null || _a === void 0 ? void 0 : _a.brightness; | ||
if (!targetBrightness) { | ||
return ''; | ||
} | ||
return (0, i18n_1.t)(targetBrightness[(0, exports.fixIndex)(index)]); | ||
}; | ||
@@ -56,3 +74,4 @@ exports.getBrightness = getBrightness; | ||
var starKey = (0, i18n_1.kot)(starName); | ||
return (0, i18n_1.t)(data_1.MUTAGEN[data_1.heavenlyStems[heavenlyStem].mutagen.indexOf(starKey)]); | ||
var target = getTargetMutagens(heavenlyStem); | ||
return (0, i18n_1.t)(data_1.MUTAGEN[target.indexOf(starKey)]); | ||
}; | ||
@@ -62,3 +81,4 @@ exports.getMutagen = getMutagen; | ||
var heavenlyStem = (0, i18n_1.kot)(heavenlyStemName, 'Heavenly'); | ||
return data_1.heavenlyStems[heavenlyStem].mutagen.map(function (star) { return (0, i18n_1.t)(star); }); | ||
var target = getTargetMutagens(heavenlyStem); | ||
return target.map(function (star) { return (0, i18n_1.t)(star); }); | ||
}; | ||
@@ -65,0 +85,0 @@ exports.getMutagensByHeavenlyStem = getMutagensByHeavenlyStem; |
{ | ||
"name": "iztro", | ||
"version": "2.2.3", | ||
"version": "2.3.0", | ||
"description": "轻量级紫微斗数星盘生成库。可以通过出生年月日获取到紫微斗数星盘信息、生肖、星座等信息。A lightweight kit to astrolabe generator of The Purple Star Astrology (Zi Wei Dou Shu). The Purple Star Astrology(Zi Wei Dou Shu) is a Chinese ancient astrology. You're able to get your horoscope and personality from the astrolabe", | ||
@@ -74,4 +74,4 @@ "main": "lib/index.js", | ||
"i18next": "^23.5.1", | ||
"lunar-lite": "^0.1.1" | ||
"lunar-lite": "^0.1.2" | ||
} | ||
} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
14338
0.87%2039316
-0.61%Updated