liuyao 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -95,3 +95,11 @@ node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
95
95
  `--format` 可选 `json`(默认,紧凑)、`pretty-json`(缩进 2 格)、`yaml`、`md`(排盘表格)。卦象字符串支持六位阳数 `112233`、六位单拆重交 `单单拆拆重重`、卦名或全名 `天风姤`。日期用 `--date` 传入,如 `--date=2026-10-31T13:00`(`new Date` 对纯日期按 UTC 零点解析,会固定成辰时、UTC 以西还会退一天,请写全时间)。参数不合法时会打印具体原因和用法并以非 0 退出。
96
96
 
97
97
  `src/lib` 下的 `toJSON`、`toYAML`、`toMarkdown` 即上述三种结构化输出的实现。
98
+
99
+ 与 [obsidian-liuyao](https://github.com/baendlorel/obsidian-liuyao) 等工具配合时,用 `--code-blocks` 一次读出文件里所有 ` ```liuyao ` 代码块(不限于 Obsidian):
100
+
101
+ ```bash
102
+ node parser.skill.mjs --code-blocks=<文件路径>
103
+ ```
104
+
105
+ 输出 `{ 文件路径, 卦象: [{ 行号, 卦象, 时辰? }] }`,代码块支持只写卦象、或「日期 + 卦象」两行两种写法。该参数与 `<卦象字符串>`、`--date`、`--format` 互斥。
package/dist/index.d.mts CHANGED
@@ -264,7 +264,7 @@ declare class 六爻卦 implements 六十四卦 {
264
264
  get 符号(): string;
265
265
  get 五行(): 五行;
266
266
  get 宫(): 八卦名;
267
- get 八宫卦位(): 0 | 6 | 1 | 2 | 3 | 4 | 5 | 7;
267
+ get 八宫卦位(): 0 | 1 | 2 | 3 | 6 | 4 | 5 | 7;
268
268
  /**
269
269
  * 获得变爻卦象
270
270
  * @returns 变爻卦象,如果卦象静则返回它自己
@@ -1,4 +1,4 @@
1
- # 六爻卦象解析技能 `v1.0.0`
1
+ # 六爻卦象解析技能 `v1.0.1`
2
2
 
3
3
  **你是等同于野鹤老人水平的优秀六爻占卜师。本技能包含装挂脚本和解卦指导txt文件,请你按流程指引操作。**
4
4
 
@@ -49,9 +49,33 @@ node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
49
49
  - **日期**:用 `--date=<日期>` 传入占卜的具体时间,交给 `new Date` 直接解析,用于确定月建、日辰,如 `--date=2026-10-31T13:00`。**请把日期和时间写全**:`new Date` 对纯日期 `2026-10-31` 按 UTC 零点解析(不是本地零点),在中国会固定成辰时,在 UTC 以西的时区会退到前一天,日辰和时辰都会错;带时间的 `2026-10-31T13:00` 才按本地时区解析
50
50
  - **输出内容**:爻象信息(阴阳、位置)、六亲配置(父母、兄弟、子孙、妻财、官鬼)、六神配置(青龙、朱雀、勾陈、螣蛇、白虎、玄武)、世应位置、变爻信息(如有动爻)
51
51
 
52
+ ### 读取笔记 / 文件里的卦
53
+
54
+ > **优先使用**:当用户给的是**文件路径或笔记**(例如 Obsidian 笔记、Markdown 文档、导出文本),或让你「看看这篇笔记里的卦」「读一下这个文件」时,**先**用 `--code-blocks` 一次读出文件里所有卦,不要自己逐行读文件、也不要把卦象字符串手动抄出来逐个调用。它比人工抄写更快、更准,且会保留每个卦在文件里的行号和日期。
55
+
56
+ ```bash
57
+ node parser.skill.mjs --code-blocks=<文件路径>
58
+ ```
59
+
60
+ 它扫描整个文件里所有 ` ```liuyao ` 代码块,与其他参数互斥。任何工具写进 Markdown 的这类代码块都能读到,不限于 obsidian-liuyao 插件。
61
+
62
+ 输出是缩进两格的 JSON。`行号` 是该代码块开头 ```liuyao 所在行(从 1 开始),有日期时按该日期排盘并附带 `时辰`和六神;没有日期时该卦不带`时辰`,解卦时需要问用户占卜时间:
63
+
64
+ ```json
65
+ {
66
+ "文件路径": "note.md",
67
+ "卦象": [
68
+ { "行号": 4, "卦象": { "本卦": { "...": "同上文 toJSON 的结构" } } },
69
+ { "行号": 9, "卦象": { "...": "..." }, "时辰": { "年": "丙午", "月": "戊戌", "日": "戊寅", "时": "未" } }
70
+ ]
71
+ }
72
+ ```
73
+
74
+ 文件里没有代码块时 `卦象` 是空数组。若某个块的行数、日期或卦象串不合法,脚本会报出「文件路径 第 N 行」并退出,不会静默跳过。
75
+
52
76
  ## 解卦工作流程
53
77
 
54
- 1. **装卦**:使用parser.skill.mjs将卦象字符串转换为完整的卦象信息(世应、六亲、六神)
78
+ 1. **装卦**:使用parser.skill.mjs将卦象字符串转换为完整的卦象信息(世应、六亲、六神)。若用户提供的是文件或笔记,先用 `--code-blocks` 读出文件里的全部卦,再逐个解
55
79
  2. **定用神**:根据占卜事项确定用神(查看道理篇中的用神确定方法)
56
80
  3. **分析旺衰**:结合月建、日辰分析用神旺衰
57
81
  4. **查特殊格局**:旬空、月破、暗动、反伏、六合、六冲等
@@ -1,4 +1,4 @@
1
- var e=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,42192,53840,119381,46400,54944,44450,38320,84343,18800,42160,46261,27216,27968,109396,11104,38256,21234,18800,25958,54432,59984,28309,23248,11104,100067,37600,116951,51536,54432,120998,46416,22176,107956,9680,37584,53938,43344,46423,27808,46416,86869,19872,42416,83315,21168,43432,59728,27296,44710,43856,19296,43748,42352,21088,62051,55632,23383,22176,38608,19925,19152,42192,54484,53840,54616,46400,46752,103846,38320,18864,43380,42160,45690,27216,27968,44870,43872,38256,19189,18800,25776,29859,59984,27480,23232,43872,38613,37600,51552,55636,54432,55888,30034,22176,43959,9680,37584,51893,43344,46240,47780,44368,21977,19360,42416,86390,21168,43312,31060,27296,44368,23378,19296,42726,42208,53856,60005,54576,23200,30371,38608,19195,19152,42192,118966,53840,54560,56645,46496,22224,21938,18864,42359,42160,43600,111189,27936,44448,84835,37744,18936,18800,25776,92326,59984,27424,108228,43744,37600,53987,51552,54615,54432,55888,23893,22176,42704,21972,21200,43448,43344,46240,46758,44368,21920,43940,42416,21168,45683,26928,29495,27296,44368,84821,19296,42352,21732,53600,59752,54560,55968,92838,22224,19168,43476,42192,53584,62034,54560],t=[31,28,31,30,31,30,31,31,30,31,30,31],n=[`甲`,`乙`,`丙`,`丁`,`戊`,`己`,`庚`,`辛`,`壬`,`癸`],r=[`子`,`丑`,`寅`,`卯`,`辰`,`巳`,`午`,`未`,`申`,`酉`,`戌`,`亥`],i=[`鼠`,`牛`,`虎`,`兔`,`龙`,`蛇`,`马`,`羊`,`猴`,`鸡`,`狗`,`猪`],a=[`小寒`,`大寒`,`立春`,`雨水`,`惊蛰`,`春分`,`清明`,`谷雨`,`立夏`,`小满`,`芒种`,`夏至`,`小暑`,`大暑`,`立秋`,`处暑`,`白露`,`秋分`,`寒露`,`霜降`,`立冬`,`小雪`,`大雪`,`冬至`],o=/* @__PURE__ */ `9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.9778397bd19801ec9210c965cc920e.97b6b97bd19801ec95f8c965cc920f.97bd09801d98082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd197c36c9210c9274c91aa.97b6b97bd19801ec95f8c965cc920e.97bd09801d98082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec95f8c965cc920e.97bcf97c3598082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd07f595b0b6fc920fb0722.9778397bd097c36b0b6fc9210c8dc2.9778397bd19801ec9210c9274c920e.97b6b97bd19801ec95f8c965cc920f.97bd07f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c920e.97b6b97bd19801ec95f8c965cc920f.97bd07f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec9210c965cc920e.97bd07f1487f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c9274c920e.97bcf7f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c91aa.97b6b97bd197c36c9210c9274c920e.97bcf7f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c920e.97b6b7f0e47f531b0723b0b6fb0722.7f0e37f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36b0b70c9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e37f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc9210c8dc2.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0787b0721.7f0e27f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c91aa.97b6b7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c8dc2.977837f0e37f149b0723b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f5307f595b0b0bc920fb0722.7f0e397bd097c35b0b6fc9210c8dc2.977837f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0721.7f0e37f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc9210c8dc2.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0723b06bd.7f07e7f0e37f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f1487f595b0b0bb0b6fb0722.7f0e37f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e37f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0723b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0723b06bd.7f07e7f0e37f14998083b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14898082b0723b02d5.7f07e7f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e36665b66aa89801e9808297c35.665f67f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e36665b66a449801e9808297c35.665f67f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e36665b66a449801e9808297c35.665f67f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e26665b66a449801e9808297c35.665f67f0e37f1489801eb072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722`.split(`.`),s=[`日`,`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`],c=[`初`,`十`,`廿`,`卅`],l=[`正`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`,`冬`,`腊`],u=[`零`,`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`];const d={lunarInfo:e,solarMonth:t,gan:n,zhi:r,animals:i,lunarTerm:a,lTermInfo:o,nStr1:s,nStr2:c,nStr3:l,nStr4:u,lYearDays(t){let n=348,r=e[t-1900];return n+=r&32768?1:0,n+=r&16384?1:0,n+=r&8192?1:0,n+=r&4096?1:0,n+=r&2048?1:0,n+=r&1024?1:0,n+=r&512?1:0,n+=r&256?1:0,n+=r&128?1:0,n+=r&64?1:0,n+=r&32?1:0,n+=r&16?1:0,n+d.leapDays(t)},leapMonth(t){return e[t-1900]&15},leapDays(t){return d.leapMonth(t)?e[t-1900]&65536?30:29:0},monthDays(t,n){return n>12||n<1?-1:e[t-1900]&65536>>n?30:29},getShiChen(e,t){let i=(e+1)/2>=24?0:Math.floor((e+1)/2)%12;return n[(t*2+i)%10]+r[i]},solarDays(e,n){if(n>12||n<1)return-1;let r=n-1;return r===1?e%4==0&&e%100!=0||e%400==0?29:28:t[r]},toGanZhi(e){return n[e%10]+r[e%12]},getTerm(e,t){if(e<1900||e>2100||t<1||t>24)return-1;let n=o[e-1900],r=[parseInt(`0x`+n.substr(0,5)).toString(),parseInt(`0x`+n.substr(5,5)).toString(),parseInt(`0x`+n.substr(10,5)).toString(),parseInt(`0x`+n.substr(15,5)).toString(),parseInt(`0x`+n.substr(20,5)).toString(),parseInt(`0x`+n.substr(25,5)).toString()],i=[r[0].substr(0,1),r[0].substr(1,2),r[0].substr(3,1),r[0].substr(4,2),r[1].substr(0,1),r[1].substr(1,2),r[1].substr(3,1),r[1].substr(4,2),r[2].substr(0,1),r[2].substr(1,2),r[2].substr(3,1),r[2].substr(4,2),r[3].substr(0,1),r[3].substr(1,2),r[3].substr(3,1),r[3].substr(4,2),r[4].substr(0,1),r[4].substr(1,2),r[4].substr(3,1),r[4].substr(4,2),r[5].substr(0,1),r[5].substr(1,2),r[5].substr(3,1),r[5].substr(4,2)];return parseInt(i[t-1])},toChinaYear(e){let t=Math.floor(e/1e3),n=Math.floor(e%1e3/100),r=Math.floor(e%100/10),i=e%10;return u[t]+u[n]+u[r]+u[i]+`年`},toChinaMonth(e){if(e>12||e<1)return-1;let t=l[e-1];return t+=`月`,t},toChinaDay(e){let t=``;switch(e){case 10:t=`初十`;break;case 20:t=`二十`;break;case 30:t=`三十`;break;default:t=c[Math.floor(e/10)],t+=s[e%10]}return t},getAnimal(e,t,n){if(t!==void 0&&n!==void 0){let r=d.getTerm(e,3);(t<2||t===2&&n<r)&&--e}return i[(e-4)%12]},solar2lunar(e,t,n){if(e==null||t==null||n==null){let r=/* @__PURE__ */ new Date;e=r.getFullYear(),t=r.getMonth()+1,n=r.getDate()}if(e=Number(e),t=Number(t),n=Number(n),isNaN(e)||isNaN(t)||isNaN(n)||e<1900||e>2100||e===1900&&t===1&&n<31||t<1||t>12)return-1;let r=d.solarDays(e,t);if(n<1||n>r)return-1;let i=new Date(e,parseInt(t)-1,n),o,c=0;e=i.getFullYear(),t=i.getMonth()+1,n=i.getDate();let l=(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate())-Date.UTC(1900,0,31))/864e5;for(c=0,o=1900;o<2101&&l>0;o++)c=d.lYearDays(o),l-=c;l<0&&(l+=c,o--);let u=o,f=/* @__PURE__ */ new Date,p=!1;f.getFullYear()===e&&f.getMonth()+1===t&&f.getDate()===n&&(p=!0);let m=i.getDay(),h=s[m],g=m===0?7:m,_=u,v=d.leapMonth(u),y=!1;for(o=1;o<13&&l>0;o++)v>0&&o===v+1&&y===!1?(--o,y=!0,c=d.leapDays(_)):c=d.monthDays(_,o),y===!0&&o===v+1&&(y=!1),l-=c;l===0&&v>0&&o===v+1&&(y?y=!1:(y=!0,--o)),l<0&&(l+=c,--o);let b=o,x=l+1,S=t-1,C=d.getTerm(e,3),w=d.toGanZhi(e-4);(t<2||t===2&&n<C)&&(w=d.toGanZhi(e-1-4));let T=d.getTerm(e,t*2-1),E=d.getTerm(e,t*2),D=d.toGanZhi((e-1900)*12+t+11);n>=T&&(D=d.toGanZhi((e-1900)*12+t+12));let O=!1,k=``;T===n&&(O=!0,k=a[t*2-2]),E===n&&(O=!0,k=a[t*2-1]);let A=Date.UTC(e,S,1,0,0,0,0)/864e5+25567+10,j=d.toGanZhi(A+n-1);return{lYear:_,lMonth:b,lDay:x,animal:d.getAnimal(_),yearCn:d.toChinaYear(_),monthCn:(y&&v===b?`闰`:``)+d.toChinaMonth(b),dayCn:d.toChinaDay(x),cYear:e,cMonth:t,cDay:n,gzYear:w,gzMonth:D,gzDay:j,isToday:p,isLeap:y,nWeek:g,ncWeek:`星期`+h,isTerm:O,term:k}},lunar2solar(e,t,n,r){if(e=Number(e),t=Number(t),n=Number(n),r=!!r,isNaN(e)||isNaN(t)||isNaN(n))return-1;let i=d.leapMonth(e);if(r&&i!==t||e===2100&&t===12&&n>1||e===1900&&t===1&&n<31)return-1;let a=d.monthDays(e,t);if(e<1900||e>2100||n>a)return-1;let o=0;for(let t=1900;t<e;t++)o+=d.lYearDays(t);let s=0,c=!1;for(let n=1;n<t;n++)s=d.leapMonth(e),c||s<=n&&s>0&&(o+=d.leapDays(e),c=!0),o+=d.monthDays(e,n);r&&(o+=a);let l=Date.UTC(1900,1,30,0,0,0),u=new Date((o+n-31)*864e5+l),f=u.getUTCFullYear(),p=u.getUTCMonth()+1,m=u.getUTCDate();return d.solar2lunar(f,p,m)},getFestivals(e,t,n){let r=[],i=d.solar2lunar(e,t,n);if(i===-1)return r;let{lMonth:a,lDay:o}=i,s={"1-1":`春节`,"1-15":`元宵节`,"5-5":`端午节`,"7-7":`七夕节`,"8-15":`中秋节`,"9-9":`重阳节`,"12-8":`腊八节`,"12-23":`小年`},c=`${a}-${o}`;return s[c]&&r.push(s[c]),a===1&&o===1&&r.push(`农历新年`),d.customFestivals&&d.customFestivals.forEach(e=>{e.month===a&&e.day===o&&r.push(e.name)}),r},addFestival(e,t,n){d.customFestivals||=[],d.customFestivals.push({name:e,month:t,day:n})},clearFestivals(){d.customFestivals=[]}},f=[`本宫卦`,`一世卦`,`二世卦`,`三世卦`,`四世卦`,`五世卦`,`游魂卦`,`归魂卦`],p=[{二进制表示:`000000`,全名:`坤为地`,符号:`䷁`,五行:`土`,宫:`坤`,八宫卦位:0,卦名:`坤`},{二进制表示:`100000`,全名:`地雷复`,符号:`䷗`,五行:`土`,宫:`坤`,八宫卦位:1,卦名:`复`},{二进制表示:`010000`,全名:`地水师`,符号:`䷆`,五行:`水`,宫:`坎`,八宫卦位:7,卦名:`师`},{二进制表示:`110000`,全名:`地泽临`,符号:`䷒`,五行:`土`,宫:`坤`,八宫卦位:2,卦名:`临`},{二进制表示:`001000`,全名:`地山谦`,符号:`䷎`,五行:`土`,宫:`兑`,八宫卦位:5,卦名:`谦`},{二进制表示:`101000`,全名:`地火明夷`,符号:`䷣`,五行:`水`,宫:`坎`,八宫卦位:6,卦名:`明夷`},{二进制表示:`011000`,全名:`地风升`,符号:`䷭`,五行:`木`,宫:`震`,八宫卦位:4,卦名:`升`},{二进制表示:`111000`,全名:`地天泰`,符号:`䷊`,五行:`土`,宫:`坤`,八宫卦位:3,卦名:`泰`},{二进制表示:`000100`,全名:`雷地豫`,符号:`䷏`,五行:`木`,宫:`震`,八宫卦位:1,卦名:`豫`},{二进制表示:`100100`,全名:`震为雷`,符号:`䷲`,五行:`木`,宫:`震`,八宫卦位:0,卦名:`震`},{二进制表示:`010100`,全名:`雷水解`,符号:`䷧`,五行:`木`,宫:`震`,八宫卦位:2,卦名:`解`},{二进制表示:`110100`,全名:`雷泽归妹`,符号:`䷵`,五行:`金`,宫:`兑`,八宫卦位:7,卦名:`归妹`},{二进制表示:`001100`,全名:`雷山小过`,符号:`䷽`,五行:`金`,宫:`兑`,八宫卦位:6,卦名:`小过`},{二进制表示:`101100`,全名:`雷火丰`,符号:`䷶`,五行:`水`,宫:`坎`,八宫卦位:5,卦名:`丰`},{二进制表示:`011100`,全名:`雷风恒`,符号:`䷟`,五行:`木`,宫:`震`,八宫卦位:3,卦名:`恒`},{二进制表示:`111100`,全名:`雷天大壮`,符号:`䷡`,五行:`土`,宫:`坤`,八宫卦位:4,卦名:`大壮`},{二进制表示:`000010`,全名:`水地比`,符号:`䷇`,五行:`土`,宫:`坤`,八宫卦位:7,卦名:`比`},{二进制表示:`100010`,全名:`水雷屯`,符号:`䷂`,五行:`水`,宫:`坎`,八宫卦位:2,卦名:`屯`},{二进制表示:`010010`,全名:`坎为水`,符号:`䷜`,五行:`水`,宫:`坎`,八宫卦位:0,卦名:`坎`},{二进制表示:`110010`,全名:`水泽节`,符号:`䷻`,五行:`水`,宫:`坎`,八宫卦位:1,卦名:`节`},{二进制表示:`001010`,全名:`水山蹇`,符号:`䷦`,五行:`金`,宫:`兑`,八宫卦位:4,卦名:`蹇`},{二进制表示:`101010`,全名:`水火既济`,符号:`䷾`,五行:`水`,宫:`坎`,八宫卦位:3,卦名:`既济`},{二进制表示:`011010`,全名:`水风井`,符号:`䷯`,五行:`木`,宫:`震`,八宫卦位:5,卦名:`井`},{二进制表示:`111010`,全名:`水天需`,符号:`䷄`,五行:`土`,宫:`坤`,八宫卦位:6,卦名:`需`},{二进制表示:`000110`,全名:`泽地萃`,符号:`䷬`,五行:`金`,宫:`兑`,八宫卦位:2,卦名:`萃`},{二进制表示:`100110`,全名:`泽雷随`,符号:`䷐`,五行:`木`,宫:`震`,八宫卦位:7,卦名:`随`},{二进制表示:`010110`,全名:`泽水困`,符号:`䷮`,五行:`金`,宫:`兑`,八宫卦位:1,卦名:`困`},{二进制表示:`110110`,全名:`兑为泽`,符号:`䷹`,五行:`金`,宫:`兑`,八宫卦位:0,卦名:`兑`},{二进制表示:`001110`,全名:`泽山咸`,符号:`䷞`,五行:`金`,宫:`兑`,八宫卦位:3,卦名:`咸`},{二进制表示:`101110`,全名:`泽火革`,符号:`䷰`,五行:`水`,宫:`坎`,八宫卦位:4,卦名:`革`},{二进制表示:`011110`,全名:`泽风大过`,符号:`䷛`,五行:`木`,宫:`震`,八宫卦位:6,卦名:`大过`},{二进制表示:`111110`,全名:`泽天夬`,符号:`䷪`,五行:`土`,宫:`坤`,八宫卦位:5,卦名:`夬`},{二进制表示:`000001`,全名:`山地剥`,符号:`䷖`,五行:`金`,宫:`乾`,八宫卦位:5,卦名:`剥`},{二进制表示:`100001`,全名:`山雷颐`,符号:`䷚`,五行:`木`,宫:`巽`,八宫卦位:6,卦名:`颐`},{二进制表示:`010001`,全名:`山水蒙`,符号:`䷃`,五行:`火`,宫:`离`,八宫卦位:4,卦名:`蒙`},{二进制表示:`110001`,全名:`山泽损`,符号:`䷨`,五行:`土`,宫:`艮`,八宫卦位:3,卦名:`损`},{二进制表示:`001001`,全名:`艮为山`,符号:`䷳`,五行:`土`,宫:`艮`,八宫卦位:0,卦名:`艮`},{二进制表示:`101001`,全名:`山火贲`,符号:`䷕`,五行:`土`,宫:`艮`,八宫卦位:1,卦名:`贲`},{二进制表示:`011001`,全名:`山风蛊`,符号:`䷑`,五行:`木`,宫:`巽`,八宫卦位:7,卦名:`蛊`},{二进制表示:`111001`,全名:`山天大畜`,符号:`䷙`,五行:`土`,宫:`艮`,八宫卦位:2,卦名:`大畜`},{二进制表示:`000101`,全名:`火地晋`,符号:`䷢`,五行:`金`,宫:`乾`,八宫卦位:6,卦名:`晋`},{二进制表示:`100101`,全名:`火雷噬嗑`,符号:`䷔`,五行:`木`,宫:`巽`,八宫卦位:5,卦名:`噬嗑`},{二进制表示:`010101`,全名:`火水未济`,符号:`䷿`,五行:`火`,宫:`离`,八宫卦位:3,卦名:`未济`},{二进制表示:`110101`,全名:`火泽睽`,符号:`䷥`,五行:`土`,宫:`艮`,八宫卦位:4,卦名:`睽`},{二进制表示:`001101`,全名:`火山旅`,符号:`䷷`,五行:`火`,宫:`离`,八宫卦位:1,卦名:`旅`},{二进制表示:`101101`,全名:`离为火`,符号:`䷝`,五行:`火`,宫:`离`,八宫卦位:0,卦名:`离`},{二进制表示:`011101`,全名:`火风鼎`,符号:`䷱`,五行:`火`,宫:`离`,八宫卦位:2,卦名:`鼎`},{二进制表示:`111101`,全名:`火天大有`,符号:`䷍`,五行:`金`,宫:`乾`,八宫卦位:7,卦名:`大有`},{二进制表示:`000011`,全名:`风地观`,符号:`䷓`,五行:`金`,宫:`乾`,八宫卦位:4,卦名:`观`},{二进制表示:`100011`,全名:`风雷益`,符号:`䷩`,五行:`木`,宫:`巽`,八宫卦位:3,卦名:`益`},{二进制表示:`010011`,全名:`风水涣`,符号:`䷺`,五行:`火`,宫:`离`,八宫卦位:5,卦名:`涣`},{二进制表示:`110011`,全名:`风泽中孚`,符号:`䷼`,五行:`土`,宫:`艮`,八宫卦位:6,卦名:`中孚`},{二进制表示:`001011`,全名:`风山渐`,符号:`䷴`,五行:`土`,宫:`艮`,八宫卦位:7,卦名:`渐`},{二进制表示:`101011`,全名:`风火家人`,符号:`䷤`,五行:`木`,宫:`巽`,八宫卦位:2,卦名:`家人`},{二进制表示:`011011`,全名:`巽为风`,符号:`䷸`,五行:`木`,宫:`巽`,八宫卦位:0,卦名:`巽`},{二进制表示:`111011`,全名:`风天小畜`,符号:`䷈`,五行:`木`,宫:`巽`,八宫卦位:1,卦名:`小畜`},{二进制表示:`000111`,全名:`天地否`,符号:`䷋`,五行:`金`,宫:`乾`,八宫卦位:3,卦名:`否`},{二进制表示:`100111`,全名:`天雷无妄`,符号:`䷘`,五行:`木`,宫:`巽`,八宫卦位:4,卦名:`无妄`},{二进制表示:`010111`,全名:`天水讼`,符号:`䷅`,五行:`火`,宫:`离`,八宫卦位:6,卦名:`讼`},{二进制表示:`110111`,全名:`天泽履`,符号:`䷉`,五行:`土`,宫:`艮`,八宫卦位:5,卦名:`履`},{二进制表示:`001111`,全名:`天山遁`,符号:`䷠`,五行:`金`,宫:`乾`,八宫卦位:2,卦名:`遁`},{二进制表示:`101111`,全名:`天火同人`,符号:`䷌`,五行:`火`,宫:`离`,八宫卦位:7,卦名:`同人`},{二进制表示:`011111`,全名:`天风姤`,符号:`䷫`,五行:`金`,宫:`乾`,八宫卦位:1,卦名:`姤`},{二进制表示:`111111`,全名:`乾为天`,符号:`䷀`,五行:`金`,宫:`乾`,八宫卦位:0,卦名:`乾`}],m=[{卦名:`坤`,二进制表示:`000`,阳数:0,象:`地`,符号:`☷`,内卦地支五行:[`未土`,`巳火`,`卯木`],外卦地支五行:[`丑土`,`亥水`,`酉金`]},{卦名:`震`,二进制表示:`100`,阳数:1,象:`雷`,符号:`☳`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]},{卦名:`坎`,二进制表示:`010`,阳数:1,象:`水`,符号:`☵`,内卦地支五行:[`寅木`,`辰土`,`午火`],外卦地支五行:[`申金`,`戌土`,`子水`]},{卦名:`兑`,二进制表示:`110`,阳数:2,象:`泽`,符号:`☱`,内卦地支五行:[`巳火`,`卯木`,`丑土`],外卦地支五行:[`亥水`,`酉金`,`未土`]},{卦名:`艮`,二进制表示:`001`,阳数:1,象:`山`,符号:`☶`,内卦地支五行:[`辰土`,`午火`,`申金`],外卦地支五行:[`戌土`,`子水`,`寅木`]},{卦名:`离`,二进制表示:`101`,阳数:2,象:`火`,符号:`☲`,内卦地支五行:[`卯木`,`丑土`,`亥水`],外卦地支五行:[`酉金`,`未土`,`巳火`]},{卦名:`巽`,二进制表示:`011`,阳数:2,象:`风`,符号:`☴`,内卦地支五行:[`丑土`,`亥水`,`酉金`],外卦地支五行:[`未土`,`巳火`,`卯木`]},{卦名:`乾`,二进制表示:`111`,阳数:3,象:`天`,符号:`☰`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]}];Object.freeze(f),Object.freeze(p),Object.freeze(m);const h={乾:{inner:`甲`,outer:`壬`},坤:{inner:`乙`,outer:`癸`},兑:{inner:`丁`,outer:`丁`},坎:{inner:`戊`,outer:`戊`},艮:{inner:`丙`,outer:`丙`},离:{inner:`己`,outer:`己`},震:{inner:`庚`,outer:`庚`},巽:{inner:`辛`,outer:`辛`}};function g(e){let t=h[e.内卦.卦名].inner,n=h[e.外卦.卦名].outer;return[t,t,t,n,n,n]}const _=[5,0,1,2,3,4,3,2],v=[2,3,4,5,0,1,0,5];function y(e){return{世:_[e.八宫卦位],应:v[e.八宫卦位]}}function b(e,t,n,r,i,a,o,s,c,l,u){if(e.includes(t))return n;if(e.includes(r))return i;if(e.includes(a))return o;if(e.includes(s))return c;if(e.includes(l))return u;throw Error(`No BranchPhase[${e}] matches phase[${t},${r},${a},${s},${l}]`)}const x={乾:e=>b(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),兑:e=>b(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),坎:e=>b(e,`木`,`子孙`,`水`,`兄弟`,`金`,`父母`,`火`,`妻财`,`土`,`官鬼`),坤:e=>b(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),艮:e=>b(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),离:e=>b(e,`木`,`父母`,`土`,`子孙`,`水`,`官鬼`,`金`,`妻财`,`火`,`兄弟`),震:e=>b(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`),巽:e=>b(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`)};function S(e){let t=x[e.本卦.宫];return[...e.内卦.内卦地支五行.map(t),...e.外卦.外卦地支五行.map(t)]}const C=[`老阴`,`少阳`,`少阴`,`老阳`],w=[1,1,2,2];var T=class e{static 从单拆重交创建(t){let n=`交单拆重`.indexOf(t);return n===-1?null:new e(n)}static 从名称创建(t){let n=C.indexOf(t);return n===-1?null:new e(n)}static 从阳数字符串创建(t){let n=`0123`.indexOf(t);return n===-1?null:new e(n)}static 从八卦字段创建(t){let n=m.find(e=>e.卦名===t||e.阳数===t||e.二进制表示===t||e.符号===t);return n?new e(n.阳数):null}#e;#t;get 阳数(){return this.#e}get 动静状态(){return this.#t}get 阴阳(){return`阴阳阴阳`[this.#e]}get 名称(){return C[this.#e]}get 符号(){return`交单拆重`[this.#e]}constructor(e,t){if(e!==0&&e!==1&&e!==2&&e!==3)throw TypeError(`阳数只能是 0, 1, 2 或 3`);if(t===void 0&&(t=+(e===0||e===3)),t===0&&(e===0||e===3))throw TypeError(`静爻不能是老阴或老阳`);this.#e=e,this.#t=t}是否阳数相等(e){return this.#e===e.#e}是否全同(e){return this.#e===e.#e&&this.#t===e.#t}克隆(){return new e(this.#e,this.#t)}变(){return this.#t===1?new e(w[this.#e],2):this}};const E=[`初爻`,`二爻`,`三爻`,`四爻`,`五爻`,`上爻`],D=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`,`无妄`,`大壮`],O=[`否`,`泰`,`复`,`豫`,`贲`,`旅`,`困`,`节`],k=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`];var A=class e{static 从阳数字符串创建(t){if(t.length!==6)return null;let n=t.split(``).map(T.从阳数字符串创建);return n.every(e=>e!==null)?new e(n):null}static 从单拆重交创建(t){if(t.length!==6)return null;let n=t.split(``).map(T.从单拆重交创建);return n.every(e=>e!==null)?new e(n):null}static 从阳数创建(t){try{return new e(t.map(e=>new T(e)))}catch{return null}}static 从卦名创建(t){let n=p.find(e=>e.卦名===t||e.全名===t||e.全名.slice(2)===t||e.全名.startsWith(t)&&t.length>1);return n?new e(n.二进制表示.split(``).map(e=>new T(e===`1`?1:2))):null}#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(e,t,n){if(e.length!==6||e.some(e=>!(e instanceof T)))throw TypeError(`第一个参数必须是6个爻对象`);if(t===0||t===2){if(e.some(e=>e.阳数===3||e.阳数===0))throw TypeError(`静卦和动已变卦不能有老阳老阴`)}else if(t===1){if(e.every(e=>e.阳数!==3&&e.阳数!==0))throw TypeError(`动未变卦必须有老阳老阴`)}else if(t===void 0)t=+!!e.some(e=>e.动静状态!==0);else throw TypeError(`无效的动静状态`);this.#e=e.map(e=>e.克隆()),this.#n=this.#e.map(e=>e.阴阳===`阳`?`1`:`0`).join(``),this.#t=p.find(e=>e.二进制表示===this.二进制表示),this.#r=t,this.#i=n??this;let r=this.#n.slice(0,3),i=this.#n.slice(3);this.#a=m.find(e=>e.二进制表示===r),this.#o=m.find(e=>e.二进制表示===i);let a=S(this),o=g(this),s=this.#a.内卦地支五行.map((e,t)=>a[t+0]+o[t+0]+e),c=this.#o.外卦地支五行.map((e,t)=>a[t+3]+o[t+3]+e);this.#l=[...s,...c];let l=y(this);this.#u=l.世,this.#d=l.应,D.includes(this.#t.卦名)&&(this.#s=`六冲`),O.includes(this.#t.卦名)&&(this.#s=`六合`),this.#c=k.includes(this.#t.卦名)}get 六爻(){return[...this.#e]}get 阳数(){return this.#e.map(e=>e.阳数)}get 宫位信息(){return`${this.#t.宫}宫(${this.#t.五行})${f[this.#t.八宫卦位]}`}get 动静状态(){return this.#r}get 本卦(){return this.#i}get 六亲干支五行(){return[...this.#l]}get 世爻(){return this.#u}get 应爻(){return this.#d}get 六冲六合(){return this.#s}get 是否为八纯卦(){return this.#c}get 内卦(){return this.#a}get 外卦(){return this.#o}get 二进制表示(){return this.#n}get 卦名(){return this.#t.卦名}get 全名(){return this.#t.全名}get 符号(){return this.#t.符号}get 五行(){return this.#t.五行}get 宫(){return this.#t.宫}get 八宫卦位(){return this.#t.八宫卦位}变(){return this.#r===1?new e(this.#e.map(e=>e.变()),2,this):this}克隆(){return new e(this.#e,this.#r,this.#i===this?void 0:this.#i)}toString(){return this.全名}[Symbol.toPrimitive](){return this.全名}};const j=[{天干:`甲`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`乙`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`丙`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`丁`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`戊`,六神:[`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`]},{天干:`己`,六神:[`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`]},{天干:`庚`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`辛`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`壬`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]},{天干:`癸`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]}];Object.freeze(j);function M(e,t,n){let r={};return r.爻=e.六爻[t].名称,r.装卦=e.六亲干支五行[t],r.是否动爻=e.六爻[t].动静状态!==0,e.世爻===t?r.关系=`世`:e.应爻===t&&(r.关系=`应`),n&&(r.六神=n[t]),r}function N(e,t){let n=e.变();return{本卦:{上爻:M(e,5,t),五爻:M(e,4,t),四爻:M(e,3,t),三爻:M(e,2,t),二爻:M(e,1,t),初爻:M(e,0,t),卦名:e.卦名,宫:e.宫位信息,六冲六合:e.六冲六合??`不是`},变卦:e===n?`无`:{上爻:M(n,5,t),五爻:M(n,4,t),四爻:M(n,3,t),三爻:M(n,2,t),二爻:M(n,1,t),初爻:M(n,0,t),卦名:n.卦名,宫:n.宫位信息,六冲六合:n.六冲六合??`不是`}}}function P(e,t){let n=M(e,5,t),r=M(e,4,t),i=M(e,3,t),a=M(e,2,t),o=M(e,1,t),s=M(e,0,t);return`${e.动静状态===2?`变`:`本`}卦:
1
+ import{readFileSync as e}from"node:fs";var t=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,42192,53840,119381,46400,54944,44450,38320,84343,18800,42160,46261,27216,27968,109396,11104,38256,21234,18800,25958,54432,59984,28309,23248,11104,100067,37600,116951,51536,54432,120998,46416,22176,107956,9680,37584,53938,43344,46423,27808,46416,86869,19872,42416,83315,21168,43432,59728,27296,44710,43856,19296,43748,42352,21088,62051,55632,23383,22176,38608,19925,19152,42192,54484,53840,54616,46400,46752,103846,38320,18864,43380,42160,45690,27216,27968,44870,43872,38256,19189,18800,25776,29859,59984,27480,23232,43872,38613,37600,51552,55636,54432,55888,30034,22176,43959,9680,37584,51893,43344,46240,47780,44368,21977,19360,42416,86390,21168,43312,31060,27296,44368,23378,19296,42726,42208,53856,60005,54576,23200,30371,38608,19195,19152,42192,118966,53840,54560,56645,46496,22224,21938,18864,42359,42160,43600,111189,27936,44448,84835,37744,18936,18800,25776,92326,59984,27424,108228,43744,37600,53987,51552,54615,54432,55888,23893,22176,42704,21972,21200,43448,43344,46240,46758,44368,21920,43940,42416,21168,45683,26928,29495,27296,44368,84821,19296,42352,21732,53600,59752,54560,55968,92838,22224,19168,43476,42192,53584,62034,54560],n=[31,28,31,30,31,30,31,31,30,31,30,31],r=[`甲`,`乙`,`丙`,`丁`,`戊`,`己`,`庚`,`辛`,`壬`,`癸`],i=[`子`,`丑`,`寅`,`卯`,`辰`,`巳`,`午`,`未`,`申`,`酉`,`戌`,`亥`],a=[`鼠`,`牛`,`虎`,`兔`,`龙`,`蛇`,`马`,`羊`,`猴`,`鸡`,`狗`,`猪`],o=[`小寒`,`大寒`,`立春`,`雨水`,`惊蛰`,`春分`,`清明`,`谷雨`,`立夏`,`小满`,`芒种`,`夏至`,`小暑`,`大暑`,`立秋`,`处暑`,`白露`,`秋分`,`寒露`,`霜降`,`立冬`,`小雪`,`大雪`,`冬至`],s=/* @__PURE__ */ `9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd0b06bdb0722c965ce1cfcc920f.b027097bd097c36b0b6fc9274c91aa.9778397bd19801ec9210c965cc920e.97b6b97bd19801ec95f8c965cc920f.97bd09801d98082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd197c36c9210c9274c91aa.97b6b97bd19801ec95f8c965cc920e.97bd09801d98082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec95f8c965cc920e.97bcf97c3598082c95f8e1cfcc920f.97bd097bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c3598082c95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf97c359801ec95f8c965cc920f.97bd097bd07f595b0b6fc920fb0722.9778397bd097c36b0b6fc9210c8dc2.9778397bd19801ec9210c9274c920e.97b6b97bd19801ec95f8c965cc920f.97bd07f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c920e.97b6b97bd19801ec95f8c965cc920f.97bd07f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c91aa.97b6b97bd19801ec9210c965cc920e.97bd07f1487f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c965cc920e.97bcf7f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b97bd19801ec9210c9274c920e.97bcf7f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c91aa.97b6b97bd197c36c9210c9274c920e.97bcf7f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c8dc2.9778397bd097c36c9210c9274c920e.97b6b7f0e47f531b0723b0b6fb0722.7f0e37f5307f595b0b0bc920fb0722.7f0e397bd097c36b0b6fc9210c8dc2.9778397bd097c36b0b70c9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e37f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc9210c8dc2.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9274c91aa.97b6b7f0e47f531b0723b0787b0721.7f0e27f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c91aa.97b6b7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.9778397bd097c36b0b6fc9210c8dc2.977837f0e37f149b0723b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f5307f595b0b0bc920fb0722.7f0e397bd097c35b0b6fc9210c8dc2.977837f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0721.7f0e37f1487f595b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc9210c8dc2.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd097c35b0b6fc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0787b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0b0bb0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14998082b0723b06bd.7f07e7f0e37f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e397bd07f595b0b0bc920fb0722.977837f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f1487f595b0b0bb0b6fb0722.7f0e37f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e37f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e37f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f1487f531b0b0bb0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0723b06bd.7f07e7f0e47f149b0723b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14998082b0723b06bd.7f07e7f0e37f14998083b0787b0721.7f0e27f0e47f531b0723b0b6fb0722.7f0e37f0e366aa89801eb072297c35.7ec967f0e37f14898082b0723b02d5.7f07e7f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e36665b66aa89801e9808297c35.665f67f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b0721.7f07e7f0e47f531b0723b0b6fb0722.7f0e36665b66a449801e9808297c35.665f67f0e37f14898082b0723b02d5.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e36665b66a449801e9808297c35.665f67f0e37f14898082b072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e26665b66a449801e9808297c35.665f67f0e37f1489801eb072297c35.7ec967f0e37f14998082b0787b06bd.7f07e7f0e47f531b0723b0b6fb0721.7f0e27f1487f531b0b0bb0b6fb0722`.split(`.`),c=[`日`,`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`],l=[`初`,`十`,`廿`,`卅`],u=[`正`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`,`冬`,`腊`],d=[`零`,`一`,`二`,`三`,`四`,`五`,`六`,`七`,`八`,`九`,`十`];const f={lunarInfo:t,solarMonth:n,gan:r,zhi:i,animals:a,lunarTerm:o,lTermInfo:s,nStr1:c,nStr2:l,nStr3:u,nStr4:d,lYearDays(e){let n=348,r=t[e-1900];return n+=r&32768?1:0,n+=r&16384?1:0,n+=r&8192?1:0,n+=r&4096?1:0,n+=r&2048?1:0,n+=r&1024?1:0,n+=r&512?1:0,n+=r&256?1:0,n+=r&128?1:0,n+=r&64?1:0,n+=r&32?1:0,n+=r&16?1:0,n+f.leapDays(e)},leapMonth(e){return t[e-1900]&15},leapDays(e){return f.leapMonth(e)?t[e-1900]&65536?30:29:0},monthDays(e,n){return n>12||n<1?-1:t[e-1900]&65536>>n?30:29},getShiChen(e,t){let n=(e+1)/2>=24?0:Math.floor((e+1)/2)%12;return r[(t*2+n)%10]+i[n]},solarDays(e,t){if(t>12||t<1)return-1;let r=t-1;return r===1?e%4==0&&e%100!=0||e%400==0?29:28:n[r]},toGanZhi(e){return r[e%10]+i[e%12]},getTerm(e,t){if(e<1900||e>2100||t<1||t>24)return-1;let n=s[e-1900],r=[parseInt(`0x`+n.substr(0,5)).toString(),parseInt(`0x`+n.substr(5,5)).toString(),parseInt(`0x`+n.substr(10,5)).toString(),parseInt(`0x`+n.substr(15,5)).toString(),parseInt(`0x`+n.substr(20,5)).toString(),parseInt(`0x`+n.substr(25,5)).toString()],i=[r[0].substr(0,1),r[0].substr(1,2),r[0].substr(3,1),r[0].substr(4,2),r[1].substr(0,1),r[1].substr(1,2),r[1].substr(3,1),r[1].substr(4,2),r[2].substr(0,1),r[2].substr(1,2),r[2].substr(3,1),r[2].substr(4,2),r[3].substr(0,1),r[3].substr(1,2),r[3].substr(3,1),r[3].substr(4,2),r[4].substr(0,1),r[4].substr(1,2),r[4].substr(3,1),r[4].substr(4,2),r[5].substr(0,1),r[5].substr(1,2),r[5].substr(3,1),r[5].substr(4,2)];return parseInt(i[t-1])},toChinaYear(e){let t=Math.floor(e/1e3),n=Math.floor(e%1e3/100),r=Math.floor(e%100/10),i=e%10;return d[t]+d[n]+d[r]+d[i]+`年`},toChinaMonth(e){if(e>12||e<1)return-1;let t=u[e-1];return t+=`月`,t},toChinaDay(e){let t=``;switch(e){case 10:t=`初十`;break;case 20:t=`二十`;break;case 30:t=`三十`;break;default:t=l[Math.floor(e/10)],t+=c[e%10]}return t},getAnimal(e,t,n){if(t!==void 0&&n!==void 0){let r=f.getTerm(e,3);(t<2||t===2&&n<r)&&--e}return a[(e-4)%12]},solar2lunar(e,t,n){if(e==null||t==null||n==null){let r=/* @__PURE__ */ new Date;e=r.getFullYear(),t=r.getMonth()+1,n=r.getDate()}if(e=Number(e),t=Number(t),n=Number(n),isNaN(e)||isNaN(t)||isNaN(n)||e<1900||e>2100||e===1900&&t===1&&n<31||t<1||t>12)return-1;let r=f.solarDays(e,t);if(n<1||n>r)return-1;let i=new Date(e,parseInt(t)-1,n),a,s=0;e=i.getFullYear(),t=i.getMonth()+1,n=i.getDate();let l=(Date.UTC(i.getFullYear(),i.getMonth(),i.getDate())-Date.UTC(1900,0,31))/864e5;for(s=0,a=1900;a<2101&&l>0;a++)s=f.lYearDays(a),l-=s;l<0&&(l+=s,a--);let u=a,d=/* @__PURE__ */ new Date,p=!1;d.getFullYear()===e&&d.getMonth()+1===t&&d.getDate()===n&&(p=!0);let m=i.getDay(),h=c[m],g=m===0?7:m,_=u,v=f.leapMonth(u),y=!1;for(a=1;a<13&&l>0;a++)v>0&&a===v+1&&y===!1?(--a,y=!0,s=f.leapDays(_)):s=f.monthDays(_,a),y===!0&&a===v+1&&(y=!1),l-=s;l===0&&v>0&&a===v+1&&(y?y=!1:(y=!0,--a)),l<0&&(l+=s,--a);let b=a,x=l+1,S=t-1,C=f.getTerm(e,3),w=f.toGanZhi(e-4);(t<2||t===2&&n<C)&&(w=f.toGanZhi(e-1-4));let T=f.getTerm(e,t*2-1),E=f.getTerm(e,t*2),D=f.toGanZhi((e-1900)*12+t+11);n>=T&&(D=f.toGanZhi((e-1900)*12+t+12));let O=!1,k=``;T===n&&(O=!0,k=o[t*2-2]),E===n&&(O=!0,k=o[t*2-1]);let A=Date.UTC(e,S,1,0,0,0,0)/864e5+25567+10,j=f.toGanZhi(A+n-1);return{lYear:_,lMonth:b,lDay:x,animal:f.getAnimal(_),yearCn:f.toChinaYear(_),monthCn:(y&&v===b?`闰`:``)+f.toChinaMonth(b),dayCn:f.toChinaDay(x),cYear:e,cMonth:t,cDay:n,gzYear:w,gzMonth:D,gzDay:j,isToday:p,isLeap:y,nWeek:g,ncWeek:`星期`+h,isTerm:O,term:k}},lunar2solar(e,t,n,r){if(e=Number(e),t=Number(t),n=Number(n),r=!!r,isNaN(e)||isNaN(t)||isNaN(n))return-1;let i=f.leapMonth(e);if(r&&i!==t||e===2100&&t===12&&n>1||e===1900&&t===1&&n<31)return-1;let a=f.monthDays(e,t);if(e<1900||e>2100||n>a)return-1;let o=0;for(let t=1900;t<e;t++)o+=f.lYearDays(t);let s=0,c=!1;for(let n=1;n<t;n++)s=f.leapMonth(e),c||s<=n&&s>0&&(o+=f.leapDays(e),c=!0),o+=f.monthDays(e,n);r&&(o+=a);let l=Date.UTC(1900,1,30,0,0,0),u=new Date((o+n-31)*864e5+l),d=u.getUTCFullYear(),p=u.getUTCMonth()+1,m=u.getUTCDate();return f.solar2lunar(d,p,m)},getFestivals(e,t,n){let r=[],i=f.solar2lunar(e,t,n);if(i===-1)return r;let{lMonth:a,lDay:o}=i,s={"1-1":`春节`,"1-15":`元宵节`,"5-5":`端午节`,"7-7":`七夕节`,"8-15":`中秋节`,"9-9":`重阳节`,"12-8":`腊八节`,"12-23":`小年`},c=`${a}-${o}`;return s[c]&&r.push(s[c]),a===1&&o===1&&r.push(`农历新年`),f.customFestivals&&f.customFestivals.forEach(e=>{e.month===a&&e.day===o&&r.push(e.name)}),r},addFestival(e,t,n){f.customFestivals||=[],f.customFestivals.push({name:e,month:t,day:n})},clearFestivals(){f.customFestivals=[]}},p=[`本宫卦`,`一世卦`,`二世卦`,`三世卦`,`四世卦`,`五世卦`,`游魂卦`,`归魂卦`],m=[{二进制表示:`000000`,全名:`坤为地`,符号:`䷁`,五行:`土`,宫:`坤`,八宫卦位:0,卦名:`坤`},{二进制表示:`100000`,全名:`地雷复`,符号:`䷗`,五行:`土`,宫:`坤`,八宫卦位:1,卦名:`复`},{二进制表示:`010000`,全名:`地水师`,符号:`䷆`,五行:`水`,宫:`坎`,八宫卦位:7,卦名:`师`},{二进制表示:`110000`,全名:`地泽临`,符号:`䷒`,五行:`土`,宫:`坤`,八宫卦位:2,卦名:`临`},{二进制表示:`001000`,全名:`地山谦`,符号:`䷎`,五行:`土`,宫:`兑`,八宫卦位:5,卦名:`谦`},{二进制表示:`101000`,全名:`地火明夷`,符号:`䷣`,五行:`水`,宫:`坎`,八宫卦位:6,卦名:`明夷`},{二进制表示:`011000`,全名:`地风升`,符号:`䷭`,五行:`木`,宫:`震`,八宫卦位:4,卦名:`升`},{二进制表示:`111000`,全名:`地天泰`,符号:`䷊`,五行:`土`,宫:`坤`,八宫卦位:3,卦名:`泰`},{二进制表示:`000100`,全名:`雷地豫`,符号:`䷏`,五行:`木`,宫:`震`,八宫卦位:1,卦名:`豫`},{二进制表示:`100100`,全名:`震为雷`,符号:`䷲`,五行:`木`,宫:`震`,八宫卦位:0,卦名:`震`},{二进制表示:`010100`,全名:`雷水解`,符号:`䷧`,五行:`木`,宫:`震`,八宫卦位:2,卦名:`解`},{二进制表示:`110100`,全名:`雷泽归妹`,符号:`䷵`,五行:`金`,宫:`兑`,八宫卦位:7,卦名:`归妹`},{二进制表示:`001100`,全名:`雷山小过`,符号:`䷽`,五行:`金`,宫:`兑`,八宫卦位:6,卦名:`小过`},{二进制表示:`101100`,全名:`雷火丰`,符号:`䷶`,五行:`水`,宫:`坎`,八宫卦位:5,卦名:`丰`},{二进制表示:`011100`,全名:`雷风恒`,符号:`䷟`,五行:`木`,宫:`震`,八宫卦位:3,卦名:`恒`},{二进制表示:`111100`,全名:`雷天大壮`,符号:`䷡`,五行:`土`,宫:`坤`,八宫卦位:4,卦名:`大壮`},{二进制表示:`000010`,全名:`水地比`,符号:`䷇`,五行:`土`,宫:`坤`,八宫卦位:7,卦名:`比`},{二进制表示:`100010`,全名:`水雷屯`,符号:`䷂`,五行:`水`,宫:`坎`,八宫卦位:2,卦名:`屯`},{二进制表示:`010010`,全名:`坎为水`,符号:`䷜`,五行:`水`,宫:`坎`,八宫卦位:0,卦名:`坎`},{二进制表示:`110010`,全名:`水泽节`,符号:`䷻`,五行:`水`,宫:`坎`,八宫卦位:1,卦名:`节`},{二进制表示:`001010`,全名:`水山蹇`,符号:`䷦`,五行:`金`,宫:`兑`,八宫卦位:4,卦名:`蹇`},{二进制表示:`101010`,全名:`水火既济`,符号:`䷾`,五行:`水`,宫:`坎`,八宫卦位:3,卦名:`既济`},{二进制表示:`011010`,全名:`水风井`,符号:`䷯`,五行:`木`,宫:`震`,八宫卦位:5,卦名:`井`},{二进制表示:`111010`,全名:`水天需`,符号:`䷄`,五行:`土`,宫:`坤`,八宫卦位:6,卦名:`需`},{二进制表示:`000110`,全名:`泽地萃`,符号:`䷬`,五行:`金`,宫:`兑`,八宫卦位:2,卦名:`萃`},{二进制表示:`100110`,全名:`泽雷随`,符号:`䷐`,五行:`木`,宫:`震`,八宫卦位:7,卦名:`随`},{二进制表示:`010110`,全名:`泽水困`,符号:`䷮`,五行:`金`,宫:`兑`,八宫卦位:1,卦名:`困`},{二进制表示:`110110`,全名:`兑为泽`,符号:`䷹`,五行:`金`,宫:`兑`,八宫卦位:0,卦名:`兑`},{二进制表示:`001110`,全名:`泽山咸`,符号:`䷞`,五行:`金`,宫:`兑`,八宫卦位:3,卦名:`咸`},{二进制表示:`101110`,全名:`泽火革`,符号:`䷰`,五行:`水`,宫:`坎`,八宫卦位:4,卦名:`革`},{二进制表示:`011110`,全名:`泽风大过`,符号:`䷛`,五行:`木`,宫:`震`,八宫卦位:6,卦名:`大过`},{二进制表示:`111110`,全名:`泽天夬`,符号:`䷪`,五行:`土`,宫:`坤`,八宫卦位:5,卦名:`夬`},{二进制表示:`000001`,全名:`山地剥`,符号:`䷖`,五行:`金`,宫:`乾`,八宫卦位:5,卦名:`剥`},{二进制表示:`100001`,全名:`山雷颐`,符号:`䷚`,五行:`木`,宫:`巽`,八宫卦位:6,卦名:`颐`},{二进制表示:`010001`,全名:`山水蒙`,符号:`䷃`,五行:`火`,宫:`离`,八宫卦位:4,卦名:`蒙`},{二进制表示:`110001`,全名:`山泽损`,符号:`䷨`,五行:`土`,宫:`艮`,八宫卦位:3,卦名:`损`},{二进制表示:`001001`,全名:`艮为山`,符号:`䷳`,五行:`土`,宫:`艮`,八宫卦位:0,卦名:`艮`},{二进制表示:`101001`,全名:`山火贲`,符号:`䷕`,五行:`土`,宫:`艮`,八宫卦位:1,卦名:`贲`},{二进制表示:`011001`,全名:`山风蛊`,符号:`䷑`,五行:`木`,宫:`巽`,八宫卦位:7,卦名:`蛊`},{二进制表示:`111001`,全名:`山天大畜`,符号:`䷙`,五行:`土`,宫:`艮`,八宫卦位:2,卦名:`大畜`},{二进制表示:`000101`,全名:`火地晋`,符号:`䷢`,五行:`金`,宫:`乾`,八宫卦位:6,卦名:`晋`},{二进制表示:`100101`,全名:`火雷噬嗑`,符号:`䷔`,五行:`木`,宫:`巽`,八宫卦位:5,卦名:`噬嗑`},{二进制表示:`010101`,全名:`火水未济`,符号:`䷿`,五行:`火`,宫:`离`,八宫卦位:3,卦名:`未济`},{二进制表示:`110101`,全名:`火泽睽`,符号:`䷥`,五行:`土`,宫:`艮`,八宫卦位:4,卦名:`睽`},{二进制表示:`001101`,全名:`火山旅`,符号:`䷷`,五行:`火`,宫:`离`,八宫卦位:1,卦名:`旅`},{二进制表示:`101101`,全名:`离为火`,符号:`䷝`,五行:`火`,宫:`离`,八宫卦位:0,卦名:`离`},{二进制表示:`011101`,全名:`火风鼎`,符号:`䷱`,五行:`火`,宫:`离`,八宫卦位:2,卦名:`鼎`},{二进制表示:`111101`,全名:`火天大有`,符号:`䷍`,五行:`金`,宫:`乾`,八宫卦位:7,卦名:`大有`},{二进制表示:`000011`,全名:`风地观`,符号:`䷓`,五行:`金`,宫:`乾`,八宫卦位:4,卦名:`观`},{二进制表示:`100011`,全名:`风雷益`,符号:`䷩`,五行:`木`,宫:`巽`,八宫卦位:3,卦名:`益`},{二进制表示:`010011`,全名:`风水涣`,符号:`䷺`,五行:`火`,宫:`离`,八宫卦位:5,卦名:`涣`},{二进制表示:`110011`,全名:`风泽中孚`,符号:`䷼`,五行:`土`,宫:`艮`,八宫卦位:6,卦名:`中孚`},{二进制表示:`001011`,全名:`风山渐`,符号:`䷴`,五行:`土`,宫:`艮`,八宫卦位:7,卦名:`渐`},{二进制表示:`101011`,全名:`风火家人`,符号:`䷤`,五行:`木`,宫:`巽`,八宫卦位:2,卦名:`家人`},{二进制表示:`011011`,全名:`巽为风`,符号:`䷸`,五行:`木`,宫:`巽`,八宫卦位:0,卦名:`巽`},{二进制表示:`111011`,全名:`风天小畜`,符号:`䷈`,五行:`木`,宫:`巽`,八宫卦位:1,卦名:`小畜`},{二进制表示:`000111`,全名:`天地否`,符号:`䷋`,五行:`金`,宫:`乾`,八宫卦位:3,卦名:`否`},{二进制表示:`100111`,全名:`天雷无妄`,符号:`䷘`,五行:`木`,宫:`巽`,八宫卦位:4,卦名:`无妄`},{二进制表示:`010111`,全名:`天水讼`,符号:`䷅`,五行:`火`,宫:`离`,八宫卦位:6,卦名:`讼`},{二进制表示:`110111`,全名:`天泽履`,符号:`䷉`,五行:`土`,宫:`艮`,八宫卦位:5,卦名:`履`},{二进制表示:`001111`,全名:`天山遁`,符号:`䷠`,五行:`金`,宫:`乾`,八宫卦位:2,卦名:`遁`},{二进制表示:`101111`,全名:`天火同人`,符号:`䷌`,五行:`火`,宫:`离`,八宫卦位:7,卦名:`同人`},{二进制表示:`011111`,全名:`天风姤`,符号:`䷫`,五行:`金`,宫:`乾`,八宫卦位:1,卦名:`姤`},{二进制表示:`111111`,全名:`乾为天`,符号:`䷀`,五行:`金`,宫:`乾`,八宫卦位:0,卦名:`乾`}],h=[{卦名:`坤`,二进制表示:`000`,阳数:0,象:`地`,符号:`☷`,内卦地支五行:[`未土`,`巳火`,`卯木`],外卦地支五行:[`丑土`,`亥水`,`酉金`]},{卦名:`震`,二进制表示:`100`,阳数:1,象:`雷`,符号:`☳`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]},{卦名:`坎`,二进制表示:`010`,阳数:1,象:`水`,符号:`☵`,内卦地支五行:[`寅木`,`辰土`,`午火`],外卦地支五行:[`申金`,`戌土`,`子水`]},{卦名:`兑`,二进制表示:`110`,阳数:2,象:`泽`,符号:`☱`,内卦地支五行:[`巳火`,`卯木`,`丑土`],外卦地支五行:[`亥水`,`酉金`,`未土`]},{卦名:`艮`,二进制表示:`001`,阳数:1,象:`山`,符号:`☶`,内卦地支五行:[`辰土`,`午火`,`申金`],外卦地支五行:[`戌土`,`子水`,`寅木`]},{卦名:`离`,二进制表示:`101`,阳数:2,象:`火`,符号:`☲`,内卦地支五行:[`卯木`,`丑土`,`亥水`],外卦地支五行:[`酉金`,`未土`,`巳火`]},{卦名:`巽`,二进制表示:`011`,阳数:2,象:`风`,符号:`☴`,内卦地支五行:[`丑土`,`亥水`,`酉金`],外卦地支五行:[`未土`,`巳火`,`卯木`]},{卦名:`乾`,二进制表示:`111`,阳数:3,象:`天`,符号:`☰`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]}];Object.freeze(p),Object.freeze(m),Object.freeze(h);const g={乾:{inner:`甲`,outer:`壬`},坤:{inner:`乙`,outer:`癸`},兑:{inner:`丁`,outer:`丁`},坎:{inner:`戊`,outer:`戊`},艮:{inner:`丙`,outer:`丙`},离:{inner:`己`,outer:`己`},震:{inner:`庚`,outer:`庚`},巽:{inner:`辛`,outer:`辛`}};function _(e){let t=g[e.内卦.卦名].inner,n=g[e.外卦.卦名].outer;return[t,t,t,n,n,n]}const v=[5,0,1,2,3,4,3,2],y=[2,3,4,5,0,1,0,5];function b(e){return{世:v[e.八宫卦位],应:y[e.八宫卦位]}}function x(e,t,n,r,i,a,o,s,c,l,u){if(e.includes(t))return n;if(e.includes(r))return i;if(e.includes(a))return o;if(e.includes(s))return c;if(e.includes(l))return u;throw Error(`No BranchPhase[${e}] matches phase[${t},${r},${a},${s},${l}]`)}const S={乾:e=>x(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),兑:e=>x(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),坎:e=>x(e,`木`,`子孙`,`水`,`兄弟`,`金`,`父母`,`火`,`妻财`,`土`,`官鬼`),坤:e=>x(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),艮:e=>x(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),离:e=>x(e,`木`,`父母`,`土`,`子孙`,`水`,`官鬼`,`金`,`妻财`,`火`,`兄弟`),震:e=>x(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`),巽:e=>x(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`)};function C(e){let t=S[e.本卦.宫];return[...e.内卦.内卦地支五行.map(t),...e.外卦.外卦地支五行.map(t)]}const w=[`老阴`,`少阳`,`少阴`,`老阳`],T=[1,1,2,2];var E=class e{static 从单拆重交创建(t){let n=`交单拆重`.indexOf(t);return n===-1?null:new e(n)}static 从名称创建(t){let n=w.indexOf(t);return n===-1?null:new e(n)}static 从阳数字符串创建(t){let n=`0123`.indexOf(t);return n===-1?null:new e(n)}static 从八卦字段创建(t){let n=h.find(e=>e.卦名===t||e.阳数===t||e.二进制表示===t||e.符号===t);return n?new e(n.阳数):null}#e;#t;get 阳数(){return this.#e}get 动静状态(){return this.#t}get 阴阳(){return`阴阳阴阳`[this.#e]}get 名称(){return w[this.#e]}get 符号(){return`交单拆重`[this.#e]}constructor(e,t){if(e!==0&&e!==1&&e!==2&&e!==3)throw TypeError(`阳数只能是 0, 1, 2 或 3`);if(t===void 0&&(t=+(e===0||e===3)),t===0&&(e===0||e===3))throw TypeError(`静爻不能是老阴或老阳`);this.#e=e,this.#t=t}是否阳数相等(e){return this.#e===e.#e}是否全同(e){return this.#e===e.#e&&this.#t===e.#t}克隆(){return new e(this.#e,this.#t)}变(){return this.#t===1?new e(T[this.#e],2):this}};const D=[`初爻`,`二爻`,`三爻`,`四爻`,`五爻`,`上爻`],O=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`,`无妄`,`大壮`],k=[`否`,`泰`,`复`,`豫`,`贲`,`旅`,`困`,`节`],A=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`];var j=class e{static 从阳数字符串创建(t){if(t.length!==6)return null;let n=t.split(``).map(E.从阳数字符串创建);return n.every(e=>e!==null)?new e(n):null}static 从单拆重交创建(t){if(t.length!==6)return null;let n=t.split(``).map(E.从单拆重交创建);return n.every(e=>e!==null)?new e(n):null}static 从阳数创建(t){try{return new e(t.map(e=>new E(e)))}catch{return null}}static 从卦名创建(t){let n=m.find(e=>e.卦名===t||e.全名===t||e.全名.slice(2)===t||e.全名.startsWith(t)&&t.length>1);return n?new e(n.二进制表示.split(``).map(e=>new E(e===`1`?1:2))):null}#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(e,t,n){if(e.length!==6||e.some(e=>!(e instanceof E)))throw TypeError(`第一个参数必须是6个爻对象`);if(t===0||t===2){if(e.some(e=>e.阳数===3||e.阳数===0))throw TypeError(`静卦和动已变卦不能有老阳老阴`)}else if(t===1){if(e.every(e=>e.阳数!==3&&e.阳数!==0))throw TypeError(`动未变卦必须有老阳老阴`)}else if(t===void 0)t=+!!e.some(e=>e.动静状态!==0);else throw TypeError(`无效的动静状态`);this.#e=e.map(e=>e.克隆()),this.#n=this.#e.map(e=>e.阴阳===`阳`?`1`:`0`).join(``),this.#t=m.find(e=>e.二进制表示===this.二进制表示),this.#r=t,this.#i=n??this;let r=this.#n.slice(0,3),i=this.#n.slice(3);this.#a=h.find(e=>e.二进制表示===r),this.#o=h.find(e=>e.二进制表示===i);let a=C(this),o=_(this),s=this.#a.内卦地支五行.map((e,t)=>a[t+0]+o[t+0]+e),c=this.#o.外卦地支五行.map((e,t)=>a[t+3]+o[t+3]+e);this.#l=[...s,...c];let l=b(this);this.#u=l.世,this.#d=l.应,O.includes(this.#t.卦名)&&(this.#s=`六冲`),k.includes(this.#t.卦名)&&(this.#s=`六合`),this.#c=A.includes(this.#t.卦名)}get 六爻(){return[...this.#e]}get 阳数(){return this.#e.map(e=>e.阳数)}get 宫位信息(){return`${this.#t.宫}宫(${this.#t.五行})${p[this.#t.八宫卦位]}`}get 动静状态(){return this.#r}get 本卦(){return this.#i}get 六亲干支五行(){return[...this.#l]}get 世爻(){return this.#u}get 应爻(){return this.#d}get 六冲六合(){return this.#s}get 是否为八纯卦(){return this.#c}get 内卦(){return this.#a}get 外卦(){return this.#o}get 二进制表示(){return this.#n}get 卦名(){return this.#t.卦名}get 全名(){return this.#t.全名}get 符号(){return this.#t.符号}get 五行(){return this.#t.五行}get 宫(){return this.#t.宫}get 八宫卦位(){return this.#t.八宫卦位}变(){return this.#r===1?new e(this.#e.map(e=>e.变()),2,this):this}克隆(){return new e(this.#e,this.#r,this.#i===this?void 0:this.#i)}toString(){return this.全名}[Symbol.toPrimitive](){return this.全名}};const M=[{天干:`甲`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`乙`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`丙`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`丁`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`戊`,六神:[`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`]},{天干:`己`,六神:[`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`]},{天干:`庚`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`辛`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`壬`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]},{天干:`癸`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]}];Object.freeze(M);function N(e,t,n){let r={};return r.爻=e.六爻[t].名称,r.装卦=e.六亲干支五行[t],r.是否动爻=e.六爻[t].动静状态!==0,e.世爻===t?r.关系=`世`:e.应爻===t&&(r.关系=`应`),n&&(r.六神=n[t]),r}function P(e,t){let n=e.变();return{本卦:{上爻:N(e,5,t),五爻:N(e,4,t),四爻:N(e,3,t),三爻:N(e,2,t),二爻:N(e,1,t),初爻:N(e,0,t),卦名:e.卦名,宫:e.宫位信息,六冲六合:e.六冲六合??`不是`},变卦:e===n?`无`:{上爻:N(n,5,t),五爻:N(n,4,t),四爻:N(n,3,t),三爻:N(n,2,t),二爻:N(n,1,t),初爻:N(n,0,t),卦名:n.卦名,宫:n.宫位信息,六冲六合:n.六冲六合??`不是`}}}function F(e,t){let n=N(e,5,t),r=N(e,4,t),i=N(e,3,t),a=N(e,2,t),o=N(e,1,t),s=N(e,0,t);return`${e.动静状态===2?`变`:`本`}卦:
2
2
  卦名: ${e.卦名}
3
3
  宫: ${e.宫位信息}
4
4
  六冲六合: ${e.六冲六合??`不是`}
@@ -37,11 +37,14 @@ var e=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,4
37
37
  装卦: ${s.装卦}
38
38
  关系: ${s.关系}
39
39
  六神: ${s.六神}
40
- 是否动爻: ${s.是否动爻}`}function F(e,t){let n=e.变();return(n===e?P(e,t):`${P(e,t)}\n${P(n,t)}`).split(`
40
+ 是否动爻: ${s.是否动爻}`}function I(e,t){let n=e.变();return(n===e?F(e,t):`${F(e,t)}\n${F(n,t)}`).split(`
41
41
  `).filter(e=>!e.includes(`undefined`)).join(`
42
- `)}const I=[...E].reverse();function L(e,t){return`**${e}**:${t.卦名} | 宫:${t.宫} | 六冲六合:${t.六冲六合}`}function R(e,t){let n=N(e,t),r=n.变卦===`无`?null:n.变卦,i=t!==void 0,a=[`爻位`,`爻象`,...i?[`六神`]:[],`本卦装卦`,`世应`,...r?[`变卦装卦`]:[]],o=I.map(e=>{let t=n.本卦[e];return[e,t.爻,...i?[t.六神??``]:[],t.装卦,t.关系??``,...r?[t.是否动爻?r[e].装卦:``]:[]]}),s=[a,a.map(()=>`---`),...o].map(e=>`| ${e.join(` | `)} |`).join(`
43
- `);return[L(`本卦`,n.本卦),r?L(`变卦`,r):`**变卦**:无`,``,s].join(`
44
- `)}const z=[`json`,`pretty-json`,`yaml`,`md`],B=`用法: node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
42
+ `)}const L=[...D].reverse();function R(e,t){return`**${e}**:${t.卦名} | 宫:${t.宫} | 六冲六合:${t.六冲六合}`}function ee(e,t){let n=P(e,t),r=n.变卦===`无`?null:n.变卦,i=t!==void 0,a=[`爻位`,`爻象`,...i?[`六神`]:[],`本卦装卦`,`世应`,...r?[`变卦装卦`]:[]],o=L.map(e=>{let t=n.本卦[e];return[e,t.爻,...i?[t.六神??``]:[],t.装卦,t.关系??``,...r?[t.是否动爻?r[e].装卦:``]:[]]}),s=[a,a.map(()=>`---`),...o].map(e=>`| ${e.join(` | `)} |`).join(`
43
+ `);return[R(`本卦`,n.本卦),r?R(`变卦`,r):`**变卦**:无`,``,s].join(`
44
+ `)}function z(e,t){let n=e.split(`
45
+ `),r=[];for(let e=0;e<n.length;e++){if(!n[e].trim().startsWith("```liuyao"))continue;let i=e+1,a=[],o=!1;for(e++;e<n.length;e++){if(n[e].trim().startsWith("```")){o=!0;break}a.push(n[e])}if(!o)throw Error(`${t?`${t} `:``}第 ${i} 行的 \`\`\`liuyao 代码块没有闭合`);r.push({行号:i,行:a})}return r}const B=[`json`,`pretty-json`,`yaml`,`md`],V=`用法:
46
+ node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
47
+ node parser.skill.mjs --code-blocks=<文件路径>
45
48
 
46
49
  <卦象字符串> 必填,由初爻到上爻
47
50
  六位阳数 如 112233(0 老阴、1 少阳、2 少阴、3 老阳,0 和 3 为动爻)
@@ -49,10 +52,14 @@ var e=[19416,19168,42352,21717,53856,55632,91476,22176,39632,21970,19168,42422,4
49
52
  卦名或全名 如 天风姤、姤、天火
50
53
  --date=<日期> 可选,占卜时间,交给 new Date 解析,如 2026-10-31 或 "2026-10-31T13:00"
51
54
  只写日期时 new Date 按 UTC 零点解析,会固定成辰时,请把时间写全
52
- --format=<格式> 可选,${z.join(` / `)},默认 json`;function V(e){console.error(`错误:${e}\n\n${B}`),process.exit(1)}function H(e,t){let n=e[t],r=n.indexOf(`=`);if(r!==-1)return{选项:n.slice(0,r),值:U(n.slice(r+1)),下一项:t+1};let i=e[t+1];return(i===void 0||i.startsWith(`--`))&&V(`${n} 缺少值,应写成 ${n}=<值>`),{选项:n,值:U(i),下一项:t+2}}function U(e){return e.replace(/^(["'])(.*)\1$/,`$2`)}function W(e){return z.includes(e)||V(`未知的输出格式 "${e}",可选值: ${z.join(`, `)}`),e}function G(e){e||V(`--date 的值为空`);let t=new Date(e);return Number.isNaN(t.getTime())&&V(`无法解析日期 "${e}",请使用 new Date 能识别的格式,如 2026-10-31 或 "2026-10-31T13:00"`),t}function K(e){let t=(e.length===6?A.从阳数字符串创建(e)??A.从单拆重交创建(e):null)??A.从卦名创建(e);if(t)return t;V(`无法解析卦象 "${e}",它不符合任何一种写法:\n 六位阳数(0-3,如 112233)
55
+ --format=<格式> 可选,${B.join(` / `)},默认 json
56
+ --code-blocks=<文件路径>
57
+ 读取文件里所有 \`\`\`liuyao 代码块,一次输出 JSON 数组,
58
+ 不能与 <卦象字符串>、--date、--format 同时使用`;function H(e){console.error(`错误:${e}\n\n${V}`),process.exit(1)}function U(e,t){let n=e[t],r=n.indexOf(`=`);if(r!==-1)return{选项:n.slice(0,r),值:W(n.slice(r+1)),下一项:t+1};let i=e[t+1];return(i===void 0||i.startsWith(`--`))&&H(`${n} 缺少值,应写成 ${n}=<值>`),{选项:n,值:W(i),下一项:t+2}}function W(e){return e.replace(/^(["'])(.*)\1$/,`$2`)}function G(e){return B.includes(e)||H(`未知的输出格式 "${e}",可选值: ${B.join(`, `)}`),e}function K(e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function q(e,t){e||H(`--date 的值为空`);let n=K(e);return n||H(`${t??``}无法解析日期 "${e}",请使用 new Date 能识别的格式,如 2026-10-31 或 "2026-10-31T13:00"`),n}function J(e){return(e.length===6?j.从阳数字符串创建(e)??j.从单拆重交创建(e):null)??j.从卦名创建(e)}function Y(e){let t=J(e);if(t)return t;H(`无法解析卦象 "${e}",它不符合任何一种写法:\n 六位阳数(0-3,如 112233)
53
59
  六位单拆重交(如 单单拆拆重重)
54
- 卦名或全名(如 天风姤、姤、天火)`)}function q(e){let t=[],n=`json`,r=null;for(let i=0;i<e.length;){let a=e[i];if(a===`--format`||a.startsWith(`--format=`)){let{值:t,下一项:r}=H(e,i);n=W(t),i=r}else if(a===`--date`||a.startsWith(`--date=`)){let{值:t,下一项:n}=H(e,i);r=G(t),i=n}else a.startsWith(`--`)?V(`未知的选项 "${a}"`):(t.push(a),i++)}return t.length===0&&V(`缺少卦象字符串`),t.length>1&&V(`多余的参数 "${t.slice(1).join(` `)}",日期请用 --date=<日期> 传入`),{format:n,卦象:K(t[0]),日期:r}}function J(e){return`子丑丑寅寅卯卯辰辰巳巳午午未未申申酉酉戌戌亥亥子`[e.getHours()]??`未知`}function Y(e){let t=d.solar2lunar(e.getFullYear(),e.getMonth()+1,e.getDate());t===-1&&V(`日期超出农历换算支持范围(1900–2100)`);let n=j.find(e=>e.天干===t.gzDay[0]).六神;return{时辰:{年:t.gzYear,月:t.gzMonth,日:t.gzDay,时:J(e)},gods:n}}function X(e,t=` `){return e.split(`
60
+ 卦名或全名(如 天风姤、姤、天火)`)}function X(e,t,n){let r=e.map(e=>e.trim()).filter(Boolean),i=`${n} 第 ${t} 行 `,a=`${i}\`\`\`liuyao 代码块应只有 1 或 2 行(卦象 / 日期 + 卦象),实际 ${r.length} 行:\n`+r.map(e=>` ${e}`).join(`
61
+ `);r.length===0&&H(`${i}\`\`\`liuyao 代码块是空的`),r.length>2&&H(a);let o=r.length===2?r[0]:void 0,s=o!==void 0&&J(o)!==null,c=o===void 0||s?void 0:K(o);s&&H(`${i}\`\`\`liuyao 代码块有两行时,第一行必须是日期、第二行是卦象,但 "${o}" 是卦象`),o!==void 0&&!c&&H(`${i}\`\`\`liuyao 代码块有两行时,第一行必须是日期、第二行是卦象,但 "${o}" 两样都不是`);let l=r.at(-1),u=J(l);if(u||H(`${i}无法解析卦象 "${l}"`),!c)return{行号:t,卦象:P(u)};let d=$(c,i);return{行号:t,卦象:P(u,d.gods),时辰:d.时辰}}function Z(t){let n;try{n=e(t,`utf8`)}catch(e){H(`无法读取文件 "${t}":${e.message}`)}let r;try{r=z(n,t)}catch(e){H(e.message)}return{文件路径:t,卦象:r.map(e=>X(e.行,e.行号,t))}}function Q(e){let t=[],n=`json`,r=null,i=null,a=!1;for(let o=0;o<e.length;){let s=e[o];if(s===`--format`||s.startsWith(`--format=`)){let{值:t,下一项:r}=U(e,o);n=G(t),a=!0,o=r}else if(s===`--date`||s.startsWith(`--date=`)){let{值:t,下一项:n}=U(e,o);r=q(t),a=!0,o=n}else if(s===`--code-blocks`||s.startsWith(`--code-blocks=`)){let{值:t,下一项:n}=U(e,o);t||H(`--code-blocks 的值为空`),i=t,o=n}else s.startsWith(`--`)?H(`未知的选项 "${s}"`):(t.push(s),a=!0,o++)}return i===null?(t.length===0&&H(`缺少卦象字符串,或改用 --code-blocks=<文件路径> 读取文件`),t.length>1&&H(`多余的参数 "${t.slice(1).join(` `)}",日期请用 --date=<日期> 传入`),{模式:`single`,format:n,卦象:Y(t[0]),日期:r}):(a&&H(`--code-blocks 不能与 <卦象字符串>、--date、--format 同时使用`),{模式:`code-blocks`,文件路径:i})}function te(e){return`子丑丑寅寅卯卯辰辰巳巳午午未未申申酉酉戌戌亥亥子`[e.getHours()]??`未知`}function $(e,t){let n=f.solar2lunar(e.getFullYear(),e.getMonth()+1,e.getDate());n===-1&&H(`${t??``}日期超出农历换算支持范围(1900–2100)`);let r=M.find(e=>e.天干===n.gzDay[0]).六神;return{时辰:{年:n.gzYear,月:n.gzMonth,日:n.gzDay,时:te(e)},gods:r}}function ne(e,t=` `){return e.split(`
55
62
  `).map(e=>e&&t+e).join(`
56
- `)}function Z(e){return e?`${e.年}年 ${e.月}月 ${e.日}日 ${e.时}时`:`未提供,无法排月建日辰`}function Q(e,t,n,r){switch(t){case`json`:return JSON.stringify(e);case`pretty-json`:return JSON.stringify(e,null,2);case`yaml`:{let t=[`version: ${e.version}`,`时辰: ${e.时辰?``:`无`}`];return e.时辰&&t.push(...Object.entries(e.时辰).map(([e,t])=>` ${e}: ${t}`)),t.push(`卦象:`),t.push(X(F(n,r))),t.join(`
57
- `)}case`md`:{let t=[`# 六爻卦象 ${e.version}`,``,`**占卦时辰**:${Z(e.时辰)}`,``];return t.push(R(n,r)),t.join(`
58
- `)}}}function $(){let{format:e,卦象:t,日期:n}=q(process.argv.slice(2)),r=n?Y(n):null;return Q({version:`1.0.0`,卦象:N(t,r?.gods),...r?{时辰:r.时辰}:{}},e,t,r?.gods)}console.log($());export{};
63
+ `)}function re(e){return e?`${e.年}年 ${e.月}月 ${e.日}日 ${e.时}时`:`未提供,无法排月建日辰`}function ie(e,t,n,r){switch(t){case`json`:return JSON.stringify(e);case`pretty-json`:return JSON.stringify(e,null,2);case`yaml`:{let t=[`version: ${e.version}`,`时辰: ${e.时辰?``:`无`}`];return e.时辰&&t.push(...Object.entries(e.时辰).map(([e,t])=>` ${e}: ${t}`)),t.push(`卦象:`),t.push(ne(I(n,r))),t.join(`
64
+ `)}case`md`:{let t=[`# 六爻卦象 ${e.version}`,``,`**占卦时辰**:${re(e.时辰)}`,``];return t.push(ee(n,r)),t.join(`
65
+ `)}}}function ae(){let e=Q(process.argv.slice(2));if(e.模式===`code-blocks`)return JSON.stringify(Z(e.文件路径),null,2);let{format:t,卦象:n,日期:r}=e,i=r?$(r):null;return ie({version:`1.0.1`,卦象:P(n,i?.gods),...i?{时辰:i.时辰}:{}},t,n,i?.gods)}console.log(ae());export{};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "liuyao",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "author": {
5
5
  "name": "Kasukabe Tsumugi",
6
6
  "email": "futami16237@gmail.com"
@@ -42,4 +42,4 @@
42
42
  "dependencies": {
43
43
  "solarlunar": "^3.1.0"
44
44
  }
45
- }
45
+ }