Comparing version 2.2.3 to 2.3.0
@@ -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
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
14338
2039316
Updatedlunar-lite@^0.1.2