liuyao 0.5.4 → 1.0.0
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 +56 -82
- package/dist/index.d.mts +114 -168
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/liuyao-skill/SKILL.md +13 -13
- package/liuyao-skill/parser.skill.mjs +58 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,123 +1,97 @@
|
|
|
1
1
|
# liuyao
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
六爻卦象元数据与装卦工具。数据取自《增删卜易》等著作,只做数据建模,不包含解卦逻辑。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
更多包见[我的主页💛](https://baendlorel.github.io/?repoType=npm)
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
_受@lsby的启发_ 现已重写为中文版,并进行了极大简化,仍然高效地保持了原有功能。
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
- Build a hexagram from six Yao lines or from a known hexagram name.
|
|
11
|
-
- Inspect hexagram metadata such as its name, palace, phase, and setup information.
|
|
12
|
-
- Derive the changed hexagram for dynamic lines.
|
|
13
|
-
- Access Six God ordering data for different heavenly stems.
|
|
9
|
+
**语义更加清晰,但所有api均已破坏性变更,并发布v1.0**
|
|
14
10
|
|
|
15
|
-
##
|
|
16
|
-
This packages includes a 'liuyao-skill' directory that can parse a hexagram string and date into a structured JSON output. It is used for agents to divination and interpretation. See the [SKILL.md](./src/SKILL.md) for details.
|
|
17
|
-
> I tried it, very handy.
|
|
18
|
-
|
|
19
|
-
## Installation
|
|
11
|
+
## 安装
|
|
20
12
|
|
|
21
13
|
```bash
|
|
22
14
|
pnpm add liuyao
|
|
23
15
|
```
|
|
24
16
|
|
|
25
|
-
##
|
|
17
|
+
## 快速开始
|
|
26
18
|
|
|
27
19
|
```ts
|
|
28
|
-
import {
|
|
20
|
+
import { 六爻卦, 爻 } from 'liuyao';
|
|
29
21
|
|
|
30
|
-
const
|
|
22
|
+
const 卦 = 六爻卦.从卦名创建('天风姤');
|
|
31
23
|
|
|
32
|
-
if (
|
|
33
|
-
|
|
24
|
+
if (卦) {
|
|
25
|
+
console.log(卦.全名); // 天风姤
|
|
26
|
+
console.log(卦.宫位信息); // 乾宫(金)一世卦
|
|
27
|
+
console.log(卦.六亲干支五行); // ['父母辛丑土', '子孙辛亥水', ...]
|
|
28
|
+
console.log(卦.六冲六合); // undefined(不是六冲也不是六合)
|
|
29
|
+
console.log(卦.变().全名); // 动爻变化后的卦,静卦返回自身
|
|
30
|
+
console.log(卦.世爻, 卦.应爻); // 世应所在的爻index,0 为初爻
|
|
34
31
|
}
|
|
35
|
-
|
|
36
|
-
console.log(hexagram.info.id);
|
|
37
|
-
console.log(hexagram.toDescriptionEn());
|
|
38
|
-
console.log(hexagram.toChanged()?.info.id);
|
|
39
|
-
console.log(SixGodList[0]);
|
|
40
32
|
```
|
|
41
33
|
|
|
42
|
-
##
|
|
43
|
-
|
|
44
|
-
### Yao
|
|
34
|
+
## 核心概念
|
|
45
35
|
|
|
46
|
-
|
|
36
|
+
### 爻
|
|
47
37
|
|
|
48
|
-
|
|
49
|
-
- `1`: young yang, static
|
|
50
|
-
- `2`: young yin, static
|
|
51
|
-
- `3`: old yang, dynamic
|
|
52
|
-
|
|
53
|
-
Example:
|
|
38
|
+
一个爻由「阳数」0–3 表示,对应老阴、少阳、少阴、老阳;0 和 3 是动爻。
|
|
54
39
|
|
|
55
40
|
```ts
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
console.log(yao.isDynamic);
|
|
41
|
+
const 爻1 = new 爻(3);
|
|
42
|
+
爻1.名称; // 老阳
|
|
43
|
+
爻1.阴阳; // 阳
|
|
44
|
+
爻1.符号; // 重
|
|
45
|
+
爻1.动静状态; // 动未变
|
|
46
|
+
爻1.变().名称; // 少阴
|
|
63
47
|
```
|
|
64
48
|
|
|
65
|
-
###
|
|
49
|
+
### 六爻卦
|
|
66
50
|
|
|
67
|
-
|
|
51
|
+
六个爻从初爻到上爻排列。构造时自动完成装六亲、装天干、装世应、判六冲六合。
|
|
68
52
|
|
|
69
53
|
```ts
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (qian) {
|
|
75
|
-
console.log(qian.info.sign);
|
|
76
|
-
console.log(qian.info.phase);
|
|
77
|
-
console.log(qian.dynamicInner);
|
|
78
|
-
}
|
|
54
|
+
const 卦 = 六爻卦.从阳数字符串创建('112233'); // '单单拆拆重重' 等价
|
|
55
|
+
卦?.全名; // 风泽中孚
|
|
56
|
+
卦?.二进制表示; // '110011',1 为阳爻,0 为阴爻
|
|
79
57
|
```
|
|
80
58
|
|
|
81
|
-
|
|
59
|
+
## API
|
|
82
60
|
|
|
83
|
-
|
|
84
|
-
- `isDynamic`: whether any line is dynamic
|
|
85
|
-
- `isChanged`: whether the current hexagram is already a changed hexagram
|
|
86
|
-
- `toChanged()`: returns the changed hexagram when dynamic lines exist
|
|
87
|
-
- `toDescription()`: Chinese description
|
|
88
|
-
- `toDescriptionEn()`: English description
|
|
61
|
+
### 爻
|
|
89
62
|
|
|
90
|
-
|
|
63
|
+
| 静态方法 | 说明 |
|
|
64
|
+
| --------------------- | --------------------------------------------- |
|
|
65
|
+
| `从阳数字符串创建(s)` | `'0'`–`'3'` |
|
|
66
|
+
| `从单拆重交创建(s)` | `'交'` `'单'` `'拆'` `'重'` |
|
|
67
|
+
| `从名称创建(s)` | `'老阴'` `'少阳'` `'少阴'` `'老阳'` |
|
|
68
|
+
| `从八卦字段创建(v)` | 八卦的卦名、二进制、阳数、符号均可,如 `'乾'` |
|
|
91
69
|
|
|
92
|
-
|
|
93
|
-
- `Hexagram.fromyangs(counts)`
|
|
94
|
-
- `Hexagram.fromId(id)`
|
|
95
|
-
- `Hexagram.fromPalace(palace)`
|
|
70
|
+
实例:`阳数`、`阴阳`、`名称`、`符号`、`动静状态`、`变()`、`克隆()`。
|
|
96
71
|
|
|
97
|
-
|
|
72
|
+
### 六爻卦
|
|
98
73
|
|
|
99
|
-
|
|
74
|
+
| 静态方法 | 说明 |
|
|
75
|
+
| --------------------- | --------------------------------------------- |
|
|
76
|
+
| `从阳数字符串创建(s)` | 如 `'112233'` |
|
|
77
|
+
| `从单拆重交创建(s)` | 如 `'单单拆拆重重'` |
|
|
78
|
+
| `从阳数创建(counts)` | 阳数数组,非法时返回 `null` |
|
|
79
|
+
| `从卦名创建(name)` | 全名、卦名或唯一前缀,如 `'天火同人'`、`'姤'` |
|
|
100
80
|
|
|
101
|
-
|
|
102
|
-
- `Hexagram`
|
|
103
|
-
- `Yao`
|
|
81
|
+
实例:`六爻`、`阳数`、`二进制表示`、`卦名`、`全名`、`符号`、`五行`、`宫`、`八宫卦位`、`宫位信息`、`动静状态`、`六亲干支五行`、`世爻`、`应爻`、`六冲六合`、`是否为八纯卦`、`内卦`、`外卦`、`变()`、`克隆()`。
|
|
104
82
|
|
|
105
|
-
|
|
106
|
-
- `HexagramList`(六十四卦): Includes 64 static hexagram info objects with traditional metadata.
|
|
107
|
-
- `HexagramYaoIndex`(六十四卦爻位名)
|
|
108
|
-
- `TrigramList`(八卦): Includes 8 static trigram info objects with traditional metadata.
|
|
109
|
-
- `SixGodList`(六神表)
|
|
83
|
+
### 数据表
|
|
110
84
|
|
|
111
|
-
|
|
112
|
-
- type `SixGod`
|
|
113
|
-
- type `SixGodInfo`
|
|
114
|
-
- type `SetupGramInfo`
|
|
85
|
+
`六十四卦表`、`八卦表`、`八宫卦位顺序表`、`六神表`、`爻位`。
|
|
115
86
|
|
|
116
|
-
##
|
|
87
|
+
## 技能包
|
|
117
88
|
|
|
118
|
-
-
|
|
119
|
-
|
|
89
|
+
包内附带 `liuyao-skill`,供 AI 用脚本把卦象字符串装成结构化数据,详见 [SKILL.md](./src/SKILL.md)。
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
|
|
93
|
+
```
|
|
120
94
|
|
|
121
|
-
|
|
95
|
+
`--format` 可选 `json`(默认,紧凑)、`pretty-json`(缩进 2 格)、`yaml`、`md`(排盘表格)。卦象字符串支持六位阳数 `112233`、六位单拆重交 `单单拆拆重重`、卦名或全名 `天风姤`。日期用 `--date` 传入,如 `--date=2026-10-31T13:00`(`new Date` 对纯日期按 UTC 零点解析,会固定成辰时、UTC 以西还会退一天,请写全时间)。参数不合法时会打印具体原因和用法并以非 0 退出。
|
|
122
96
|
|
|
123
|
-
|
|
97
|
+
`src/lib` 下的 `toJSON`、`toYAML`、`toMarkdown` 即上述三种结构化输出的实现。
|
package/dist/index.d.mts
CHANGED
|
@@ -1,45 +1,40 @@
|
|
|
1
1
|
//#region src/core/common.d.ts
|
|
2
|
-
declare const
|
|
3
|
-
type
|
|
4
|
-
type
|
|
5
|
-
type
|
|
6
|
-
interface
|
|
2
|
+
declare const 八宫卦位顺序表: readonly ["本宫卦", "一世卦", "二世卦", "三世卦", "四世卦", "五世卦", "游魂卦", "归魂卦"];
|
|
3
|
+
type 地支五行 = '子水' | '丑土' | '寅木' | '卯木' | '辰土' | '巳火' | '午火' | '未土' | '申金' | '酉金' | '戌土' | '亥水';
|
|
4
|
+
type 五行 = '金' | '木' | '水' | '火' | '土';
|
|
5
|
+
type 八卦名 = '乾' | '兑' | '离' | '震' | '巽' | '坎' | '艮' | '坤';
|
|
6
|
+
interface 六十四卦 {
|
|
7
7
|
/**
|
|
8
8
|
* Binary representation of the hexagram, where 0 image a yin line and 1 image a yang line. The lines are ordered from the bottom (first line) to the top (sixth line).
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Binary to yangs.
|
|
13
|
-
* e.g. `'000000'` 坤为地 -> `[2, 2, 2, 2, 2, 2]`, 2 means Shao Yin.
|
|
14
|
-
*/
|
|
15
|
-
yangs: number[];
|
|
10
|
+
二进制表示: string;
|
|
16
11
|
/**
|
|
17
12
|
* Full name of the hexagram, which includes the names of the upper and lower trigrams.
|
|
18
13
|
*
|
|
19
14
|
* For example, "坤为地", "地雷复", "地水师", etc.
|
|
20
15
|
*/
|
|
21
|
-
|
|
16
|
+
全名: string;
|
|
22
17
|
/**
|
|
23
18
|
* Name of the hexagram.
|
|
24
19
|
*
|
|
25
20
|
* For example, "地", "复", "师", etc.
|
|
26
21
|
*/
|
|
27
|
-
|
|
22
|
+
卦名: string;
|
|
28
23
|
/**
|
|
29
24
|
* 64 hexagrams correspond to Unicode characters.
|
|
30
25
|
* For example, "䷁" (U+4DC1) image the hexagram "坤为地".
|
|
31
26
|
*/
|
|
32
|
-
|
|
27
|
+
符号: string;
|
|
33
28
|
/**
|
|
34
29
|
* Five Phases (五行) associated with the hexagram, which can be one of "金" (Metal), "木" (Wood), "水" (Water), "火" (Fire), or "土" (Earth).
|
|
35
30
|
* It indicates the development and state of things.
|
|
36
31
|
*/
|
|
37
|
-
|
|
32
|
+
五行: 五行;
|
|
38
33
|
/**
|
|
39
34
|
* Eight Palaces (八宫) to which the hexagram belongs.
|
|
40
35
|
* 'Palace' is not a physical palace, but rather a category or family of hexagrams.
|
|
41
36
|
*/
|
|
42
|
-
|
|
37
|
+
宫: 八卦名;
|
|
43
38
|
/**
|
|
44
39
|
* Index of the hexagram within its palace, ranging from 0 to 7. This index helps to identify the specific hexagram within the context of its palace.
|
|
45
40
|
*
|
|
@@ -52,88 +47,67 @@ interface HexagramInfo {
|
|
|
52
47
|
* - 游魂卦 Wandering Soul, restores 4th yao of Fifth Generation
|
|
53
48
|
* - 归魂卦 Returning Soul, restores lower 3 yaos of Fifth Generation
|
|
54
49
|
*/
|
|
55
|
-
|
|
50
|
+
八宫卦位: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;
|
|
56
51
|
}
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
/**
|
|
53
|
+
* 包含丰富信息的表,已冻结无法修改,字段如下:
|
|
54
|
+
* - 二进制表示: '000000'
|
|
55
|
+
* - 全名: '坤为地'
|
|
56
|
+
* - 符号: '䷁'
|
|
57
|
+
* - 五行: '土'
|
|
58
|
+
* - 宫: '坤'
|
|
59
|
+
* - 卦位: 0
|
|
60
|
+
* - 卦名: '坤'
|
|
61
|
+
*/
|
|
62
|
+
declare const 六十四卦表: readonly 六十四卦[];
|
|
63
|
+
interface 八卦 {
|
|
59
64
|
/**
|
|
60
65
|
* Presents the trigram as a 3-digit binary string. 1 image a Yang line and 0 image a Yin line.
|
|
61
66
|
*
|
|
62
67
|
* For example, "111" for 乾, "100" for 震, etc.
|
|
63
68
|
*/
|
|
64
|
-
|
|
69
|
+
二进制表示: `${0 | 1}${0 | 1}${0 | 1}`;
|
|
65
70
|
/**
|
|
66
71
|
* How many Yang Yaos are in the trigram, such as 0 for 坤, 1 for 震, 2 for 兑, etc.
|
|
67
72
|
*/
|
|
68
|
-
|
|
73
|
+
阳数: 0 | 1 | 2 | 3;
|
|
69
74
|
/**
|
|
70
75
|
* Name of the trigram in Chinese, such as "乾", "坤", "震", etc.
|
|
71
76
|
*/
|
|
72
|
-
|
|
77
|
+
卦名: string;
|
|
73
78
|
/**
|
|
74
79
|
* "象", means what the trigram represents in Chinese, such as "天", "地", "水", etc.
|
|
75
80
|
*/
|
|
76
|
-
|
|
81
|
+
象: string;
|
|
77
82
|
/**
|
|
78
83
|
* Unicode character representing the trigram, such as "☰" for 乾, "☷" for 坤, etc.
|
|
79
84
|
*/
|
|
80
|
-
|
|
85
|
+
符号: string;
|
|
81
86
|
/**
|
|
82
87
|
* Earth Stem and Five Phases when this gram performs a inner gram of a hexagram.
|
|
83
88
|
* @see 《增删卜易·浑天甲子章》
|
|
84
89
|
*/
|
|
85
|
-
|
|
90
|
+
内卦地支五行: 地支五行[];
|
|
86
91
|
/**
|
|
87
92
|
* Earth Stem and Five Phases when this gram performs a outer gram of a hexagram.
|
|
88
93
|
* @see 《增删卜易·浑天甲子章》
|
|
89
94
|
*/
|
|
90
|
-
|
|
95
|
+
外卦地支五行: 地支五行[];
|
|
91
96
|
}
|
|
92
97
|
/**
|
|
93
98
|
* List of all trigrams in the I Ching, with their binary representation, number of yang lines, name, what they represent, and their corresponding sign.
|
|
94
99
|
*/
|
|
95
|
-
declare const
|
|
96
|
-
//#endregion
|
|
97
|
-
//#region src/core/setup-gram.d.ts
|
|
98
|
-
/**
|
|
99
|
-
* Kins and their corresponding earthly branches in the Liu Yao divination system, along with the type of relation (世 or 应).
|
|
100
|
-
* This information is crucial for interpreting the hexagrams and their changing lines in the context of a divination reading.
|
|
101
|
-
*
|
|
102
|
-
* @deprecated This is for beginners.
|
|
103
|
-
*/
|
|
104
|
-
interface SetupGramInfo {
|
|
105
|
-
/**
|
|
106
|
-
* There are 5 kins in total.
|
|
107
|
-
*
|
|
108
|
-
* - 兄弟 (Brothers): Representing peers, friends, or competitors.
|
|
109
|
-
* - 妻财 (Wife/Wealth): Representing spouse, wealth, or resources.
|
|
110
|
-
* - 子孙 (Children/Descendants): Representing offspring, students, or followers.
|
|
111
|
-
* - 官鬼 (Officials/Ghosts): Representing authority figures, adversaries, or hidden factors.
|
|
112
|
-
* - 父母 (Parents): Representing parents, mentors, or foundational influences.
|
|
113
|
-
*
|
|
114
|
-
* Each kin is associated with one of the twelve earthly branches (地支), which adds another layer of meaning to the hexagram lines.
|
|
115
|
-
*/
|
|
116
|
-
kin: '兄弟丑土' | '兄弟亥水' | '兄弟午火' | '兄弟卯木' | '兄弟子水' | '兄弟寅木' | '兄弟巳火' | '兄弟戌土' | '兄弟未土' | '兄弟申金' | '兄弟辰土' | '兄弟酉金' | '妻财丑土' | '妻财亥水' | '妻财午火' | '妻财卯木' | '妻财子水' | '妻财寅木' | '妻财巳火' | '妻财戌土' | '妻财未土' | '妻财申金' | '妻财辰土' | '妻财酉金' | '子孙丑土' | '子孙亥水' | '子孙午火' | '子孙卯木' | '子孙子水' | '子孙寅木' | '子孙巳火' | '子孙戌土' | '子孙未土' | '子孙申金' | '子孙辰土' | '子孙酉金' | '官鬼丑土' | '官鬼亥水' | '官鬼午火' | '官鬼卯木' | '官鬼子水' | '官鬼寅木' | '官鬼巳火' | '官鬼戌土' | '官鬼未土' | '官鬼申金' | '官鬼辰土' | '官鬼酉金' | '父母丑土' | '父母亥水' | '父母午火' | '父母卯木' | '父母子水' | '父母寅木' | '父母巳火' | '父母戌土' | '父母未土' | '父母申金' | '父母辰土' | '父母酉金';
|
|
117
|
-
/**
|
|
118
|
-
* Host(世)is the augur and Guest(应) is the person or things which to ask about.
|
|
119
|
-
*
|
|
120
|
-
* Indexes of Host and Guest satisfies this formula:
|
|
121
|
-
* ```js
|
|
122
|
-
* index_guest = (index_host + 3) % 6
|
|
123
|
-
* ```
|
|
124
|
-
*/
|
|
125
|
-
hostGuest?: '世' | '应';
|
|
126
|
-
}
|
|
100
|
+
declare const 八卦表: readonly 八卦[];
|
|
127
101
|
//#endregion
|
|
128
102
|
//#region src/core/six-gods.d.ts
|
|
129
|
-
type
|
|
130
|
-
interface
|
|
103
|
+
type 六神 = '玄武' | '白虎' | '螣蛇' | '勾陈' | '朱雀' | '青龙';
|
|
104
|
+
interface 六神信息 {
|
|
131
105
|
/**
|
|
132
106
|
* The Heavenly Stem associated with the Six Gods in this order.
|
|
133
107
|
* They are '甲乙丙丁戊己庚辛壬癸' in sequence.
|
|
134
108
|
* Different Heavenly Stems correspond to different orders of Six Gods.
|
|
135
109
|
*/
|
|
136
|
-
|
|
110
|
+
天干: string;
|
|
137
111
|
/**
|
|
138
112
|
* Six Gods contains '青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'.
|
|
139
113
|
* Different Heavenly Stems correspond to different orders of Six Gods.
|
|
@@ -146,53 +120,47 @@ interface SixGodInfo {
|
|
|
146
120
|
* - 螣蛇: Flying Serpent, a limbless divine serpent that can summon clouds and mist and roam within them.
|
|
147
121
|
* - 勾陈: Gouchen, Also considered as 麒麟 Kylin. It has a body like a musk deer, a tail like that of a dragon, dragon scales, and a single horn.
|
|
148
122
|
*/
|
|
149
|
-
|
|
123
|
+
六神: 六神[];
|
|
150
124
|
}
|
|
151
125
|
/**
|
|
152
126
|
* @see 《增删卜易·六神章》
|
|
153
127
|
*/
|
|
154
|
-
declare const
|
|
128
|
+
declare const 六神表: readonly 六神信息[];
|
|
155
129
|
//#endregion
|
|
156
130
|
//#region src/classes/yao.d.ts
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
* - Symbols in ancient books representing a Yao ()
|
|
168
|
-
* - A field of a TrigramInfo object (e.g. id, binary, nameEn, represents, representsEn, sign)
|
|
169
|
-
* If the input matches any of these, a corresponding Yao will be created.
|
|
170
|
-
* Otherwise, null will be returned.
|
|
171
|
-
*/
|
|
172
|
-
/**
|
|
173
|
-
* Creating a Yao from symbol.
|
|
174
|
-
* @param symbol e.g. '×' for 0, '’' for 1, '”' for 2, '○' for 3.
|
|
175
|
-
*/
|
|
176
|
-
static fromSymbol(symbol: string): Yao | null;
|
|
131
|
+
/**
|
|
132
|
+
* 描述卦和爻的动静变化,分为'静'、'动卦/爻但还没变'、'动卦/爻已经变了'3个状态
|
|
133
|
+
*/
|
|
134
|
+
declare const enum 动静状态 {
|
|
135
|
+
静 = 0,
|
|
136
|
+
动未变 = 1,
|
|
137
|
+
动已变 = 2
|
|
138
|
+
}
|
|
139
|
+
declare class 爻 {
|
|
140
|
+
#private;
|
|
177
141
|
/**
|
|
178
142
|
* Creating a Yao from symbolName.
|
|
179
143
|
* @param symbolName e.g. '交' for 0, '单' for 1, '拆' for 2, '重' for 3.
|
|
144
|
+
* @returns 如果入参符合就返回,如果不符合就返回`null`
|
|
180
145
|
*/
|
|
181
|
-
static
|
|
146
|
+
static 从单拆重交创建(symbolName: string): 爻 | null;
|
|
182
147
|
/**
|
|
183
148
|
* Creating a Yao from name.
|
|
184
149
|
* @param name e.g. '老阴', '少阳', '少阴', '老阳'.
|
|
150
|
+
* @returns 如果入参符合就返回,如果不符合就返回`null`
|
|
185
151
|
*/
|
|
186
|
-
static
|
|
152
|
+
static 从名称创建(name: string): 爻 | null;
|
|
187
153
|
/**
|
|
188
|
-
*
|
|
154
|
+
* @param digit e.g. '0', '1', '2', '3'.
|
|
155
|
+
* @returns 如果入参符合就返回,如果不符合就返回`null`
|
|
189
156
|
*/
|
|
190
|
-
static
|
|
157
|
+
static 从阳数字符串创建(digit: string): 爻 | null;
|
|
191
158
|
/**
|
|
192
159
|
* Create a Yao from any Trigram field value.
|
|
193
160
|
* @param value `{id: '坤', binary: '000', yangs: 0}`, so `'坤'`, `'000'` and `0` can all be used.
|
|
161
|
+
* @returns 如果入参符合就返回,如果不符合就返回`null`
|
|
194
162
|
*/
|
|
195
|
-
static
|
|
163
|
+
static 从八卦字段创建(value: string | number): 爻 | null;
|
|
196
164
|
/**
|
|
197
165
|
* How many faces of character of 3 coins in this Yao.
|
|
198
166
|
* It can only be 0, 1, 2 or 3, which corresponds to 老阴、少阳、少阴、老阳 respectively.
|
|
@@ -201,133 +169,111 @@ declare class Yao {
|
|
|
201
169
|
* - 2: 少阴 (two coins are 阳面, one coin is 阴面)
|
|
202
170
|
* - 3: 老阳 (all three coins are 阳面)
|
|
203
171
|
*/
|
|
204
|
-
|
|
172
|
+
get 阳数(): 0 | 1 | 2 | 3;
|
|
173
|
+
get 动静状态(): 动静状态;
|
|
205
174
|
/**
|
|
206
175
|
* 两仪, aka 阴阳
|
|
207
176
|
*/
|
|
208
|
-
|
|
177
|
+
get 阴阳(): '阴' | '阳';
|
|
178
|
+
get 名称(): '老阴' | '少阳' | '少阴' | '老阳';
|
|
179
|
+
get 符号(): '单' | '拆' | '重' | '交';
|
|
180
|
+
constructor(阳数: number, 状态?: 动静状态);
|
|
209
181
|
/**
|
|
210
|
-
*
|
|
211
|
-
* - 老阴 (0) can change to 少阳 (1)
|
|
212
|
-
* - 老阳 (3) can change to 少阴 (2)
|
|
213
|
-
* - 少阳 (1) and 少阴 (2) cannot change, so they are static.
|
|
182
|
+
* 判断是否同为阴爻或同为阳爻
|
|
214
183
|
*/
|
|
215
|
-
|
|
184
|
+
是否阳数相等(other: 爻): boolean;
|
|
216
185
|
/**
|
|
217
|
-
*
|
|
218
|
-
|
|
219
|
-
readonly changed: boolean; /**
|
|
220
|
-
* The symbol representing this Yao, which is one of '×', '’', '”', '○'.
|
|
186
|
+
* 判断是否同为阴爻或同为阳爻,且是否变过的状态也相同
|
|
187
|
+
* - 阳数和状态相同视为全同
|
|
221
188
|
*/
|
|
222
|
-
|
|
223
|
-
readonly name: '老阴' | '少阳' | '少阴' | '老阳';
|
|
224
|
-
readonly symbol: '单' | '拆' | '重' | '交';
|
|
225
|
-
constructor(yangs: number, isChanged?: boolean);
|
|
189
|
+
是否全同(other: 爻): boolean;
|
|
226
190
|
/**
|
|
227
|
-
*
|
|
191
|
+
* 克隆一个全新的和本身一样的爻对象
|
|
228
192
|
*/
|
|
229
|
-
|
|
193
|
+
克隆(): 爻;
|
|
230
194
|
/**
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* 2. `this.isChanged` is same
|
|
195
|
+
* 得到新的爻对象,这个爻是变过的。
|
|
196
|
+
* @returns 如果是静爻或者已变过,则返回它自己
|
|
234
197
|
*/
|
|
235
|
-
|
|
236
|
-
clone(): Yao;
|
|
237
|
-
toChanged(): Yao;
|
|
198
|
+
变(): 爻;
|
|
238
199
|
}
|
|
239
200
|
//#endregion
|
|
240
201
|
//#region src/classes/hexagram.d.ts
|
|
241
|
-
|
|
242
|
-
declare const HexagramYaoOrder: readonly ["初爻", "二爻", "三爻", "四爻", "五爻", "上爻"];
|
|
202
|
+
declare const 爻位: readonly ["初爻", "二爻", "三爻", "四爻", "五爻", "上爻"];
|
|
243
203
|
/**
|
|
244
204
|
* Hexagram class represents a hexagram, which consists of 6 Yao.
|
|
245
205
|
* - Each Yao can be either yin or yang, and can be changing or not.
|
|
246
206
|
* - The hexagram can be constructed from an array of Yao or an array of counts of yang.
|
|
247
207
|
* - Creates “乾为天” by default.
|
|
248
208
|
*/
|
|
249
|
-
declare class
|
|
209
|
+
declare class 六爻卦 implements 六十四卦 {
|
|
210
|
+
#private;
|
|
250
211
|
/**
|
|
251
212
|
* Use tokens like `'012132'` to create a Hexagram, where each digit represents the count of Yang in the corresponding Yao (0 for 老阴, 1 for 少阳, 2 for 少阴, 3 for 老阳). The first digit represents the first Yao (初爻) and the last digit represents the sixth Yao (上爻).
|
|
252
213
|
*/
|
|
253
|
-
static
|
|
214
|
+
static 从阳数字符串创建(quaternary: string): 六爻卦 | null;
|
|
254
215
|
/**
|
|
255
216
|
* Use tokens like `'单单拆拆重重'` to create a Hexagram.
|
|
256
217
|
*
|
|
257
218
|
* Since 交 is 0, 单 is 1, 拆 is 2, and 重 is 3, the above token is equivalent to '112233'.
|
|
258
219
|
* Which returns '风泽中孚' with its 5th and 6th Yao being dynamic.
|
|
259
220
|
*/
|
|
260
|
-
static
|
|
221
|
+
static 从单拆重交创建(symbolNames: string): 六爻卦 | null;
|
|
261
222
|
/**
|
|
262
223
|
* Try to create a Hexagram from an array of counts of Yang. If the input is invalid, null will be returned.
|
|
263
224
|
*/
|
|
264
|
-
static
|
|
225
|
+
static 从阳数创建(counts: number[]): 六爻卦 | null;
|
|
265
226
|
/**
|
|
266
227
|
* Create a Hexagram from its id, which is the name of the hexagram without the palace name.
|
|
267
|
-
* @param
|
|
268
|
-
*/
|
|
269
|
-
static fromId(id: string): Hexagram | null;
|
|
270
|
-
/**
|
|
271
|
-
* Find Original Palace Hexagram by the palace name, which is the last character of the hexagram id. For example, '天' for '乾为天', '地' for '坤为地', etc.
|
|
272
|
-
*/
|
|
273
|
-
static fromPalace(palace: string): Hexagram | null;
|
|
274
|
-
/**
|
|
275
|
-
* 6 Yao positions, indexed from bottom to top.
|
|
276
|
-
* Index from 0 to 5, where 0 is the first Yao (初爻) and 5 is the sixth Yao (上爻).
|
|
277
|
-
*/
|
|
278
|
-
readonly yaos: LiuYao;
|
|
279
|
-
readonly yangs: number[];
|
|
280
|
-
readonly binary: string;
|
|
281
|
-
readonly id: string;
|
|
282
|
-
readonly name: string;
|
|
283
|
-
readonly sign: string;
|
|
284
|
-
readonly palace: '乾' | '坤' | '震' | '巽' | '坎' | '离' | '艮' | '兑';
|
|
285
|
-
readonly phase: '金' | '木' | '水' | '火' | '土';
|
|
286
|
-
readonly generation: 0 | 6 | 1 | 2 | 3 | 4 | 5 | 7;
|
|
287
|
-
readonly palaceInfo: string;
|
|
288
|
-
/**
|
|
289
|
-
* Whether the 6 Yaos of this hexagram contain any dynamic Yao.
|
|
290
|
-
*/
|
|
291
|
-
readonly dynamic: boolean;
|
|
292
|
-
/**
|
|
293
|
-
* Whether this hexagram has already changed to another hexagram. Once a hexagram is changed, it cannot change again.
|
|
294
|
-
*/
|
|
295
|
-
readonly changed: boolean;
|
|
296
|
-
readonly inner: TrigramInfo;
|
|
297
|
-
readonly outer: TrigramInfo;
|
|
298
|
-
/**
|
|
299
|
-
* Whether this gram is 六冲、六合
|
|
228
|
+
* @param name "坤为地", "地雷复", "地水师"
|
|
300
229
|
*/
|
|
301
|
-
|
|
230
|
+
static 从卦名创建(name: string): 六爻卦 | null;
|
|
302
231
|
/**
|
|
303
|
-
*
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
* Includes 六亲、天干、地支、五行. Looks like "兄弟癸丑土" "官鬼辛卯木"
|
|
232
|
+
* Create a Hexagram from an array of Yao with length 6.
|
|
233
|
+
* @param 六爻 从初爻到上爻6个爻组成的数组
|
|
234
|
+
* @param 状态 动静状态,不传则由爻推断
|
|
235
|
+
* @param 本卦 仅变卦需要传入。六亲在构造时就要按本卦的宫装好,所以不能等构造完再赋值
|
|
308
236
|
*/
|
|
309
|
-
|
|
237
|
+
constructor(六爻: 爻[], 状态?: 动静状态, 本卦?: 六爻卦);
|
|
238
|
+
get 六爻(): [爻, 爻, 爻, 爻, 爻, 爻];
|
|
239
|
+
get 阳数(): number[];
|
|
240
|
+
get 宫位信息(): string;
|
|
241
|
+
get 动静状态(): 动静状态;
|
|
310
242
|
/**
|
|
311
|
-
*
|
|
243
|
+
* 若是变卦,则返回本卦。
|
|
244
|
+
*
|
|
245
|
+
* 若是静卦或者本来就是本卦,则返回自身。
|
|
312
246
|
*/
|
|
313
|
-
|
|
247
|
+
get 本卦(): 六爻卦;
|
|
248
|
+
get 六亲干支五行(): string[];
|
|
314
249
|
/**
|
|
315
|
-
*
|
|
250
|
+
* 返回世爻所在的index(0表示初爻,5表示上爻)
|
|
316
251
|
*/
|
|
317
|
-
|
|
252
|
+
get 世爻(): 0 | 1 | 2 | 3 | 4 | 5;
|
|
318
253
|
/**
|
|
319
|
-
*
|
|
254
|
+
* 返回应爻所在的index(0表示初爻,5表示上爻)
|
|
320
255
|
*/
|
|
321
|
-
|
|
256
|
+
get 应爻(): 0 | 1 | 2 | 3 | 4 | 5;
|
|
257
|
+
get 六冲六合(): '六冲' | '六合' | undefined;
|
|
258
|
+
get 是否为八纯卦(): boolean;
|
|
259
|
+
get 内卦(): 八卦;
|
|
260
|
+
get 外卦(): 八卦;
|
|
261
|
+
get 二进制表示(): string;
|
|
262
|
+
get 卦名(): string;
|
|
263
|
+
get 全名(): string;
|
|
264
|
+
get 符号(): string;
|
|
265
|
+
get 五行(): 五行;
|
|
266
|
+
get 宫(): 八卦名;
|
|
267
|
+
get 八宫卦位(): 0 | 6 | 1 | 2 | 3 | 4 | 5 | 7;
|
|
322
268
|
/**
|
|
323
|
-
*
|
|
269
|
+
* 获得变爻卦象
|
|
270
|
+
* @returns 变爻卦象,如果卦象静则返回它自己
|
|
324
271
|
*/
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
clone(): Hexagram;
|
|
272
|
+
变(): 六爻卦;
|
|
273
|
+
克隆(): 六爻卦;
|
|
328
274
|
toString(): string;
|
|
329
275
|
[Symbol.toPrimitive](): string;
|
|
330
276
|
}
|
|
331
277
|
//#endregion
|
|
332
|
-
export {
|
|
278
|
+
export { type 八卦, 八卦表, 八宫卦位顺序表, type 六十四卦, 六十四卦表, 六爻卦, type 六神, type 六神信息, 六神表, 爻, 爻位 };
|
|
333
279
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=[`本宫卦`,`一世卦`,`二世卦`,`三世卦`,`四世卦`,`五世卦`,`游魂卦`,`归魂卦`],t=[{binary:`000000`,id:`坤为地`,sign:`䷁`,phase:`土`,palace:`坤`,generation:0,yangs:[2,2,2,2,2,2],name:`坤`},{binary:`100000`,id:`地雷复`,sign:`䷗`,phase:`土`,palace:`坤`,generation:1,yangs:[1,2,2,2,2,2],name:`复`},{binary:`010000`,id:`地水师`,sign:`䷆`,phase:`水`,palace:`坎`,generation:7,yangs:[2,1,2,2,2,2],name:`师`},{binary:`110000`,id:`地泽临`,sign:`䷒`,phase:`土`,palace:`坤`,generation:2,yangs:[1,1,2,2,2,2],name:`临`},{binary:`001000`,id:`地山谦`,sign:`䷎`,phase:`土`,palace:`兑`,generation:5,yangs:[2,2,1,2,2,2],name:`谦`},{binary:`101000`,id:`地火明夷`,sign:`䷣`,phase:`水`,palace:`坎`,generation:6,yangs:[1,2,1,2,2,2],name:`明夷`},{binary:`011000`,id:`地风升`,sign:`䷭`,phase:`木`,palace:`震`,generation:4,yangs:[2,1,1,2,2,2],name:`升`},{binary:`111000`,id:`地天泰`,sign:`䷊`,phase:`土`,palace:`坤`,generation:3,yangs:[1,1,1,2,2,2],name:`泰`},{binary:`000100`,id:`雷地豫`,sign:`䷏`,phase:`木`,palace:`震`,generation:1,yangs:[2,2,2,1,2,2],name:`豫`},{binary:`100100`,id:`震为雷`,sign:`䷲`,phase:`木`,palace:`震`,generation:0,yangs:[1,2,2,1,2,2],name:`震`},{binary:`010100`,id:`雷水解`,sign:`䷧`,phase:`木`,palace:`震`,generation:2,yangs:[2,1,2,1,2,2],name:`解`},{binary:`110100`,id:`雷泽归妹`,sign:`䷵`,phase:`金`,palace:`兑`,generation:7,yangs:[1,1,2,1,2,2],name:`归妹`},{binary:`001100`,id:`雷山小过`,sign:`䷽`,phase:`金`,palace:`兑`,generation:6,yangs:[2,2,1,1,2,2],name:`小过`},{binary:`101100`,id:`雷火丰`,sign:`䷶`,phase:`水`,palace:`坎`,generation:5,yangs:[1,2,1,1,2,2],name:`丰`},{binary:`011100`,id:`雷风恒`,sign:`䷟`,phase:`木`,palace:`震`,generation:3,yangs:[2,1,1,1,2,2],name:`恒`},{binary:`111100`,id:`雷天大壮`,sign:`䷡`,phase:`土`,palace:`坤`,generation:4,yangs:[1,1,1,1,2,2],name:`大壮`},{binary:`000010`,id:`水地比`,sign:`䷇`,phase:`土`,palace:`坤`,generation:7,yangs:[2,2,2,2,1,2],name:`比`},{binary:`100010`,id:`水雷屯`,sign:`䷂`,phase:`水`,palace:`坎`,generation:2,yangs:[1,2,2,2,1,2],name:`屯`},{binary:`010010`,id:`坎为水`,sign:`䷜`,phase:`水`,palace:`坎`,generation:0,yangs:[2,1,2,2,1,2],name:`坎`},{binary:`110010`,id:`水泽节`,sign:`䷻`,phase:`水`,palace:`坎`,generation:1,yangs:[1,1,2,2,1,2],name:`节`},{binary:`001010`,id:`水山蹇`,sign:`䷦`,phase:`金`,palace:`兑`,generation:4,yangs:[2,2,1,2,1,2],name:`蹇`},{binary:`101010`,id:`水火既济`,sign:`䷾`,phase:`水`,palace:`坎`,generation:3,yangs:[1,2,1,2,1,2],name:`既济`},{binary:`011010`,id:`水风井`,sign:`䷯`,phase:`木`,palace:`震`,generation:5,yangs:[2,1,1,2,1,2],name:`井`},{binary:`111010`,id:`水天需`,sign:`䷄`,phase:`土`,palace:`坤`,generation:6,yangs:[1,1,1,2,1,2],name:`需`},{binary:`000110`,id:`泽地萃`,sign:`䷬`,phase:`金`,palace:`兑`,generation:2,yangs:[2,2,2,1,1,2],name:`萃`},{binary:`100110`,id:`泽雷随`,sign:`䷐`,phase:`木`,palace:`震`,generation:7,yangs:[1,2,2,1,1,2],name:`随`},{binary:`010110`,id:`泽水困`,sign:`䷮`,phase:`金`,palace:`兑`,generation:1,yangs:[2,1,2,1,1,2],name:`困`},{binary:`110110`,id:`兑为泽`,sign:`䷹`,phase:`金`,palace:`兑`,generation:0,yangs:[1,1,2,1,1,2],name:`兑`},{binary:`001110`,id:`泽山咸`,sign:`䷞`,phase:`金`,palace:`兑`,generation:3,yangs:[2,2,1,1,1,2],name:`咸`},{binary:`101110`,id:`泽火革`,sign:`䷰`,phase:`水`,palace:`坎`,generation:4,yangs:[1,2,1,1,1,2],name:`革`},{binary:`011110`,id:`泽风大过`,sign:`䷛`,phase:`木`,palace:`震`,generation:6,yangs:[2,1,1,1,1,2],name:`大过`},{binary:`111110`,id:`泽天夬`,sign:`䷪`,phase:`土`,palace:`坤`,generation:5,yangs:[1,1,1,1,1,2],name:`夬`},{binary:`000001`,id:`山地剥`,sign:`䷖`,phase:`金`,palace:`乾`,generation:5,yangs:[2,2,2,2,2,1],name:`剥`},{binary:`100001`,id:`山雷颐`,sign:`䷚`,phase:`木`,palace:`巽`,generation:6,yangs:[1,2,2,2,2,1],name:`颐`},{binary:`010001`,id:`山水蒙`,sign:`䷃`,phase:`火`,palace:`离`,generation:4,yangs:[2,1,2,2,2,1],name:`蒙`},{binary:`110001`,id:`山泽损`,sign:`䷨`,phase:`土`,palace:`艮`,generation:3,yangs:[1,1,2,2,2,1],name:`损`},{binary:`001001`,id:`艮为山`,sign:`䷳`,phase:`土`,palace:`艮`,generation:0,yangs:[2,2,1,2,2,1],name:`艮`},{binary:`101001`,id:`山火贲`,sign:`䷕`,phase:`土`,palace:`艮`,generation:1,yangs:[1,2,1,2,2,1],name:`贲`},{binary:`011001`,id:`山风蛊`,sign:`䷑`,phase:`木`,palace:`巽`,generation:7,yangs:[2,1,1,2,2,1],name:`蛊`},{binary:`111001`,id:`山天大畜`,sign:`䷙`,phase:`土`,palace:`艮`,generation:2,yangs:[1,1,1,2,2,1],name:`大畜`},{binary:`000101`,id:`火地晋`,sign:`䷢`,phase:`金`,palace:`乾`,generation:6,yangs:[2,2,2,1,2,1],name:`晋`},{binary:`100101`,id:`火雷噬嗑`,sign:`䷔`,phase:`木`,palace:`巽`,generation:5,yangs:[1,2,2,1,2,1],name:`噬嗑`},{binary:`010101`,id:`火水未济`,sign:`䷿`,phase:`火`,palace:`离`,generation:3,yangs:[2,1,2,1,2,1],name:`未济`},{binary:`110101`,id:`火泽睽`,sign:`䷥`,phase:`土`,palace:`艮`,generation:4,yangs:[1,1,2,1,2,1],name:`睽`},{binary:`001101`,id:`火山旅`,sign:`䷷`,phase:`火`,palace:`离`,generation:1,yangs:[2,2,1,1,2,1],name:`旅`},{binary:`101101`,id:`离为火`,sign:`䷝`,phase:`火`,palace:`离`,generation:0,yangs:[1,2,1,1,2,1],name:`离`},{binary:`011101`,id:`火风鼎`,sign:`䷱`,phase:`火`,palace:`离`,generation:2,yangs:[2,1,1,1,2,1],name:`鼎`},{binary:`111101`,id:`火天大有`,sign:`䷍`,phase:`金`,palace:`乾`,generation:7,yangs:[1,1,1,1,2,1],name:`大有`},{binary:`000011`,id:`风地观`,sign:`䷓`,phase:`金`,palace:`乾`,generation:4,yangs:[2,2,2,2,1,1],name:`观`},{binary:`100011`,id:`风雷益`,sign:`䷩`,phase:`木`,palace:`巽`,generation:3,yangs:[1,2,2,2,1,1],name:`益`},{binary:`010011`,id:`风水涣`,sign:`䷺`,phase:`火`,palace:`离`,generation:5,yangs:[2,1,2,2,1,1],name:`涣`},{binary:`110011`,id:`风泽中孚`,sign:`䷼`,phase:`土`,palace:`艮`,generation:6,yangs:[1,1,2,2,1,1],name:`中孚`},{binary:`001011`,id:`风山渐`,sign:`䷴`,phase:`土`,palace:`艮`,generation:7,yangs:[2,2,1,2,1,1],name:`渐`},{binary:`101011`,id:`风火家人`,sign:`䷤`,phase:`木`,palace:`巽`,generation:2,yangs:[1,2,1,2,1,1],name:`家人`},{binary:`011011`,id:`巽为风`,sign:`䷸`,phase:`木`,palace:`巽`,generation:0,yangs:[2,1,1,2,1,1],name:`巽`},{binary:`111011`,id:`风天小畜`,sign:`䷈`,phase:`木`,palace:`巽`,generation:1,yangs:[1,1,1,2,1,1],name:`小畜`},{binary:`000111`,id:`天地否`,sign:`䷋`,phase:`金`,palace:`乾`,generation:3,yangs:[2,2,2,1,1,1],name:`否`},{binary:`100111`,id:`天雷无妄`,sign:`䷘`,phase:`木`,palace:`巽`,generation:4,yangs:[1,2,2,1,1,1],name:`无妄`},{binary:`010111`,id:`天水讼`,sign:`䷅`,phase:`火`,palace:`离`,generation:6,yangs:[2,1,2,1,1,1],name:`讼`},{binary:`110111`,id:`天泽履`,sign:`䷉`,phase:`土`,palace:`艮`,generation:5,yangs:[1,1,2,1,1,1],name:`履`},{binary:`001111`,id:`天山遁`,sign:`䷠`,phase:`金`,palace:`乾`,generation:2,yangs:[2,2,1,1,1,1],name:`遁`},{binary:`101111`,id:`天火同人`,sign:`䷌`,phase:`火`,palace:`离`,generation:7,yangs:[1,2,1,1,1,1],name:`同人`},{binary:`011111`,id:`天风姤`,sign:`䷫`,phase:`金`,palace:`乾`,generation:1,yangs:[2,1,1,1,1,1],name:`姤`},{binary:`111111`,id:`乾为天`,sign:`䷀`,phase:`金`,palace:`乾`,generation:0,yangs:[1,1,1,1,1,1],name:`乾`}],n=[{id:`坤`,binary:`000`,yangs:0,image:`地`,sign:`☷`,inner:[`未土`,`巳火`,`卯木`],outer:[`丑土`,`亥水`,`酉金`]},{id:`震`,binary:`100`,yangs:1,image:`雷`,sign:`☳`,inner:[`子水`,`寅木`,`辰土`],outer:[`午火`,`申金`,`戌土`]},{id:`坎`,binary:`010`,yangs:1,image:`水`,sign:`☵`,inner:[`寅木`,`辰土`,`午火`],outer:[`申金`,`戌土`,`子水`]},{id:`兑`,binary:`110`,yangs:2,image:`泽`,sign:`☱`,inner:[`巳火`,`卯木`,`丑土`],outer:[`亥水`,`酉金`,`未土`]},{id:`艮`,binary:`001`,yangs:1,image:`山`,sign:`☶`,inner:[`辰土`,`午火`,`申金`],outer:[`戌土`,`子水`,`寅木`]},{id:`离`,binary:`101`,yangs:2,image:`火`,sign:`☲`,inner:[`卯木`,`丑土`,`亥水`],outer:[`酉金`,`未土`,`巳火`]},{id:`巽`,binary:`011`,yangs:2,image:`风`,sign:`☴`,inner:[`丑土`,`亥水`,`酉金`],outer:[`未土`,`巳火`,`卯木`]},{id:`乾`,binary:`111`,yangs:3,image:`天`,sign:`☰`,inner:[`子水`,`寅木`,`辰土`],outer:[`午火`,`申金`,`戌土`]}];Object.freeze(e),Object.freeze(t),Object.freeze(n);const r=[{heavenlyStem:`甲`,gods:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{heavenlyStem:`乙`,gods:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{heavenlyStem:`丙`,gods:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{heavenlyStem:`丁`,gods:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{heavenlyStem:`戊`,gods:[`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`]},{heavenlyStem:`己`,gods:[`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`]},{heavenlyStem:`庚`,gods:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{heavenlyStem:`辛`,gods:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{heavenlyStem:`壬`,gods:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]},{heavenlyStem:`癸`,gods:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]}];Object.freeze(r);const i={乾:{inner:`甲`,outer:`壬`},坤:{inner:`乙`,outer:`癸`},兑:{inner:`丁`,outer:`丁`},坎:{inner:`戊`,outer:`戊`},艮:{inner:`丙`,outer:`丙`},离:{inner:`己`,outer:`己`},震:{inner:`庚`,outer:`庚`},巽:{inner:`辛`,outer:`辛`}};function a(e){let t=i[e.inner.id].inner,n=i[e.outer.id].outer;return[t,t,t,n,n,n]}const o=[5,0,1,2,3,4,3,2],s=[2,3,4,5,0,1,0,5];function c(e){return{host:o[e.generation],guest:s[e.generation]}}function l(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 u={乾:e=>l(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),兑:e=>l(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),坎:e=>l(e,`木`,`子孙`,`水`,`兄弟`,`金`,`父母`,`火`,`妻财`,`土`,`官鬼`),坤:e=>l(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),艮:e=>l(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),离:e=>l(e,`木`,`父母`,`土`,`子孙`,`水`,`官鬼`,`金`,`妻财`,`火`,`兄弟`),震:e=>l(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`),巽:e=>l(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`)};function d(e){let t=u[e.primary?e.primary.palace:e.palace];return[...e.inner.inner.map(t),...e.outer.outer.map(t)]}const f=[`老阴`,`少阳`,`少阴`,`老阳`],p=`交单拆重`,m=`×’”○`,h=[1,1,2,2],g=[0,1,0,1];var _=class e{static getName(e){return f[e]}static fromSymbol(t){let n=m.indexOf(t);return n===-1?null:new e(n)}static fromSymbolName(t){let n=p.indexOf(t);return n===-1?null:new e(n)}static fromName(t){let n=f.indexOf(t);return n===-1?null:new e(n)}static fromDigitString(t){let n=`0123`.indexOf(t);return n===-1?null:new e(n)}static fromTrigramField(t){let r=n.find(e=>e.id===t||e.yangs===t||e.binary===t||e.sign===t);return r?new e(r.yangs):null}yangs;polar;dynamic;changed;pattern;name;symbol;constructor(e,t=!1){if(e!==0&&e!==1&&e!==2&&e!==3)throw Error(`Count of yang must be 0, 1, 2 or 3`);if(this.yangs=e,this.changed=t,this.polar=g[e],this.dynamic=e===0||e===3,this.pattern=m[e],this.name=f[e],this.symbol=p[e],this.dynamic&&this.changed)throw Error(`Changed Yao should not be dynamic.`)}eq(e){return this.yangs===e.yangs}eqeqeq(e){return this.yangs===e.yangs&&this.changed===e.changed}clone(){return new e(this.yangs,this.changed)}toChanged(){return new e(h[this.yangs],this.dynamic)}};const v=[`初爻`,`二爻`,`三爻`,`四爻`,`五爻`,`上爻`],y=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`,`无妄`,`大壮`],b=[`否`,`泰`,`复`,`豫`,`贲`,`旅`,`困`,`节`],x=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`];var S=class r{static fromQuaternary(e){let t=e.split(``).map(_.fromDigitString);return t.every(e=>e!==null)?new r(t):null}static fromSymbolName(e){let t=e.split(``).map(_.fromSymbolName);return t.every(e=>e!==null)?new r(t):null}static fromYangCounts(e){try{return new r(e.map(e=>new _(e)))}catch{return null}}static fromId(e){let n=t.find(t=>t.id===e||t.id.slice(2)===e||t.id.startsWith(e)&&e.length>1);return n?r.fromYangCounts(n.yangs):null}static fromPalace(e){let n=t.find(t=>t.id[2]===e);return n?r.fromYangCounts(n.yangs):null}yaos;yangs;binary;id;name;sign;palace;phase;generation;palaceInfo;dynamic;changed;inner;outer;specialType;pure;kins;host;guest;primary;constructor(r,i=null){if(r.length!==6)throw Error(`Array length mismatch, A Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang`);if(r.some(e=>!(e instanceof _)))throw Error(`Invalid Arguments, Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang`);this.yaos=r.map(e=>e.clone()),this.binary=this.yaos.map(e=>e.polar).join(``);let o=t.find(e=>e.binary===this.binary);this.palace=o.palace,this.id=o.id,this.generation=o.generation,this.yangs=this.yaos.map(e=>e.yangs),this.phase=o.phase,this.name=o.name,this.sign=o.sign,this.palaceInfo=`${o.palace}宫(${o.phase})${e[o.generation]}`,this.dynamic=this.yaos.some(e=>e.dynamic||e.changed),this.changed=!!i,this.primary=i;let s=this.binary.slice(0,3),l=this.binary.slice(3);this.inner=n.find(e=>e.binary===s),this.outer=n.find(e=>e.binary===l);let u=d(this),f=a(this);this.kins=[...this.inner.inner.map((e,t)=>u[t]+f[t]+e),...this.outer.outer.map((e,t)=>u[t+3]+f[t+3]+e)];let p=c(this);this.host=p.host,this.guest=p.guest,y.includes(o.name)&&(this.specialType=`六冲`),b.includes(o.name)&&(this.specialType=`六合`),this.pure=x.includes(o.name)}toChanged(){if(!this.dynamic)return null;if(this.changed)throw Error(`The gram is already changed, cannot change again.`);return new r(this.yaos.map(e=>e.toChanged()),this)}clone(){return new r(this.yaos,this.primary)}toString(){return this.id}[Symbol.toPrimitive](){return this.id}};export{S as Hexagram,t as HexagramInfoTable,v as HexagramYaoOrder,e as PalaceOrderTable,r as SixGodTable,n as TrigramInfoTable,_ as Yao};
|
|
1
|
+
const e=[`本宫卦`,`一世卦`,`二世卦`,`三世卦`,`四世卦`,`五世卦`,`游魂卦`,`归魂卦`],t=[{二进制表示:`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,卦名:`乾`}],n=[{卦名:`坤`,二进制表示:`000`,阳数:0,象:`地`,符号:`☷`,内卦地支五行:[`未土`,`巳火`,`卯木`],外卦地支五行:[`丑土`,`亥水`,`酉金`]},{卦名:`震`,二进制表示:`100`,阳数:1,象:`雷`,符号:`☳`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]},{卦名:`坎`,二进制表示:`010`,阳数:1,象:`水`,符号:`☵`,内卦地支五行:[`寅木`,`辰土`,`午火`],外卦地支五行:[`申金`,`戌土`,`子水`]},{卦名:`兑`,二进制表示:`110`,阳数:2,象:`泽`,符号:`☱`,内卦地支五行:[`巳火`,`卯木`,`丑土`],外卦地支五行:[`亥水`,`酉金`,`未土`]},{卦名:`艮`,二进制表示:`001`,阳数:1,象:`山`,符号:`☶`,内卦地支五行:[`辰土`,`午火`,`申金`],外卦地支五行:[`戌土`,`子水`,`寅木`]},{卦名:`离`,二进制表示:`101`,阳数:2,象:`火`,符号:`☲`,内卦地支五行:[`卯木`,`丑土`,`亥水`],外卦地支五行:[`酉金`,`未土`,`巳火`]},{卦名:`巽`,二进制表示:`011`,阳数:2,象:`风`,符号:`☴`,内卦地支五行:[`丑土`,`亥水`,`酉金`],外卦地支五行:[`未土`,`巳火`,`卯木`]},{卦名:`乾`,二进制表示:`111`,阳数:3,象:`天`,符号:`☰`,内卦地支五行:[`子水`,`寅木`,`辰土`],外卦地支五行:[`午火`,`申金`,`戌土`]}];Object.freeze(e),Object.freeze(t),Object.freeze(n);const r=[{天干:`甲`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`乙`,六神:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{天干:`丙`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`丁`,六神:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{天干:`戊`,六神:[`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`]},{天干:`己`,六神:[`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`]},{天干:`庚`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`辛`,六神:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{天干:`壬`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]},{天干:`癸`,六神:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]}];Object.freeze(r);const i={乾:{inner:`甲`,outer:`壬`},坤:{inner:`乙`,outer:`癸`},兑:{inner:`丁`,outer:`丁`},坎:{inner:`戊`,outer:`戊`},艮:{inner:`丙`,outer:`丙`},离:{inner:`己`,outer:`己`},震:{inner:`庚`,outer:`庚`},巽:{inner:`辛`,outer:`辛`}};function a(e){let t=i[e.内卦.卦名].inner,n=i[e.外卦.卦名].outer;return[t,t,t,n,n,n]}const o=[5,0,1,2,3,4,3,2],s=[2,3,4,5,0,1,0,5];function c(e){return{世:o[e.八宫卦位],应:s[e.八宫卦位]}}function l(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 u={乾:e=>l(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),兑:e=>l(e,`金`,`兄弟`,`土`,`父母`,`木`,`妻财`,`火`,`官鬼`,`水`,`子孙`),坎:e=>l(e,`木`,`子孙`,`水`,`兄弟`,`金`,`父母`,`火`,`妻财`,`土`,`官鬼`),坤:e=>l(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),艮:e=>l(e,`土`,`兄弟`,`火`,`父母`,`木`,`官鬼`,`水`,`妻财`,`金`,`子孙`),离:e=>l(e,`木`,`父母`,`土`,`子孙`,`水`,`官鬼`,`金`,`妻财`,`火`,`兄弟`),震:e=>l(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`),巽:e=>l(e,`木`,`兄弟`,`水`,`父母`,`金`,`官鬼`,`火`,`子孙`,`土`,`妻财`)};function d(e){let t=u[e.本卦.宫];return[...e.内卦.内卦地支五行.map(t),...e.外卦.外卦地支五行.map(t)]}const f=[`老阴`,`少阳`,`少阴`,`老阳`],p=[1,1,2,2];var m=class e{static 从单拆重交创建(t){let n=`交单拆重`.indexOf(t);return n===-1?null:new e(n)}static 从名称创建(t){let n=f.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 r=n.find(e=>e.卦名===t||e.阳数===t||e.二进制表示===t||e.符号===t);return r?new e(r.阳数):null}#e;#t;get 阳数(){return this.#e}get 动静状态(){return this.#t}get 阴阳(){return`阴阳阴阳`[this.#e]}get 名称(){return f[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(p[this.#e],2):this}};const h=[`初爻`,`二爻`,`三爻`,`四爻`,`五爻`,`上爻`],g=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`,`无妄`,`大壮`],_=[`否`,`泰`,`复`,`豫`,`贲`,`旅`,`困`,`节`],v=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`];var y=class r{static 从阳数字符串创建(e){if(e.length!==6)return null;let t=e.split(``).map(m.从阳数字符串创建);return t.every(e=>e!==null)?new r(t):null}static 从单拆重交创建(e){if(e.length!==6)return null;let t=e.split(``).map(m.从单拆重交创建);return t.every(e=>e!==null)?new r(t):null}static 从阳数创建(e){try{return new r(e.map(e=>new m(e)))}catch{return null}}static 从卦名创建(e){let n=t.find(t=>t.卦名===e||t.全名===e||t.全名.slice(2)===e||t.全名.startsWith(e)&&e.length>1);return n?new r(n.二进制表示.split(``).map(e=>new m(e===`1`?1:2))):null}#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;constructor(e,r,i){if(e.length!==6||e.some(e=>!(e instanceof m)))throw TypeError(`第一个参数必须是6个爻对象`);if(r===0||r===2){if(e.some(e=>e.阳数===3||e.阳数===0))throw TypeError(`静卦和动已变卦不能有老阳老阴`)}else if(r===1){if(e.every(e=>e.阳数!==3&&e.阳数!==0))throw TypeError(`动未变卦必须有老阳老阴`)}else if(r===void 0)r=+!!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=t.find(e=>e.二进制表示===this.二进制表示),this.#r=r,this.#i=i??this;let o=this.#n.slice(0,3),s=this.#n.slice(3);this.#a=n.find(e=>e.二进制表示===o),this.#o=n.find(e=>e.二进制表示===s);let l=d(this),u=a(this),f=this.#a.内卦地支五行.map((e,t)=>l[t+0]+u[t+0]+e),p=this.#o.外卦地支五行.map((e,t)=>l[t+3]+u[t+3]+e);this.#l=[...f,...p];let h=c(this);this.#u=h.世,this.#d=h.应,g.includes(this.#t.卦名)&&(this.#s=`六冲`),_.includes(this.#t.卦名)&&(this.#s=`六合`),this.#c=v.includes(this.#t.卦名)}get 六爻(){return[...this.#e]}get 阳数(){return this.#e.map(e=>e.阳数)}get 宫位信息(){return`${this.#t.宫}宫(${this.#t.五行})${e[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 r(this.#e.map(e=>e.变()),2,this):this}克隆(){return new r(this.#e,this.#r,this.#i===this?void 0:this.#i)}toString(){return this.全名}[Symbol.toPrimitive](){return this.全名}};export{n as 八卦表,e as 八宫卦位顺序表,t as 六十四卦表,y as 六爻卦,r as 六神表,m as 爻,h as 爻位};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["_mappers","PalaceOrderTable","HexagramInfoTable","TrigramInfoTable","SixGodTable","_mappers$1","setupHeavenStem","inner","hexagram","outer","_h","_g","setupHostGuest","map","v","phase0","kin0","phase1","kin1","phase2","kin2","phase3","kin3","phase4","kin4","_mappers","setupSixKins","mapper","_names","_symbolNames","_patterns","_change","_countToPolar","Yao","yangs","index","symbol","symbolName","name","digit","trigram","value","isChanged","other","HexagramYaoOrder","_scattering","_gathering","_pure","Hexagram","yaos","quaternary","y","symbolNames","counts","c","exist","h","id","palace","a","info","primary","ub","lb","t","sixKins","hs","i","hg"],"sources":["../src/core/common.ts","../src/core/six-gods.ts","../src/core/heaven-stem.ts","../src/core/host-guest.ts","../src/core/six-kins.ts","../src/classes/yao.ts","../src/classes/hexagram.ts"],"sourcesContent":["export const PalaceOrderTable = ['本宫卦', '一世卦', '二世卦', '三世卦', '四世卦', '五世卦', '游魂卦', '归魂卦'];\n\nexport type BranchPhase =\n | '子水'\n | '寅木'\n | '辰土'\n | '午火'\n | '申金'\n | '戌土'\n | '寅木'\n | '辰土'\n | '午火'\n | '申金'\n | '戌土'\n | '子水'\n | '辰土'\n | '午火'\n | '申金'\n | '戌土'\n | '子水'\n | '寅木'\n | '子水'\n | '寅木'\n | '辰土'\n | '午火'\n | '申金'\n | '戌土'\n | '丑土'\n | '亥水'\n | '酉金'\n | '未土'\n | '巳火'\n | '卯木'\n | '卯木'\n | '丑土'\n | '亥水'\n | '酉金'\n | '未土'\n | '巳火'\n | '未土'\n | '巳火'\n | '卯木'\n | '丑土'\n | '亥水'\n | '酉金'\n | '巳火'\n | '卯木'\n | '丑土'\n | '亥水'\n | '酉金'\n | '未土';\n\nexport type Phase = '金' | '木' | '水' | '火' | '土';\n\nexport type HeavenStem = '甲' | '乙' | '丙' | '丁' | '戊' | '己' | '庚' | '辛' | '壬' | '癸';\n\nexport type TrigramName = '乾' | '兑' | '离' | '震' | '巽' | '坎' | '艮' | '坤';\n\nexport interface HexagramInfo {\n /**\n * Binary representation of the hexagram, where 0 image a yin line and 1 image a yang line. The lines are ordered from the bottom (first line) to the top (sixth line).\n */\n binary: string;\n\n /**\n * Binary to yangs.\n * e.g. `'000000'` 坤为地 -> `[2, 2, 2, 2, 2, 2]`, 2 means Shao Yin.\n */\n yangs: number[];\n\n /**\n * Full name of the hexagram, which includes the names of the upper and lower trigrams.\n *\n * For example, \"坤为地\", \"地雷复\", \"地水师\", etc.\n */\n id: string;\n\n /**\n * Name of the hexagram.\n *\n * For example, \"地\", \"复\", \"师\", etc.\n */\n name: string;\n\n /**\n * 64 hexagrams correspond to Unicode characters.\n * For example, \"䷁\" (U+4DC1) image the hexagram \"坤为地\".\n */\n sign: string;\n\n /**\n * Five Phases (五行) associated with the hexagram, which can be one of \"金\" (Metal), \"木\" (Wood), \"水\" (Water), \"火\" (Fire), or \"土\" (Earth).\n * It indicates the development and state of things.\n */\n phase: Phase;\n\n /**\n * Eight Palaces (八宫) to which the hexagram belongs.\n * 'Palace' is not a physical palace, but rather a category or family of hexagrams.\n */\n palace: TrigramName;\n\n /**\n * Index of the hexagram within its palace, ranging from 0 to 7. This index helps to identify the specific hexagram within the context of its palace.\n *\n * - 本宫卦 Original Palace\n * - 一世卦 First Generation, 1st yao is changed\n * - 二世卦 Second Generation, 1st and 2nd yao is changed\n * - 三世卦 Third Generation, 1st, 2nd and 3rd yao is changed\n * - 四世卦 Fourth Generation, 1st, 2nd, 3rd and 4th yao is changed\n * - 五世卦 Fifth Generation, 1st, 2nd, 3rd, 4th and 5th yao is changed\n * - 游魂卦 Wandering Soul, restores 4th yao of Fifth Generation\n * - 归魂卦 Returning Soul, restores lower 3 yaos of Fifth Generation\n */\n generation: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n}\n\nexport const HexagramInfoTable: readonly HexagramInfo[] = [\n {\n binary: '000000',\n id: '坤为地',\n sign: '䷁',\n phase: '土',\n palace: '坤',\n generation: 0,\n yangs: [2, 2, 2, 2, 2, 2],\n name: '坤',\n },\n {\n binary: '100000',\n id: '地雷复',\n sign: '䷗',\n phase: '土',\n palace: '坤',\n generation: 1,\n yangs: [1, 2, 2, 2, 2, 2],\n name: '复',\n },\n {\n binary: '010000',\n id: '地水师',\n sign: '䷆',\n phase: '水',\n palace: '坎',\n generation: 7,\n yangs: [2, 1, 2, 2, 2, 2],\n name: '师',\n },\n {\n binary: '110000',\n id: '地泽临',\n sign: '䷒',\n phase: '土',\n palace: '坤',\n generation: 2,\n yangs: [1, 1, 2, 2, 2, 2],\n name: '临',\n },\n {\n binary: '001000',\n id: '地山谦',\n sign: '䷎',\n phase: '土',\n palace: '兑',\n generation: 5,\n yangs: [2, 2, 1, 2, 2, 2],\n name: '谦',\n },\n {\n binary: '101000',\n id: '地火明夷',\n sign: '䷣',\n phase: '水',\n palace: '坎',\n generation: 6,\n yangs: [1, 2, 1, 2, 2, 2],\n name: '明夷',\n },\n {\n binary: '011000',\n id: '地风升',\n sign: '䷭',\n phase: '木',\n palace: '震',\n generation: 4,\n yangs: [2, 1, 1, 2, 2, 2],\n name: '升',\n },\n {\n binary: '111000',\n id: '地天泰',\n sign: '䷊',\n phase: '土',\n palace: '坤',\n generation: 3,\n yangs: [1, 1, 1, 2, 2, 2],\n name: '泰',\n },\n {\n binary: '000100',\n id: '雷地豫',\n sign: '䷏',\n phase: '木',\n palace: '震',\n generation: 1,\n yangs: [2, 2, 2, 1, 2, 2],\n name: '豫',\n },\n {\n binary: '100100',\n id: '震为雷',\n sign: '䷲',\n phase: '木',\n palace: '震',\n generation: 0,\n yangs: [1, 2, 2, 1, 2, 2],\n name: '震',\n },\n {\n binary: '010100',\n id: '雷水解',\n sign: '䷧',\n phase: '木',\n palace: '震',\n generation: 2,\n yangs: [2, 1, 2, 1, 2, 2],\n name: '解',\n },\n {\n binary: '110100',\n id: '雷泽归妹',\n sign: '䷵',\n phase: '金',\n palace: '兑',\n generation: 7,\n yangs: [1, 1, 2, 1, 2, 2],\n name: '归妹',\n },\n {\n binary: '001100',\n id: '雷山小过',\n sign: '䷽',\n phase: '金',\n palace: '兑',\n generation: 6,\n yangs: [2, 2, 1, 1, 2, 2],\n name: '小过',\n },\n {\n binary: '101100',\n id: '雷火丰',\n sign: '䷶',\n phase: '水',\n palace: '坎',\n generation: 5,\n yangs: [1, 2, 1, 1, 2, 2],\n name: '丰',\n },\n {\n binary: '011100',\n id: '雷风恒',\n sign: '䷟',\n phase: '木',\n palace: '震',\n generation: 3,\n yangs: [2, 1, 1, 1, 2, 2],\n name: '恒',\n },\n {\n binary: '111100',\n id: '雷天大壮',\n sign: '䷡',\n phase: '土',\n palace: '坤',\n generation: 4,\n yangs: [1, 1, 1, 1, 2, 2],\n name: '大壮',\n },\n {\n binary: '000010',\n id: '水地比',\n sign: '䷇',\n phase: '土',\n palace: '坤',\n generation: 7,\n yangs: [2, 2, 2, 2, 1, 2],\n name: '比',\n },\n {\n binary: '100010',\n id: '水雷屯',\n sign: '䷂',\n phase: '水',\n palace: '坎',\n generation: 2,\n yangs: [1, 2, 2, 2, 1, 2],\n name: '屯',\n },\n {\n binary: '010010',\n id: '坎为水',\n sign: '䷜',\n phase: '水',\n palace: '坎',\n generation: 0,\n yangs: [2, 1, 2, 2, 1, 2],\n name: '坎',\n },\n {\n binary: '110010',\n id: '水泽节',\n sign: '䷻',\n phase: '水',\n palace: '坎',\n generation: 1,\n yangs: [1, 1, 2, 2, 1, 2],\n name: '节',\n },\n {\n binary: '001010',\n id: '水山蹇',\n sign: '䷦',\n phase: '金',\n palace: '兑',\n generation: 4,\n yangs: [2, 2, 1, 2, 1, 2],\n name: '蹇',\n },\n {\n binary: '101010',\n id: '水火既济',\n sign: '䷾',\n phase: '水',\n palace: '坎',\n generation: 3,\n yangs: [1, 2, 1, 2, 1, 2],\n name: '既济',\n },\n {\n binary: '011010',\n id: '水风井',\n sign: '䷯',\n phase: '木',\n palace: '震',\n generation: 5,\n yangs: [2, 1, 1, 2, 1, 2],\n name: '井',\n },\n {\n binary: '111010',\n id: '水天需',\n sign: '䷄',\n phase: '土',\n palace: '坤',\n generation: 6,\n yangs: [1, 1, 1, 2, 1, 2],\n name: '需',\n },\n {\n binary: '000110',\n id: '泽地萃',\n sign: '䷬',\n phase: '金',\n palace: '兑',\n generation: 2,\n yangs: [2, 2, 2, 1, 1, 2],\n name: '萃',\n },\n {\n binary: '100110',\n id: '泽雷随',\n sign: '䷐',\n phase: '木',\n palace: '震',\n generation: 7,\n yangs: [1, 2, 2, 1, 1, 2],\n name: '随',\n },\n {\n binary: '010110',\n id: '泽水困',\n sign: '䷮',\n phase: '金',\n palace: '兑',\n generation: 1,\n yangs: [2, 1, 2, 1, 1, 2],\n name: '困',\n },\n {\n binary: '110110',\n id: '兑为泽',\n sign: '䷹',\n phase: '金',\n palace: '兑',\n generation: 0,\n yangs: [1, 1, 2, 1, 1, 2],\n name: '兑',\n },\n {\n binary: '001110',\n id: '泽山咸',\n sign: '䷞',\n phase: '金',\n palace: '兑',\n generation: 3,\n yangs: [2, 2, 1, 1, 1, 2],\n name: '咸',\n },\n {\n binary: '101110',\n id: '泽火革',\n sign: '䷰',\n phase: '水',\n palace: '坎',\n generation: 4,\n yangs: [1, 2, 1, 1, 1, 2],\n name: '革',\n },\n {\n binary: '011110',\n id: '泽风大过',\n sign: '䷛',\n phase: '木',\n palace: '震',\n generation: 6,\n yangs: [2, 1, 1, 1, 1, 2],\n name: '大过',\n },\n {\n binary: '111110',\n id: '泽天夬',\n sign: '䷪',\n phase: '土',\n palace: '坤',\n generation: 5,\n yangs: [1, 1, 1, 1, 1, 2],\n name: '夬',\n },\n {\n binary: '000001',\n id: '山地剥',\n sign: '䷖',\n phase: '金',\n palace: '乾',\n generation: 5,\n yangs: [2, 2, 2, 2, 2, 1],\n name: '剥',\n },\n {\n binary: '100001',\n id: '山雷颐',\n sign: '䷚',\n phase: '木',\n palace: '巽',\n generation: 6,\n yangs: [1, 2, 2, 2, 2, 1],\n name: '颐',\n },\n {\n binary: '010001',\n id: '山水蒙',\n sign: '䷃',\n phase: '火',\n palace: '离',\n generation: 4,\n yangs: [2, 1, 2, 2, 2, 1],\n name: '蒙',\n },\n {\n binary: '110001',\n id: '山泽损',\n sign: '䷨',\n phase: '土',\n palace: '艮',\n generation: 3,\n yangs: [1, 1, 2, 2, 2, 1],\n name: '损',\n },\n {\n binary: '001001',\n id: '艮为山',\n sign: '䷳',\n phase: '土',\n palace: '艮',\n generation: 0,\n yangs: [2, 2, 1, 2, 2, 1],\n name: '艮',\n },\n {\n binary: '101001',\n id: '山火贲',\n sign: '䷕',\n phase: '土',\n palace: '艮',\n generation: 1,\n yangs: [1, 2, 1, 2, 2, 1],\n name: '贲',\n },\n {\n binary: '011001',\n id: '山风蛊',\n sign: '䷑',\n phase: '木',\n palace: '巽',\n generation: 7,\n yangs: [2, 1, 1, 2, 2, 1],\n name: '蛊',\n },\n {\n binary: '111001',\n id: '山天大畜',\n sign: '䷙',\n phase: '土',\n palace: '艮',\n generation: 2,\n yangs: [1, 1, 1, 2, 2, 1],\n name: '大畜',\n },\n {\n binary: '000101',\n id: '火地晋',\n sign: '䷢',\n phase: '金',\n palace: '乾',\n generation: 6,\n yangs: [2, 2, 2, 1, 2, 1],\n name: '晋',\n },\n {\n binary: '100101',\n id: '火雷噬嗑',\n sign: '䷔',\n phase: '木',\n palace: '巽',\n generation: 5,\n yangs: [1, 2, 2, 1, 2, 1],\n name: '噬嗑',\n },\n {\n binary: '010101',\n id: '火水未济',\n sign: '䷿',\n phase: '火',\n palace: '离',\n generation: 3,\n yangs: [2, 1, 2, 1, 2, 1],\n name: '未济',\n },\n {\n binary: '110101',\n id: '火泽睽',\n sign: '䷥',\n phase: '土',\n palace: '艮',\n generation: 4,\n yangs: [1, 1, 2, 1, 2, 1],\n name: '睽',\n },\n {\n binary: '001101',\n id: '火山旅',\n sign: '䷷',\n phase: '火',\n palace: '离',\n generation: 1,\n yangs: [2, 2, 1, 1, 2, 1],\n name: '旅',\n },\n {\n binary: '101101',\n id: '离为火',\n sign: '䷝',\n phase: '火',\n palace: '离',\n generation: 0,\n yangs: [1, 2, 1, 1, 2, 1],\n name: '离',\n },\n {\n binary: '011101',\n id: '火风鼎',\n sign: '䷱',\n phase: '火',\n palace: '离',\n generation: 2,\n yangs: [2, 1, 1, 1, 2, 1],\n name: '鼎',\n },\n {\n binary: '111101',\n id: '火天大有',\n sign: '䷍',\n phase: '金',\n palace: '乾',\n generation: 7,\n yangs: [1, 1, 1, 1, 2, 1],\n name: '大有',\n },\n {\n binary: '000011',\n id: '风地观',\n sign: '䷓',\n phase: '金',\n palace: '乾',\n generation: 4,\n yangs: [2, 2, 2, 2, 1, 1],\n name: '观',\n },\n {\n binary: '100011',\n id: '风雷益',\n sign: '䷩',\n phase: '木',\n palace: '巽',\n generation: 3,\n yangs: [1, 2, 2, 2, 1, 1],\n name: '益',\n },\n {\n binary: '010011',\n id: '风水涣',\n sign: '䷺',\n phase: '火',\n palace: '离',\n generation: 5,\n yangs: [2, 1, 2, 2, 1, 1],\n name: '涣',\n },\n {\n binary: '110011',\n id: '风泽中孚',\n sign: '䷼',\n phase: '土',\n palace: '艮',\n generation: 6,\n yangs: [1, 1, 2, 2, 1, 1],\n name: '中孚',\n },\n {\n binary: '001011',\n id: '风山渐',\n sign: '䷴',\n phase: '土',\n palace: '艮',\n generation: 7,\n yangs: [2, 2, 1, 2, 1, 1],\n name: '渐',\n },\n {\n binary: '101011',\n id: '风火家人',\n sign: '䷤',\n phase: '木',\n palace: '巽',\n generation: 2,\n yangs: [1, 2, 1, 2, 1, 1],\n name: '家人',\n },\n {\n binary: '011011',\n id: '巽为风',\n sign: '䷸',\n phase: '木',\n palace: '巽',\n generation: 0,\n yangs: [2, 1, 1, 2, 1, 1],\n name: '巽',\n },\n {\n binary: '111011',\n id: '风天小畜',\n sign: '䷈',\n phase: '木',\n palace: '巽',\n generation: 1,\n yangs: [1, 1, 1, 2, 1, 1],\n name: '小畜',\n },\n {\n binary: '000111',\n id: '天地否',\n sign: '䷋',\n phase: '金',\n palace: '乾',\n generation: 3,\n yangs: [2, 2, 2, 1, 1, 1],\n name: '否',\n },\n {\n binary: '100111',\n id: '天雷无妄',\n sign: '䷘',\n phase: '木',\n palace: '巽',\n generation: 4,\n yangs: [1, 2, 2, 1, 1, 1],\n name: '无妄',\n },\n {\n binary: '010111',\n id: '天水讼',\n sign: '䷅',\n phase: '火',\n palace: '离',\n generation: 6,\n yangs: [2, 1, 2, 1, 1, 1],\n name: '讼',\n },\n {\n binary: '110111',\n id: '天泽履',\n sign: '䷉',\n phase: '土',\n palace: '艮',\n generation: 5,\n yangs: [1, 1, 2, 1, 1, 1],\n name: '履',\n },\n {\n binary: '001111',\n id: '天山遁',\n sign: '䷠',\n phase: '金',\n palace: '乾',\n generation: 2,\n yangs: [2, 2, 1, 1, 1, 1],\n name: '遁',\n },\n {\n binary: '101111',\n id: '天火同人',\n sign: '䷌',\n phase: '火',\n palace: '离',\n generation: 7,\n yangs: [1, 2, 1, 1, 1, 1],\n name: '同人',\n },\n {\n binary: '011111',\n id: '天风姤',\n sign: '䷫',\n phase: '金',\n palace: '乾',\n generation: 1,\n yangs: [2, 1, 1, 1, 1, 1],\n name: '姤',\n },\n {\n binary: '111111',\n id: '乾为天',\n sign: '䷀',\n phase: '金',\n palace: '乾',\n generation: 0,\n yangs: [1, 1, 1, 1, 1, 1],\n name: '乾',\n },\n];\n\nexport interface TrigramInfo {\n /**\n * Presents the trigram as a 3-digit binary string. 1 image a Yang line and 0 image a Yin line.\n *\n * For example, \"111\" for 乾, \"100\" for 震, etc.\n */\n binary: `${0 | 1}${0 | 1}${0 | 1}`;\n\n /**\n * How many Yang Yaos are in the trigram, such as 0 for 坤, 1 for 震, 2 for 兑, etc.\n */\n yangs: 0 | 1 | 2 | 3;\n\n /**\n * Name of the trigram in Chinese, such as \"乾\", \"坤\", \"震\", etc.\n */\n id: string;\n\n /**\n * \"象\", means what the trigram represents in Chinese, such as \"天\", \"地\", \"水\", etc.\n */\n image: string;\n\n /**\n * Unicode character representing the trigram, such as \"☰\" for 乾, \"☷\" for 坤, etc.\n */\n sign: string;\n\n /**\n * Earth Stem and Five Phases when this gram performs a inner gram of a hexagram.\n * @see 《增删卜易·浑天甲子章》\n */\n inner: BranchPhase[];\n\n /**\n * Earth Stem and Five Phases when this gram performs a outer gram of a hexagram.\n * @see 《增删卜易·浑天甲子章》\n */\n outer: BranchPhase[];\n}\n\n/**\n * List of all trigrams in the I Ching, with their binary representation, number of yang lines, name, what they represent, and their corresponding sign.\n */\nexport const TrigramInfoTable: readonly TrigramInfo[] = [\n {\n id: '坤',\n binary: '000',\n yangs: 0,\n image: '地',\n sign: '☷',\n inner: ['未土', '巳火', '卯木'],\n outer: ['丑土', '亥水', '酉金'],\n },\n {\n id: '震',\n binary: '100',\n yangs: 1,\n image: '雷',\n sign: '☳',\n inner: ['子水', '寅木', '辰土'],\n outer: ['午火', '申金', '戌土'],\n },\n {\n id: '坎',\n binary: '010',\n yangs: 1,\n image: '水',\n sign: '☵',\n inner: ['寅木', '辰土', '午火'],\n outer: ['申金', '戌土', '子水'],\n },\n {\n id: '兑',\n binary: '110',\n yangs: 2,\n image: '泽',\n sign: '☱',\n inner: ['巳火', '卯木', '丑土'],\n outer: ['亥水', '酉金', '未土'],\n },\n {\n id: '艮',\n binary: '001',\n yangs: 1,\n image: '山',\n sign: '☶',\n inner: ['辰土', '午火', '申金'],\n outer: ['戌土', '子水', '寅木'],\n },\n {\n id: '离',\n binary: '101',\n yangs: 2,\n image: '火',\n sign: '☲',\n inner: ['卯木', '丑土', '亥水'],\n outer: ['酉金', '未土', '巳火'],\n },\n {\n id: '巽',\n binary: '011',\n yangs: 2,\n image: '风',\n sign: '☴',\n inner: ['丑土', '亥水', '酉金'],\n outer: ['未土', '巳火', '卯木'],\n },\n {\n id: '乾',\n binary: '111',\n yangs: 3,\n image: '天',\n sign: '☰',\n inner: ['子水', '寅木', '辰土'],\n outer: ['午火', '申金', '戌土'],\n },\n];\n\nObject.freeze(PalaceOrderTable);\nObject.freeze(HexagramInfoTable);\nObject.freeze(TrigramInfoTable);\n","export type SixGod = '玄武' | '白虎' | '螣蛇' | '勾陈' | '朱雀' | '青龙';\n\nexport interface SixGodInfo {\n /**\n * The Heavenly Stem associated with the Six Gods in this order.\n * They are '甲乙丙丁戊己庚辛壬癸' in sequence.\n * Different Heavenly Stems correspond to different orders of Six Gods.\n */\n heavenlyStem: string;\n\n /**\n * Six Gods contains '青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'.\n * Different Heavenly Stems correspond to different orders of Six Gods.\n *\n * Six Gods are all auspicious symbols and protectors.\n * - 青龙: Azure Loong, the God in the East worshipped by the Taoists.\n * - 朱雀: Vermilion Bird, its body is covered with eternal fire.\n * - 白虎: White Tiger, as white as snow. If the emperor is not cruel and tyrannical, the White Tiger will appear.\n * - 玄武:Black Tortoise, a spiritual creature formed by the combination of a tortoise and a snake.\n * - 螣蛇: Flying Serpent, a limbless divine serpent that can summon clouds and mist and roam within them.\n * - 勾陈: Gouchen, Also considered as 麒麟 Kylin. It has a body like a musk deer, a tail like that of a dragon, dragon scales, and a single horn.\n */\n gods: SixGod[];\n}\n\n/**\n * @see 《增删卜易·六神章》\n */\nexport const SixGodTable: readonly SixGodInfo[] = [\n {\n heavenlyStem: '甲',\n gods: ['青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'] as SixGod[],\n },\n {\n heavenlyStem: '乙',\n gods: ['青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'] as SixGod[],\n },\n {\n heavenlyStem: '丙',\n gods: ['朱雀', '勾陈', '螣蛇', '白虎', '玄武', '青龙'] as SixGod[],\n },\n {\n heavenlyStem: '丁',\n gods: ['朱雀', '勾陈', '螣蛇', '白虎', '玄武', '青龙'] as SixGod[],\n },\n {\n heavenlyStem: '戊',\n gods: ['勾陈', '螣蛇', '白虎', '玄武', '青龙', '朱雀'] as SixGod[],\n },\n {\n heavenlyStem: '己',\n gods: ['螣蛇', '白虎', '玄武', '青龙', '朱雀', '勾陈'] as SixGod[],\n },\n {\n heavenlyStem: '庚',\n gods: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '螣蛇'] as SixGod[],\n },\n {\n heavenlyStem: '辛',\n gods: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '螣蛇'] as SixGod[],\n },\n {\n heavenlyStem: '壬',\n gods: ['玄武', '青龙', '朱雀', '勾陈', '螣蛇', '白虎'] as SixGod[],\n },\n {\n heavenlyStem: '癸',\n gods: ['玄武', '青龙', '朱雀', '勾陈', '螣蛇', '白虎'] as SixGod[],\n },\n];\n\nObject.freeze(SixGodTable);\n","import type { Hexagram } from '../classes/hexagram.js';\nimport { HeavenStem } from './common.js';\n\n`\n野鹤曰:此为多事之论也。鬼谷三才论舍爻辞,以五行而定祸福者,乃用地支。既用地支,不\n得不以天干为配,未闻以天干而定吉凶,以天干配地支者,欲全用周天甲子,卦又止于四十八爻,\n不得不分晰焉。\n所以乾之内卦用甲,坤之内卦用乙,乃十干之首;乾之外卦用壬,坤之外卦用癸,皆十干之尾。\n乾立内卦用子,与坤之外卦相合;坤之内卦用未,与乾之外卦相合。二老上下相媾,阴阳磨荡,中\n包六子。甲乙之次者丙丁,用之于少男少女,艮与兑也;戊己用之于中男中女,坎与离也;庚辛用\n之于长男长女,震与巽也,以全上下干支。此乃配偶之法也,故谓之浑天甲子。\n而,祸福吉凶,皆地支生克制化、克合刑冲以判之。今若以天干而判休囚,则每卦皆宜用也,\n何独于此?况此小畜之蛊,五爻朱雀为文书,动临巳火,变出子水文书,而世爻又临子水父母,又\n为文书,酉日生之,化丑合之,叠叠文书,旺动于卦中,即非干支相合,亦难说无成。余故曰:此\n多事之论也。\n`;\n\nconst _mappers: Record<string, { inner: HeavenStem; outer: HeavenStem }> = {\n 乾: { inner: '甲', outer: '壬' },\n 坤: { inner: '乙', outer: '癸' },\n 兑: { inner: '丁', outer: '丁' },\n 坎: { inner: '戊', outer: '戊' },\n 艮: { inner: '丙', outer: '丙' },\n 离: { inner: '己', outer: '己' },\n 震: { inner: '庚', outer: '庚' },\n 巽: { inner: '辛', outer: '辛' },\n};\nexport function setupHeavenStem(hexagram: Hexagram): HeavenStem[] {\n const inner = _mappers[hexagram.inner.id].inner;\n const outer = _mappers[hexagram.outer.id].outer;\n return [inner, inner, inner, outer, outer, outer];\n}\n","import type { Hexagram } from '../classes/hexagram.js';\n`\n世应章\n乾为天:世在六爻;天风姤:世在初爻;天山遁:世在二爻;火地晋:世退在四爻;\n天地否:世在三爻;风地观:世在四爻;山地剥:世在五爻;火天大有:世退在三爻;\n隔世爻两位,即是应爻。余卦仿此。\n`;\n\nconst _h = [5, 0, 1, 2, 3, 4, 3, 2];\nconst _g = [2, 3, 4, 5, 0, 1, 0, 5]; // _h.map((v) => (v + 3) % 6);\n/**\n * @see 《增删卜易·世应章》\n */\nexport function setupHostGuest(hexagram: Hexagram): { host: number; guest: number } {\n return {\n host: _h[hexagram.generation],\n guest: _g[hexagram.generation],\n };\n}\n","import { Hexagram } from '../classes/hexagram.js';\nimport { Phase, BranchPhase } from './common.js';\n\nexport type Kin = '父母' | '子孙' | '妻财' | '官鬼' | '兄弟';\n\n`\n六亲歌章\n生我者为父母,我生者为子孙,我克者为妻财,克我者为官鬼,比和者为兄弟。\n乾兑金兄土父传,木财火鬼水子源。(乾兑两宫,八卦俱属金)\n坎宫木子兄属水,金父火财土为鬼。(坎宫属水)\n坤艮土兄火为父,木鬼水财金子路。(坤艮两宫,八卦俱属土)\n离宫木父土子孙,水鬼金财火弟兄。(离宫属火)\n震巽木兄水父母,金鬼火子财是土。(震巽两宫,八卦俱属木)\n`;\n/**\n * Returns kins.\n * @param v inner outer extracted from trigram\n * @param phase 金木水火土\n * @param kin 六亲\n */\nfunction map(\n v: BranchPhase,\n phase0: Phase,\n kin0: Kin,\n phase1: Phase,\n kin1: Kin,\n phase2: Phase,\n kin2: Kin,\n phase3: Phase,\n kin3: Kin,\n phase4: Phase,\n kin4: Kin,\n): Kin {\n if (v.includes(phase0)) {\n return kin0;\n }\n if (v.includes(phase1)) {\n return kin1;\n }\n if (v.includes(phase2)) {\n return kin2;\n }\n if (v.includes(phase3)) {\n return kin3;\n }\n if (v.includes(phase4)) {\n return kin4;\n }\n throw new Error(`No BranchPhase[${v}] matches phase[${phase0},${phase1},${phase2},${phase3},${phase4}]`);\n}\n\nconst _mappers: Record<string, (sp: BranchPhase) => Kin> = {\n 乾: (v: BranchPhase) => map(v, '金', '兄弟', '土', '父母', '木', '妻财', '火', '官鬼', '水', '子孙'),\n 兑: (v: BranchPhase) => map(v, '金', '兄弟', '土', '父母', '木', '妻财', '火', '官鬼', '水', '子孙'),\n 坎: (v: BranchPhase) => map(v, '木', '子孙', '水', '兄弟', '金', '父母', '火', '妻财', '土', '官鬼'),\n 坤: (v: BranchPhase) => map(v, '土', '兄弟', '火', '父母', '木', '官鬼', '水', '妻财', '金', '子孙'),\n 艮: (v: BranchPhase) => map(v, '土', '兄弟', '火', '父母', '木', '官鬼', '水', '妻财', '金', '子孙'),\n 离: (v: BranchPhase) => map(v, '木', '父母', '土', '子孙', '水', '官鬼', '金', '妻财', '火', '兄弟'),\n 震: (v: BranchPhase) => map(v, '木', '兄弟', '水', '父母', '金', '官鬼', '火', '子孙', '土', '妻财'),\n 巽: (v: BranchPhase) => map(v, '木', '兄弟', '水', '父母', '金', '官鬼', '火', '子孙', '土', '妻财'),\n};\n\n/**\n * Changed gram's kins is borrowed from the primary gram.\n * @see 《增删卜易·六亲歌章》\n * @param hexagram the gram wait to be setup.\n */\nexport function setupSixKins(hexagram: Hexagram): Kin[] {\n const mapper = _mappers[hexagram.primary ? hexagram.primary.palace : hexagram.palace];\n return [...hexagram.inner.inner.map(mapper), ...hexagram.outer.outer.map(mapper)];\n}\n","import { TrigramInfoTable } from '../core/common.js';\n\nconst _names = ['老阴', '少阳', '少阴', '老阳'] as const;\nconst _symbolNames = '交单拆重' as const;\nconst _patterns = '×’”○' as const;\nconst _digits = '0123' as const;\nconst _change = [1, 1, 2, 2] as const;\nconst _countToPolar = [0, 1, 0, 1] as const;\n\nexport class Yao {\n // #region static methods\n /**\n * Returns 老阴、老阳、少阴、少阳\n */\n static getName(yangs: number) {\n return _names[yangs];\n }\n\n /**\n * Support creating a Yao from various types of input:\n * - A symbol representing the Yao (e.g. '交', '单', '拆', '重')\n * - A name representing the Yao (e.g. '老阴', '少阳', '少阴', '老阳')\n * - A digit representing the count of yang (e.g. '0', '1', '2', '3')\n * - Symbols in ancient books representing a Yao ()\n * - A field of a TrigramInfo object (e.g. id, binary, nameEn, represents, representsEn, sign)\n * If the input matches any of these, a corresponding Yao will be created.\n * Otherwise, null will be returned.\n */\n\n /**\n * Creating a Yao from symbol.\n * @param symbol e.g. '×' for 0, '’' for 1, '”' for 2, '○' for 3.\n */\n static fromSymbol(symbol: string): Yao | null {\n const index = _patterns.indexOf(symbol);\n return index !== -1 ? new Yao(index) : null;\n }\n\n /**\n * Creating a Yao from symbolName.\n * @param symbolName e.g. '交' for 0, '单' for 1, '拆' for 2, '重' for 3.\n */\n static fromSymbolName(symbolName: string): Yao | null {\n const index = _symbolNames.indexOf(symbolName);\n return index !== -1 ? new Yao(index) : null;\n }\n\n /**\n * Creating a Yao from name.\n * @param name e.g. '老阴', '少阳', '少阴', '老阳'.\n */\n static fromName(name: string): Yao | null {\n const index = _names.indexOf(name as any);\n return index !== -1 ? new Yao(index) : null;\n }\n\n /**\n * Create a Yao from a digit string representing the count of yang.\n */\n static fromDigitString(digit: string): Yao | null {\n const index = _digits.indexOf(digit);\n return index !== -1 ? new Yao(index) : null;\n }\n\n /**\n * Create a Yao from any Trigram field value.\n * @param value `{id: '坤', binary: '000', yangs: 0}`, so `'坤'`, `'000'` and `0` can all be used.\n */\n static fromTrigramField(value: string | number): Yao | null {\n const trigram = TrigramInfoTable.find(\n (v) => v.id === value || v.yangs === value || v.binary === value || v.sign === value,\n );\n return trigram ? new Yao(trigram.yangs) : null;\n }\n // #endregion\n\n /**\n * How many faces of character of 3 coins in this Yao.\n * It can only be 0, 1, 2 or 3, which corresponds to 老阴、少阳、少阴、老阳 respectively.\n * - 0: 老阴 (all three coins are 阴面)\n * - 1: 少阳 (one coin is 阳面, two coins are 阴面)\n * - 2: 少阴 (two coins are 阳面, one coin is 阴面)\n * - 3: 老阳 (all three coins are 阳面)\n */\n readonly yangs: 0 | 1 | 2 | 3;\n\n /**\n * 两仪, aka 阴阳\n */\n readonly polar: 0 | 1;\n\n /**\n * If this Yao is dynamic, which means it can change to another Yao. In LiuYao, only 老阴 and 老阳 are dynamic.\n * - 老阴 (0) can change to 少阳 (1)\n * - 老阳 (3) can change to 少阴 (2)\n * - 少阳 (1) and 少阴 (2) cannot change, so they are static.\n */\n readonly dynamic;\n\n /**\n * Whether this Yao has already changed to another Yao. Once a Yao is changed, it cannot change again.\n */\n readonly changed: boolean; /**\n * The symbol representing this Yao, which is one of '×', '’', '”', '○'.\n */\n readonly pattern: '×' | '’' | '”' | '○';\n\n readonly name: '老阴' | '少阳' | '少阴' | '老阳';\n\n readonly symbol: '单' | '拆' | '重' | '交';\n\n constructor(yangs: number, isChanged = false) {\n if (yangs !== 0 && yangs !== 1 && yangs !== 2 && yangs !== 3) {\n throw new Error('Count of yang must be 0, 1, 2 or 3');\n }\n this.yangs = yangs;\n this.changed = isChanged;\n this.polar = _countToPolar[yangs];\n this.dynamic = yangs === 0 || yangs === 3;\n this.pattern = _patterns[yangs] as '×' | '’' | '”' | '○';\n this.name = _names[yangs];\n this.symbol = _symbolNames[yangs] as '单' | '拆' | '重' | '交';\n\n if (this.dynamic && this.changed) {\n throw new Error(`Changed Yao should not be dynamic.`);\n }\n }\n\n /**\n * Consider the Yaos are same if `this.yangs` is same\n */\n eq(other: Yao): boolean {\n return this.yangs === other.yangs;\n }\n\n /**\n * Consider the Yaos are `===` if:\n * 1. `this.yangs` is same\n * 2. `this.isChanged` is same\n */\n eqeqeq(other: Yao): boolean {\n return this.yangs === other.yangs && this.changed === other.changed;\n }\n\n clone(): Yao {\n return new Yao(this.yangs, this.changed);\n }\n\n toChanged(): Yao {\n return new Yao(_change[this.yangs], this.dynamic); // & This is the simplified version.\n }\n}\n","import {\n HexagramInfoTable,\n PalaceOrderTable,\n type TrigramInfo,\n type HexagramInfo,\n TrigramInfoTable,\n} from '../core/common.js';\nimport { setupHeavenStem } from '../core/heaven-stem.js';\nimport { setupHostGuest } from '../core/host-guest.js';\nimport { setupSixKins } from '../core/six-kins.js';\nimport { Yao } from './yao.js';\n\ntype LiuYao = [Yao, Yao, Yao, Yao, Yao, Yao];\nexport const HexagramYaoOrder = ['初爻', '二爻', '三爻', '四爻', '五爻', '上爻'] as const;\n\nconst _scattering = ['乾', '坤', '震', '巽', '坎', '离', '艮', '兑', '无妄', '大壮'];\nconst _gathering = ['否', '泰', '复', '豫', '贲', '旅', '困', '节'];\nconst _pure = ['乾', '坤', '震', '巽', '坎', '离', '艮', '兑'];\n\n/**\n * Hexagram class represents a hexagram, which consists of 6 Yao.\n * - Each Yao can be either yin or yang, and can be changing or not.\n * - The hexagram can be constructed from an array of Yao or an array of counts of yang.\n * - Creates “乾为天” by default.\n */\nexport class Hexagram implements HexagramInfo {\n // #region Static\n /**\n * Use tokens like `'012132'` to create a Hexagram, where each digit represents the count of Yang in the corresponding Yao (0 for 老阴, 1 for 少阳, 2 for 少阴, 3 for 老阳). The first digit represents the first Yao (初爻) and the last digit represents the sixth Yao (上爻).\n */\n static fromQuaternary(quaternary: string): Hexagram | null {\n const yaos = quaternary.split('').map(Yao.fromDigitString);\n return yaos.every((y): y is Yao => y !== null) ? new Hexagram(yaos) : null;\n }\n\n /**\n * Use tokens like `'单单拆拆重重'` to create a Hexagram.\n *\n * Since 交 is 0, 单 is 1, 拆 is 2, and 重 is 3, the above token is equivalent to '112233'.\n * Which returns '风泽中孚' with its 5th and 6th Yao being dynamic.\n */\n static fromSymbolName(symbolNames: string): Hexagram | null {\n const yaos = symbolNames.split('').map(Yao.fromSymbolName);\n return yaos.every((y): y is Yao => y !== null) ? new Hexagram(yaos) : null;\n }\n\n /**\n * Try to create a Hexagram from an array of counts of Yang. If the input is invalid, null will be returned.\n */\n static fromYangCounts(counts: number[]): Hexagram | null {\n try {\n return new Hexagram(counts.map((c) => new Yao(c)));\n } catch {\n return null;\n }\n }\n\n /**\n * Create a Hexagram from its id, which is the name of the hexagram without the palace name.\n * @param id \"坤为地\", \"地雷复\", \"地水师\"\n */\n static fromId(id: string): Hexagram | null {\n const exist = HexagramInfoTable.find(\n (h) => h.id === id || h.id.slice(2) === id || (h.id.startsWith(id) && id.length > 1),\n );\n return exist ? Hexagram.fromYangCounts(exist.yangs) : null;\n }\n\n /**\n * Find Original Palace Hexagram by the palace name, which is the last character of the hexagram id. For example, '天' for '乾为天', '地' for '坤为地', etc.\n */\n static fromPalace(palace: string): Hexagram | null {\n const exist = HexagramInfoTable.find((h) => h.id[2] === palace);\n return exist ? Hexagram.fromYangCounts(exist.yangs) : null;\n }\n // #endregion\n\n /**\n * 6 Yao positions, indexed from bottom to top.\n * Index from 0 to 5, where 0 is the first Yao (初爻) and 5 is the sixth Yao (上爻).\n */\n readonly yaos: LiuYao;\n\n // #region inherited from HexagramInfo\n readonly yangs: number[];\n readonly binary: string;\n readonly id: string;\n readonly name: string;\n readonly sign: string;\n readonly palace: '乾' | '坤' | '震' | '巽' | '坎' | '离' | '艮' | '兑';\n readonly phase: '金' | '木' | '水' | '火' | '土';\n readonly generation: 0 | 6 | 1 | 2 | 3 | 4 | 5 | 7;\n // #endregion\n\n readonly palaceInfo;\n\n /**\n * Whether the 6 Yaos of this hexagram contain any dynamic Yao.\n */\n readonly dynamic: boolean;\n\n /**\n * Whether this hexagram has already changed to another hexagram. Once a hexagram is changed, it cannot change again.\n */\n readonly changed: boolean;\n\n readonly inner: TrigramInfo;\n readonly outer: TrigramInfo;\n\n /**\n * Whether this gram is 六冲、六合\n */\n readonly specialType?: '六冲' | '六合';\n\n /**\n * Whether this gram is \"八纯卦\"\n */\n readonly pure: boolean;\n\n /**\n * Includes 六亲、天干、地支、五行. Looks like \"兄弟癸丑土\" \"官鬼辛卯木\"\n */\n readonly kins: string[];\n\n /**\n * Index of the 世爻\n */\n readonly host: number;\n\n /**\n * Index of the 应爻\n */\n readonly guest: number;\n\n /**\n * if it is a changed gram, this points to the primary one.\n */\n readonly primary: Hexagram | null;\n\n /**\n * Create a Hexagram from an array of Yao with length 6.\n */\n constructor(yaos: Yao[], primary: Hexagram | null = null) {\n if (yaos.length !== 6) {\n throw new Error('Array length mismatch, A Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang');\n }\n\n if (yaos.some((a) => !(a instanceof Yao))) {\n throw new Error('Invalid Arguments, Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang');\n }\n\n this.yaos = yaos.map((a) => a.clone()) as LiuYao;\n this.binary = this.yaos.map((y) => y.polar).join('');\n const info = HexagramInfoTable.find((h) => h.binary === this.binary)!; // This is guaranteed\n this.palace = info.palace;\n\n // properties from HexagramInfo\n this.id = info.id;\n this.generation = info.generation;\n this.yangs = this.yaos.map((v) => v.yangs);\n this.phase = info.phase;\n this.name = info.name;\n this.sign = info.sign;\n\n // details\n\n this.palaceInfo = `${info.palace}宫(${info.phase})${PalaceOrderTable[info.generation]}`;\n\n this.dynamic = this.yaos.some((y) => y.dynamic || y.changed);\n this.changed = !!primary;\n this.primary = primary;\n\n const ub = this.binary.slice(0, 3);\n const lb = this.binary.slice(3);\n this.inner = TrigramInfoTable.find((t) => t.binary === ub)!;\n this.outer = TrigramInfoTable.find((t) => t.binary === lb)!;\n\n const sixKins = setupSixKins(this);\n const hs = setupHeavenStem(this);\n this.kins = [\n ...this.inner.inner.map((v, i) => sixKins[i] + hs[i] + v),\n ...this.outer.outer.map((v, i) => sixKins[i + 3] + hs[i + 3] + v),\n ];\n\n const hg = setupHostGuest(this);\n this.host = hg.host;\n this.guest = hg.guest;\n\n // special types\n\n if (_scattering.includes(info.name)) {\n this.specialType = '六冲';\n }\n if (_gathering.includes(info.name)) {\n this.specialType = '六合';\n }\n\n this.pure = _pure.includes(info.name);\n }\n\n toChanged(): Hexagram | null {\n if (!this.dynamic) {\n return null;\n }\n\n if (this.changed) {\n throw new Error('The gram is already changed, cannot change again.');\n }\n\n return new Hexagram(\n this.yaos.map((y) => y.toChanged()),\n this,\n );\n }\n\n clone(): Hexagram {\n return new Hexagram(this.yaos, this.primary);\n }\n\n toString(): string {\n return this.id;\n }\n\n [Symbol.toPrimitive]() {\n return this.id;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["_mappers","八宫卦位顺序表","六十四卦表","八卦表","六神表","_mappers$1","装天干","inner","hexagram","outer","世位","应位","装世应","map","v","phase0","kin0","phase1","kin1","phase2","kin2","phase3","kin3","phase4","kin4","_mappers","装六亲五行","mapper","卦","_names","_change","爻","index","symbolName","name","digit","trigram","value","#阳数","#动静状态","阳数","状态","other","爻位","_scattering","_gathering","_pure","六爻卦","quaternary","yaos","y","symbolNames","counts","c","exist","h","六爻","a","#六爻","#二进制表示","#信息","#本卦","本卦","ub","lb","#内卦","t","#外卦","六亲数组","天干数组","内卦装","i","地支五行","外卦装","#六亲干支五行","hg","#世爻","#应爻","#六冲六合","#是否为八纯卦"],"sources":["../src/core/common.ts","../src/core/six-gods.ts","../src/core/heaven-stem.ts","../src/core/host-guest.ts","../src/core/six-kins.ts","../src/classes/yao.ts","../src/classes/hexagram.ts"],"sourcesContent":["export const 八宫卦位顺序表 = ['本宫卦', '一世卦', '二世卦', '三世卦', '四世卦', '五世卦', '游魂卦', '归魂卦'] as const;\n\nexport type 地支五行 =\n | '子水'\n | '丑土'\n | '寅木'\n | '卯木'\n | '辰土'\n | '巳火'\n | '午火'\n | '未土'\n | '申金'\n | '酉金'\n | '戌土'\n | '亥水';\n\nexport type 五行 = '金' | '木' | '水' | '火' | '土';\n\nexport type 天干 = '甲' | '乙' | '丙' | '丁' | '戊' | '己' | '庚' | '辛' | '壬' | '癸';\n\nexport type 八卦名 = '乾' | '兑' | '离' | '震' | '巽' | '坎' | '艮' | '坤';\n\nexport interface 六十四卦 {\n /**\n * Binary representation of the hexagram, where 0 image a yin line and 1 image a yang line. The lines are ordered from the bottom (first line) to the top (sixth line).\n */\n 二进制表示: string;\n\n /**\n * Full name of the hexagram, which includes the names of the upper and lower trigrams.\n *\n * For example, \"坤为地\", \"地雷复\", \"地水师\", etc.\n */\n 全名: string;\n\n /**\n * Name of the hexagram.\n *\n * For example, \"地\", \"复\", \"师\", etc.\n */\n 卦名: string;\n\n /**\n * 64 hexagrams correspond to Unicode characters.\n * For example, \"䷁\" (U+4DC1) image the hexagram \"坤为地\".\n */\n 符号: string;\n\n /**\n * Five Phases (五行) associated with the hexagram, which can be one of \"金\" (Metal), \"木\" (Wood), \"水\" (Water), \"火\" (Fire), or \"土\" (Earth).\n * It indicates the development and state of things.\n */\n 五行: 五行;\n\n /**\n * Eight Palaces (八宫) to which the hexagram belongs.\n * 'Palace' is not a physical palace, but rather a category or family of hexagrams.\n */\n 宫: 八卦名;\n\n /**\n * Index of the hexagram within its palace, ranging from 0 to 7. This index helps to identify the specific hexagram within the context of its palace.\n *\n * - 本宫卦 Original Palace\n * - 一世卦 First Generation, 1st yao is changed\n * - 二世卦 Second Generation, 1st and 2nd yao is changed\n * - 三世卦 Third Generation, 1st, 2nd and 3rd yao is changed\n * - 四世卦 Fourth Generation, 1st, 2nd, 3rd and 4th yao is changed\n * - 五世卦 Fifth Generation, 1st, 2nd, 3rd, 4th and 5th yao is changed\n * - 游魂卦 Wandering Soul, restores 4th yao of Fifth Generation\n * - 归魂卦 Returning Soul, restores lower 3 yaos of Fifth Generation\n */\n 八宫卦位: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7;\n}\n\n/**\n * 包含丰富信息的表,已冻结无法修改,字段如下:\n * - 二进制表示: '000000'\n * - 全名: '坤为地'\n * - 符号: '䷁'\n * - 五行: '土'\n * - 宫: '坤'\n * - 卦位: 0\n * - 卦名: '坤'\n */\nexport const 六十四卦表: readonly 六十四卦[] = [\n {\n 二进制表示: '000000',\n 全名: '坤为地',\n 符号: '䷁',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 0,\n 卦名: '坤',\n },\n {\n 二进制表示: '100000',\n 全名: '地雷复',\n 符号: '䷗',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 1,\n 卦名: '复',\n },\n {\n 二进制表示: '010000',\n 全名: '地水师',\n 符号: '䷆',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 7,\n 卦名: '师',\n },\n {\n 二进制表示: '110000',\n 全名: '地泽临',\n 符号: '䷒',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 2,\n 卦名: '临',\n },\n {\n 二进制表示: '001000',\n 全名: '地山谦',\n 符号: '䷎',\n 五行: '土',\n 宫: '兑',\n 八宫卦位: 5,\n 卦名: '谦',\n },\n {\n 二进制表示: '101000',\n 全名: '地火明夷',\n 符号: '䷣',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 6,\n 卦名: '明夷',\n },\n {\n 二进制表示: '011000',\n 全名: '地风升',\n 符号: '䷭',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 4,\n 卦名: '升',\n },\n {\n 二进制表示: '111000',\n 全名: '地天泰',\n 符号: '䷊',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 3,\n 卦名: '泰',\n },\n {\n 二进制表示: '000100',\n 全名: '雷地豫',\n 符号: '䷏',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 1,\n 卦名: '豫',\n },\n {\n 二进制表示: '100100',\n 全名: '震为雷',\n 符号: '䷲',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 0,\n 卦名: '震',\n },\n {\n 二进制表示: '010100',\n 全名: '雷水解',\n 符号: '䷧',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 2,\n 卦名: '解',\n },\n {\n 二进制表示: '110100',\n 全名: '雷泽归妹',\n 符号: '䷵',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 7,\n 卦名: '归妹',\n },\n {\n 二进制表示: '001100',\n 全名: '雷山小过',\n 符号: '䷽',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 6,\n 卦名: '小过',\n },\n {\n 二进制表示: '101100',\n 全名: '雷火丰',\n 符号: '䷶',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 5,\n 卦名: '丰',\n },\n {\n 二进制表示: '011100',\n 全名: '雷风恒',\n 符号: '䷟',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 3,\n 卦名: '恒',\n },\n {\n 二进制表示: '111100',\n 全名: '雷天大壮',\n 符号: '䷡',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 4,\n 卦名: '大壮',\n },\n {\n 二进制表示: '000010',\n 全名: '水地比',\n 符号: '䷇',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 7,\n 卦名: '比',\n },\n {\n 二进制表示: '100010',\n 全名: '水雷屯',\n 符号: '䷂',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 2,\n 卦名: '屯',\n },\n {\n 二进制表示: '010010',\n 全名: '坎为水',\n 符号: '䷜',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 0,\n 卦名: '坎',\n },\n {\n 二进制表示: '110010',\n 全名: '水泽节',\n 符号: '䷻',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 1,\n 卦名: '节',\n },\n {\n 二进制表示: '001010',\n 全名: '水山蹇',\n 符号: '䷦',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 4,\n 卦名: '蹇',\n },\n {\n 二进制表示: '101010',\n 全名: '水火既济',\n 符号: '䷾',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 3,\n 卦名: '既济',\n },\n {\n 二进制表示: '011010',\n 全名: '水风井',\n 符号: '䷯',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 5,\n 卦名: '井',\n },\n {\n 二进制表示: '111010',\n 全名: '水天需',\n 符号: '䷄',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 6,\n 卦名: '需',\n },\n {\n 二进制表示: '000110',\n 全名: '泽地萃',\n 符号: '䷬',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 2,\n 卦名: '萃',\n },\n {\n 二进制表示: '100110',\n 全名: '泽雷随',\n 符号: '䷐',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 7,\n 卦名: '随',\n },\n {\n 二进制表示: '010110',\n 全名: '泽水困',\n 符号: '䷮',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 1,\n 卦名: '困',\n },\n {\n 二进制表示: '110110',\n 全名: '兑为泽',\n 符号: '䷹',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 0,\n 卦名: '兑',\n },\n {\n 二进制表示: '001110',\n 全名: '泽山咸',\n 符号: '䷞',\n 五行: '金',\n 宫: '兑',\n 八宫卦位: 3,\n 卦名: '咸',\n },\n {\n 二进制表示: '101110',\n 全名: '泽火革',\n 符号: '䷰',\n 五行: '水',\n 宫: '坎',\n 八宫卦位: 4,\n 卦名: '革',\n },\n {\n 二进制表示: '011110',\n 全名: '泽风大过',\n 符号: '䷛',\n 五行: '木',\n 宫: '震',\n 八宫卦位: 6,\n 卦名: '大过',\n },\n {\n 二进制表示: '111110',\n 全名: '泽天夬',\n 符号: '䷪',\n 五行: '土',\n 宫: '坤',\n 八宫卦位: 5,\n 卦名: '夬',\n },\n {\n 二进制表示: '000001',\n 全名: '山地剥',\n 符号: '䷖',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 5,\n 卦名: '剥',\n },\n {\n 二进制表示: '100001',\n 全名: '山雷颐',\n 符号: '䷚',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 6,\n 卦名: '颐',\n },\n {\n 二进制表示: '010001',\n 全名: '山水蒙',\n 符号: '䷃',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 4,\n 卦名: '蒙',\n },\n {\n 二进制表示: '110001',\n 全名: '山泽损',\n 符号: '䷨',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 3,\n 卦名: '损',\n },\n {\n 二进制表示: '001001',\n 全名: '艮为山',\n 符号: '䷳',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 0,\n 卦名: '艮',\n },\n {\n 二进制表示: '101001',\n 全名: '山火贲',\n 符号: '䷕',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 1,\n 卦名: '贲',\n },\n {\n 二进制表示: '011001',\n 全名: '山风蛊',\n 符号: '䷑',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 7,\n 卦名: '蛊',\n },\n {\n 二进制表示: '111001',\n 全名: '山天大畜',\n 符号: '䷙',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 2,\n 卦名: '大畜',\n },\n {\n 二进制表示: '000101',\n 全名: '火地晋',\n 符号: '䷢',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 6,\n 卦名: '晋',\n },\n {\n 二进制表示: '100101',\n 全名: '火雷噬嗑',\n 符号: '䷔',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 5,\n 卦名: '噬嗑',\n },\n {\n 二进制表示: '010101',\n 全名: '火水未济',\n 符号: '䷿',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 3,\n 卦名: '未济',\n },\n {\n 二进制表示: '110101',\n 全名: '火泽睽',\n 符号: '䷥',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 4,\n 卦名: '睽',\n },\n {\n 二进制表示: '001101',\n 全名: '火山旅',\n 符号: '䷷',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 1,\n 卦名: '旅',\n },\n {\n 二进制表示: '101101',\n 全名: '离为火',\n 符号: '䷝',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 0,\n 卦名: '离',\n },\n {\n 二进制表示: '011101',\n 全名: '火风鼎',\n 符号: '䷱',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 2,\n 卦名: '鼎',\n },\n {\n 二进制表示: '111101',\n 全名: '火天大有',\n 符号: '䷍',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 7,\n 卦名: '大有',\n },\n {\n 二进制表示: '000011',\n 全名: '风地观',\n 符号: '䷓',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 4,\n 卦名: '观',\n },\n {\n 二进制表示: '100011',\n 全名: '风雷益',\n 符号: '䷩',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 3,\n 卦名: '益',\n },\n {\n 二进制表示: '010011',\n 全名: '风水涣',\n 符号: '䷺',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 5,\n 卦名: '涣',\n },\n {\n 二进制表示: '110011',\n 全名: '风泽中孚',\n 符号: '䷼',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 6,\n 卦名: '中孚',\n },\n {\n 二进制表示: '001011',\n 全名: '风山渐',\n 符号: '䷴',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 7,\n 卦名: '渐',\n },\n {\n 二进制表示: '101011',\n 全名: '风火家人',\n 符号: '䷤',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 2,\n 卦名: '家人',\n },\n {\n 二进制表示: '011011',\n 全名: '巽为风',\n 符号: '䷸',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 0,\n 卦名: '巽',\n },\n {\n 二进制表示: '111011',\n 全名: '风天小畜',\n 符号: '䷈',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 1,\n 卦名: '小畜',\n },\n {\n 二进制表示: '000111',\n 全名: '天地否',\n 符号: '䷋',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 3,\n 卦名: '否',\n },\n {\n 二进制表示: '100111',\n 全名: '天雷无妄',\n 符号: '䷘',\n 五行: '木',\n 宫: '巽',\n 八宫卦位: 4,\n 卦名: '无妄',\n },\n {\n 二进制表示: '010111',\n 全名: '天水讼',\n 符号: '䷅',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 6,\n 卦名: '讼',\n },\n {\n 二进制表示: '110111',\n 全名: '天泽履',\n 符号: '䷉',\n 五行: '土',\n 宫: '艮',\n 八宫卦位: 5,\n 卦名: '履',\n },\n {\n 二进制表示: '001111',\n 全名: '天山遁',\n 符号: '䷠',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 2,\n 卦名: '遁',\n },\n {\n 二进制表示: '101111',\n 全名: '天火同人',\n 符号: '䷌',\n 五行: '火',\n 宫: '离',\n 八宫卦位: 7,\n 卦名: '同人',\n },\n {\n 二进制表示: '011111',\n 全名: '天风姤',\n 符号: '䷫',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 1,\n 卦名: '姤',\n },\n {\n 二进制表示: '111111',\n 全名: '乾为天',\n 符号: '䷀',\n 五行: '金',\n 宫: '乾',\n 八宫卦位: 0,\n 卦名: '乾',\n },\n];\n\nexport interface 八卦 {\n /**\n * Presents the trigram as a 3-digit binary string. 1 image a Yang line and 0 image a Yin line.\n *\n * For example, \"111\" for 乾, \"100\" for 震, etc.\n */\n 二进制表示: `${0 | 1}${0 | 1}${0 | 1}`;\n\n /**\n * How many Yang Yaos are in the trigram, such as 0 for 坤, 1 for 震, 2 for 兑, etc.\n */\n 阳数: 0 | 1 | 2 | 3;\n\n /**\n * Name of the trigram in Chinese, such as \"乾\", \"坤\", \"震\", etc.\n */\n 卦名: string;\n\n /**\n * \"象\", means what the trigram represents in Chinese, such as \"天\", \"地\", \"水\", etc.\n */\n 象: string;\n\n /**\n * Unicode character representing the trigram, such as \"☰\" for 乾, \"☷\" for 坤, etc.\n */\n 符号: string;\n\n /**\n * Earth Stem and Five Phases when this gram performs a inner gram of a hexagram.\n * @see 《增删卜易·浑天甲子章》\n */\n 内卦地支五行: 地支五行[];\n\n /**\n * Earth Stem and Five Phases when this gram performs a outer gram of a hexagram.\n * @see 《增删卜易·浑天甲子章》\n */\n 外卦地支五行: 地支五行[];\n}\n\n/**\n * List of all trigrams in the I Ching, with their binary representation, number of yang lines, name, what they represent, and their corresponding sign.\n */\nexport const 八卦表: readonly 八卦[] = [\n {\n 卦名: '坤',\n 二进制表示: '000',\n 阳数: 0,\n 象: '地',\n 符号: '☷',\n 内卦地支五行: ['未土', '巳火', '卯木'],\n 外卦地支五行: ['丑土', '亥水', '酉金'],\n },\n {\n 卦名: '震',\n 二进制表示: '100',\n 阳数: 1,\n 象: '雷',\n 符号: '☳',\n 内卦地支五行: ['子水', '寅木', '辰土'],\n 外卦地支五行: ['午火', '申金', '戌土'],\n },\n {\n 卦名: '坎',\n 二进制表示: '010',\n 阳数: 1,\n 象: '水',\n 符号: '☵',\n 内卦地支五行: ['寅木', '辰土', '午火'],\n 外卦地支五行: ['申金', '戌土', '子水'],\n },\n {\n 卦名: '兑',\n 二进制表示: '110',\n 阳数: 2,\n 象: '泽',\n 符号: '☱',\n 内卦地支五行: ['巳火', '卯木', '丑土'],\n 外卦地支五行: ['亥水', '酉金', '未土'],\n },\n {\n 卦名: '艮',\n 二进制表示: '001',\n 阳数: 1,\n 象: '山',\n 符号: '☶',\n 内卦地支五行: ['辰土', '午火', '申金'],\n 外卦地支五行: ['戌土', '子水', '寅木'],\n },\n {\n 卦名: '离',\n 二进制表示: '101',\n 阳数: 2,\n 象: '火',\n 符号: '☲',\n 内卦地支五行: ['卯木', '丑土', '亥水'],\n 外卦地支五行: ['酉金', '未土', '巳火'],\n },\n {\n 卦名: '巽',\n 二进制表示: '011',\n 阳数: 2,\n 象: '风',\n 符号: '☴',\n 内卦地支五行: ['丑土', '亥水', '酉金'],\n 外卦地支五行: ['未土', '巳火', '卯木'],\n },\n {\n 卦名: '乾',\n 二进制表示: '111',\n 阳数: 3,\n 象: '天',\n 符号: '☰',\n 内卦地支五行: ['子水', '寅木', '辰土'],\n 外卦地支五行: ['午火', '申金', '戌土'],\n },\n];\n\nObject.freeze(八宫卦位顺序表);\nObject.freeze(六十四卦表);\nObject.freeze(八卦表);\n","export type 六神 = '玄武' | '白虎' | '螣蛇' | '勾陈' | '朱雀' | '青龙';\n\nexport interface 六神信息 {\n /**\n * The Heavenly Stem associated with the Six Gods in this order.\n * They are '甲乙丙丁戊己庚辛壬癸' in sequence.\n * Different Heavenly Stems correspond to different orders of Six Gods.\n */\n 天干: string;\n\n /**\n * Six Gods contains '青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'.\n * Different Heavenly Stems correspond to different orders of Six Gods.\n *\n * Six Gods are all auspicious symbols and protectors.\n * - 青龙: Azure Loong, the God in the East worshipped by the Taoists.\n * - 朱雀: Vermilion Bird, its body is covered with eternal fire.\n * - 白虎: White Tiger, as white as snow. If the emperor is not cruel and tyrannical, the White Tiger will appear.\n * - 玄武:Black Tortoise, a spiritual creature formed by the combination of a tortoise and a snake.\n * - 螣蛇: Flying Serpent, a limbless divine serpent that can summon clouds and mist and roam within them.\n * - 勾陈: Gouchen, Also considered as 麒麟 Kylin. It has a body like a musk deer, a tail like that of a dragon, dragon scales, and a single horn.\n */\n 六神: 六神[];\n}\n\n/**\n * @see 《增删卜易·六神章》\n */\nexport const 六神表: readonly 六神信息[] = [\n {\n 天干: '甲',\n 六神: ['青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'] as 六神[],\n },\n {\n 天干: '乙',\n 六神: ['青龙', '朱雀', '勾陈', '螣蛇', '白虎', '玄武'] as 六神[],\n },\n {\n 天干: '丙',\n 六神: ['朱雀', '勾陈', '螣蛇', '白虎', '玄武', '青龙'] as 六神[],\n },\n {\n 天干: '丁',\n 六神: ['朱雀', '勾陈', '螣蛇', '白虎', '玄武', '青龙'] as 六神[],\n },\n {\n 天干: '戊',\n 六神: ['勾陈', '螣蛇', '白虎', '玄武', '青龙', '朱雀'] as 六神[],\n },\n {\n 天干: '己',\n 六神: ['螣蛇', '白虎', '玄武', '青龙', '朱雀', '勾陈'] as 六神[],\n },\n {\n 天干: '庚',\n 六神: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '螣蛇'] as 六神[],\n },\n {\n 天干: '辛',\n 六神: ['白虎', '玄武', '青龙', '朱雀', '勾陈', '螣蛇'] as 六神[],\n },\n {\n 天干: '壬',\n 六神: ['玄武', '青龙', '朱雀', '勾陈', '螣蛇', '白虎'] as 六神[],\n },\n {\n 天干: '癸',\n 六神: ['玄武', '青龙', '朱雀', '勾陈', '螣蛇', '白虎'] as 六神[],\n },\n];\n\nObject.freeze(六神表);\n","import type { 六爻卦 } from '../classes/hexagram.js';\nimport { 天干 } from './common.js';\n\n`\n野鹤曰:此为多事之论也。鬼谷三才论舍爻辞,以五行而定祸福者,乃用地支。既用地支,不\n得不以天干为配,未闻以天干而定吉凶,以天干配地支者,欲全用周天甲子,卦又止于四十八爻,\n不得不分晰焉。\n所以乾之内卦用甲,坤之内卦用乙,乃十干之首;乾之外卦用壬,坤之外卦用癸,皆十干之尾。\n乾立内卦用子,与坤之外卦相合;坤之内卦用未,与乾之外卦相合。二老上下相媾,阴阳磨荡,中\n包六子。甲乙之次者丙丁,用之于少男少女,艮与兑也;戊己用之于中男中女,坎与离也;庚辛用\n之于长男长女,震与巽也,以全上下干支。此乃配偶之法也,故谓之浑天甲子。\n而,祸福吉凶,皆地支生克制化、克合刑冲以判之。今若以天干而判休囚,则每卦皆宜用也,\n何独于此?况此小畜之蛊,五爻朱雀为文书,动临巳火,变出子水文书,而世爻又临子水父母,又\n为文书,酉日生之,化丑合之,叠叠文书,旺动于卦中,即非干支相合,亦难说无成。余故曰:此\n多事之论也。\n`;\n\nconst _mappers: Record<string, { inner: 天干; outer: 天干 }> = {\n 乾: { inner: '甲', outer: '壬' },\n 坤: { inner: '乙', outer: '癸' },\n 兑: { inner: '丁', outer: '丁' },\n 坎: { inner: '戊', outer: '戊' },\n 艮: { inner: '丙', outer: '丙' },\n 离: { inner: '己', outer: '己' },\n 震: { inner: '庚', outer: '庚' },\n 巽: { inner: '辛', outer: '辛' },\n};\nexport function 装天干(hexagram: 六爻卦): 天干[] {\n const inner = _mappers[hexagram.内卦.卦名].inner;\n const outer = _mappers[hexagram.外卦.卦名].outer;\n return [inner, inner, inner, outer, outer, outer];\n}\n","import type { 六爻卦 } from '../classes/hexagram.js';\n`\n世应章\n乾为天:世在六爻;天风姤:世在初爻;天山遁:世在二爻;火地晋:世退在四爻;\n天地否:世在三爻;风地观:世在四爻;山地剥:世在五爻;火天大有:世退在三爻;\n隔世爻两位,即是应爻。余卦仿此。\n`;\n\nconst 世位 = [5, 0, 1, 2, 3, 4, 3, 2] as const;\n\n/**\n * 应位满足公式`(世位 + 3) % 6`\n */\nconst 应位 = [2, 3, 4, 5, 0, 1, 0, 5] as const;\n\n/**\n * @see 《增删卜易·世应章》\n */\nexport function 装世应(hexagram: 六爻卦): { 世: 0 | 1 | 2 | 3 | 4 | 5; 应: 0 | 1 | 2 | 3 | 4 | 5 } {\n return {\n 世: 世位[hexagram.八宫卦位],\n 应: 应位[hexagram.八宫卦位],\n };\n}\n","import { 六爻卦 } from '../classes/hexagram.js';\nimport { 五行, 地支五行 } from './common.js';\n\n/**\n * 六亲只有五个?\n */\nexport type 六亲 = '父母' | '子孙' | '妻财' | '官鬼' | '兄弟';\n\n`\n六亲歌章\n生我者为父母,我生者为子孙,我克者为妻财,克我者为官鬼,比和者为兄弟。\n乾兑金兄土父传,木财火鬼水子源。(乾兑两宫,八卦俱属金)\n坎宫木子兄属水,金父火财土为鬼。(坎宫属水)\n坤艮土兄火为父,木鬼水财金子路。(坤艮两宫,八卦俱属土)\n离宫木父土子孙,水鬼金财火弟兄。(离宫属火)\n震巽木兄水父母,金鬼火子财是土。(震巽两宫,八卦俱属木)\n`;\n\n/**\n * 返回六亲和五行\n * @param v inner outer extracted from trigram\n * @param phase 金木水火土\n * @param kin 六亲\n */\nfunction map(\n v: 地支五行,\n phase0: 五行,\n kin0: 六亲,\n phase1: 五行,\n kin1: 六亲,\n phase2: 五行,\n kin2: 六亲,\n phase3: 五行,\n kin3: 六亲,\n phase4: 五行,\n kin4: 六亲,\n): 六亲 {\n if (v.includes(phase0)) {\n return kin0;\n }\n if (v.includes(phase1)) {\n return kin1;\n }\n if (v.includes(phase2)) {\n return kin2;\n }\n if (v.includes(phase3)) {\n return kin3;\n }\n if (v.includes(phase4)) {\n return kin4;\n }\n throw new Error(`No BranchPhase[${v}] matches phase[${phase0},${phase1},${phase2},${phase3},${phase4}]`);\n}\n\nconst _mappers: Record<string, (sp: 地支五行) => 六亲> = {\n 乾: (v: 地支五行) => map(v, '金', '兄弟', '土', '父母', '木', '妻财', '火', '官鬼', '水', '子孙'),\n 兑: (v: 地支五行) => map(v, '金', '兄弟', '土', '父母', '木', '妻财', '火', '官鬼', '水', '子孙'),\n 坎: (v: 地支五行) => map(v, '木', '子孙', '水', '兄弟', '金', '父母', '火', '妻财', '土', '官鬼'),\n 坤: (v: 地支五行) => map(v, '土', '兄弟', '火', '父母', '木', '官鬼', '水', '妻财', '金', '子孙'),\n 艮: (v: 地支五行) => map(v, '土', '兄弟', '火', '父母', '木', '官鬼', '水', '妻财', '金', '子孙'),\n 离: (v: 地支五行) => map(v, '木', '父母', '土', '子孙', '水', '官鬼', '金', '妻财', '火', '兄弟'),\n 震: (v: 地支五行) => map(v, '木', '兄弟', '水', '父母', '金', '官鬼', '火', '子孙', '土', '妻财'),\n 巽: (v: 地支五行) => map(v, '木', '兄弟', '水', '父母', '金', '官鬼', '火', '子孙', '土', '妻财'),\n};\n\n/**\n * 变卦的六亲会继承本卦的六亲,而不是它自己的\n * @see 《增删卜易·六亲歌章》\n */\nexport function 装六亲五行(卦: 六爻卦): 六亲[] {\n const mapper = _mappers[卦.本卦.宫];\n return [...卦.内卦.内卦地支五行.map(mapper), ...卦.外卦.外卦地支五行.map(mapper)];\n}\n","import { 八卦表 } from '../core/common.js';\n\nconst _names = ['老阴', '少阳', '少阴', '老阳'] as const;\nconst _change = [1, 1, 2, 2] as const;\n\n/**\n * 描述卦和爻的动静变化,分为'静'、'动卦/爻但还没变'、'动卦/爻已经变了'3个状态\n */\nexport const enum 动静状态 {\n 静,\n 动未变,\n 动已变,\n}\n\nexport class 爻 {\n // #region static methods\n /**\n * Creating a Yao from symbolName.\n * @param symbolName e.g. '交' for 0, '单' for 1, '拆' for 2, '重' for 3.\n * @returns 如果入参符合就返回,如果不符合就返回`null`\n */\n static 从单拆重交创建(symbolName: string): 爻 | null {\n const index = '交单拆重'.indexOf(symbolName);\n return index !== -1 ? new 爻(index) : null;\n }\n\n /**\n * Creating a Yao from name.\n * @param name e.g. '老阴', '少阳', '少阴', '老阳'.\n * @returns 如果入参符合就返回,如果不符合就返回`null`\n */\n static 从名称创建(name: string): 爻 | null {\n const index = _names.indexOf(name as any);\n return index !== -1 ? new 爻(index) : null;\n }\n\n /**\n * @param digit e.g. '0', '1', '2', '3'.\n * @returns 如果入参符合就返回,如果不符合就返回`null`\n */\n static 从阳数字符串创建(digit: string): 爻 | null {\n const index = '0123'.indexOf(digit);\n return index !== -1 ? new 爻(index) : null;\n }\n\n /**\n * Create a Yao from any Trigram field value.\n * @param value `{id: '坤', binary: '000', yangs: 0}`, so `'坤'`, `'000'` and `0` can all be used.\n * @returns 如果入参符合就返回,如果不符合就返回`null`\n */\n static 从八卦字段创建(value: string | number): 爻 | null {\n const trigram = 八卦表.find(\n (v) => v.卦名 === value || v.阳数 === value || v.二进制表示 === value || v.符号 === value,\n );\n return trigram ? new 爻(trigram.阳数) : null;\n }\n // #endregion\n\n #阳数: 0 | 1 | 2 | 3;\n\n #动静状态: 动静状态;\n\n /**\n * How many faces of character of 3 coins in this Yao.\n * It can only be 0, 1, 2 or 3, which corresponds to 老阴、少阳、少阴、老阳 respectively.\n * - 0: 老阴 (all three coins are 阴面)\n * - 1: 少阳 (one coin is 阳面, two coins are 阴面)\n * - 2: 少阴 (two coins are 阳面, one coin is 阴面)\n * - 3: 老阳 (all three coins are 阳面)\n */\n get 阳数() {\n return this.#阳数;\n }\n\n get 动静状态() {\n return this.#动静状态;\n }\n\n /**\n * 两仪, aka 阴阳\n */\n get 阴阳(): '阴' | '阳' {\n return '阴阳阴阳'[this.#阳数] as '阴' | '阳';\n }\n\n get 名称(): '老阴' | '少阳' | '少阴' | '老阳' {\n return _names[this.#阳数];\n }\n\n get 符号(): '单' | '拆' | '重' | '交' {\n return '交单拆重'[this.#阳数] as '单' | '拆' | '重' | '交';\n }\n\n constructor(阳数: number, 状态?: 动静状态) {\n if (阳数 !== 0 && 阳数 !== 1 && 阳数 !== 2 && 阳数 !== 3) {\n throw new TypeError('阳数只能是 0, 1, 2 或 3');\n }\n\n if (状态 === undefined) {\n 状态 = 阳数 === 0 || 阳数 === 3 ? 动静状态.动未变 : 动静状态.静;\n }\n\n if (状态 === 动静状态.静 && (阳数 === 0 || 阳数 === 3)) {\n throw new TypeError('静爻不能是老阴或老阳');\n }\n\n this.#阳数 = 阳数;\n this.#动静状态 = 状态;\n }\n\n /**\n * 判断是否同为阴爻或同为阳爻\n */\n 是否阳数相等(other: 爻): boolean {\n return this.#阳数 === other.#阳数;\n }\n\n /**\n * 判断是否同为阴爻或同为阳爻,且是否变过的状态也相同\n * - 阳数和状态相同视为全同\n */\n 是否全同(other: 爻): boolean {\n return this.#阳数 === other.#阳数 && this.#动静状态 === other.#动静状态;\n }\n\n /**\n * 克隆一个全新的和本身一样的爻对象\n */\n 克隆(): 爻 {\n return new 爻(this.#阳数, this.#动静状态);\n }\n\n /**\n * 得到新的爻对象,这个爻是变过的。\n * @returns 如果是静爻或者已变过,则返回它自己\n */\n 变(): 爻 {\n if (this.#动静状态 === 动静状态.动未变) {\n return new 爻(_change[this.#阳数], 动静状态.动已变);\n }\n return this;\n }\n}\n","import type { 八卦, 六十四卦 } from '../core/common.js';\n\nimport { 六十四卦表, 八宫卦位顺序表, 八卦表, 五行, 八卦名 } from '../core/common.js';\nimport { 装天干 } from '../core/heaven-stem.js';\nimport { 装世应 } from '../core/host-guest.js';\nimport { 装六亲五行 } from '../core/six-kins.js';\nimport { 动静状态, 爻 } from './yao.js';\n\nexport const 爻位 = ['初爻', '二爻', '三爻', '四爻', '五爻', '上爻'] as const;\n\nconst _scattering = ['乾', '坤', '震', '巽', '坎', '离', '艮', '兑', '无妄', '大壮'];\nconst _gathering = ['否', '泰', '复', '豫', '贲', '旅', '困', '节'];\nconst _pure = ['乾', '坤', '震', '巽', '坎', '离', '艮', '兑'];\n\n/**\n * Hexagram class represents a hexagram, which consists of 6 Yao.\n * - Each Yao can be either yin or yang, and can be changing or not.\n * - The hexagram can be constructed from an array of Yao or an array of counts of yang.\n * - Creates “乾为天” by default.\n */\nexport class 六爻卦 implements 六十四卦 {\n // #region Static\n /**\n * Use tokens like `'012132'` to create a Hexagram, where each digit represents the count of Yang in the corresponding Yao (0 for 老阴, 1 for 少阳, 2 for 少阴, 3 for 老阳). The first digit represents the first Yao (初爻) and the last digit represents the sixth Yao (上爻).\n */\n static 从阳数字符串创建(quaternary: string): 六爻卦 | null {\n if (quaternary.length !== 6) {\n return null;\n }\n const yaos = quaternary.split('').map(爻.从阳数字符串创建);\n return yaos.every((y): y is 爻 => y !== null) ? new 六爻卦(yaos) : null;\n }\n\n /**\n * Use tokens like `'单单拆拆重重'` to create a Hexagram.\n *\n * Since 交 is 0, 单 is 1, 拆 is 2, and 重 is 3, the above token is equivalent to '112233'.\n * Which returns '风泽中孚' with its 5th and 6th Yao being dynamic.\n */\n static 从单拆重交创建(symbolNames: string): 六爻卦 | null {\n if (symbolNames.length !== 6) {\n return null;\n }\n const yaos = symbolNames.split('').map(爻.从单拆重交创建);\n return yaos.every((y): y is 爻 => y !== null) ? new 六爻卦(yaos) : null;\n }\n\n /**\n * Try to create a Hexagram from an array of counts of Yang. If the input is invalid, null will be returned.\n */\n static 从阳数创建(counts: number[]): 六爻卦 | null {\n try {\n return new 六爻卦(counts.map((c) => new 爻(c)));\n } catch {\n return null;\n }\n }\n\n /**\n * Create a Hexagram from its id, which is the name of the hexagram without the palace name.\n * @param name \"坤为地\", \"地雷复\", \"地水师\"\n */\n static 从卦名创建(name: string): 六爻卦 | null {\n const exist = 六十四卦表.find(\n (h) =>\n h.卦名 === name || h.全名 === name || h.全名.slice(2) === name || (h.全名.startsWith(name) && name.length > 1),\n );\n // 卦名不含动爻信息,所以按二进制创建成静卦(0 为少阴,1 为少阳)\n return exist ? new 六爻卦(exist.二进制表示.split('').map((c) => new 爻(c === '1' ? 1 : 2))) : null;\n }\n\n // #endregion\n\n /**\n * 6 Yao positions, indexed from bottom to top.\n * Index from 0 to 5, where 0 is the first Yao (初爻) and 5 is the sixth Yao (上爻).\n */\n #六爻: [爻, 爻, 爻, 爻, 爻, 爻];\n\n /**\n * 指向六爻卦象信息的对象,外部不可更改\n */\n #信息: 六十四卦;\n\n /**\n * 只含有阴阳的二进制表示\n * - `100100`代表震为雷\n */\n #二进制表示: string;\n\n /**\n * Whether this hexagram has already changed to another hexagram. Once a hexagram is changed, it cannot change again.\n */\n #动静状态: 动静状态;\n\n /**\n * The original hexagram before any changes.\n */\n #本卦: 六爻卦;\n\n /**\n * 下三爻组成的卦\n */\n #内卦: 八卦;\n\n /**\n * 上三爻组成的卦\n */\n #外卦: 八卦;\n\n /**\n * Whether this gram is 六冲、六合\n */\n #六冲六合: '六冲' | '六合' | undefined;\n\n #是否为八纯卦: boolean;\n\n /**\n * Includes 六亲、天干、地支、五行. Looks like \"兄弟癸丑土\" \"官鬼辛卯木\"\n */\n #六亲干支五行: string[];\n\n /**\n * Index of the 世爻\n */\n #世爻: 0 | 1 | 2 | 3 | 4 | 5;\n\n /**\n * Index of the 应爻\n */\n #应爻: 0 | 1 | 2 | 3 | 4 | 5;\n\n /**\n * Create a Hexagram from an array of Yao with length 6.\n * @param 六爻 从初爻到上爻6个爻组成的数组\n * @param 状态 动静状态,不传则由爻推断\n * @param 本卦 仅变卦需要传入。六亲在构造时就要按本卦的宫装好,所以不能等构造完再赋值\n */\n constructor(六爻: 爻[], 状态?: 动静状态, 本卦?: 六爻卦) {\n if (六爻.length !== 6 || 六爻.some((a) => !(a instanceof 爻))) {\n throw new TypeError('第一个参数必须是6个爻对象');\n }\n\n // 保证基础逻辑。比如静卦和动已变没有老阳老阴,动未变必须有老阳老阴\n if (状态 === 动静状态.静 || 状态 === 动静状态.动已变) {\n if (六爻.some((v) => v.阳数 === 3 || v.阳数 === 0)) {\n throw new TypeError('静卦和动已变卦不能有老阳老阴');\n }\n } else if (状态 === 动静状态.动未变) {\n if (六爻.every((v) => v.阳数 !== 3 && v.阳数 !== 0)) {\n throw new TypeError('动未变卦必须有老阳老阴');\n }\n } else if (状态 === undefined) {\n 状态 = 六爻.some((v) => v.动静状态 !== 动静状态.静) ? 动静状态.动未变 : 动静状态.静;\n } else {\n throw new TypeError('无效的动静状态');\n }\n\n this.#六爻 = 六爻.map((a) => a.克隆()) as [爻, 爻, 爻, 爻, 爻, 爻];\n this.#二进制表示 = this.#六爻.map((y) => (y.阴阳 === '阳' ? '1' : '0')).join('');\n // 一定能搜索到,因为爻数已经校验过\n this.#信息 = 六十四卦表.find((h) => h.二进制表示 === this.二进制表示)!;\n this.#动静状态 = 状态;\n this.#本卦 = 本卦 ?? this; // 没有传入则本卦为自身\n\n const ub = this.#二进制表示.slice(0, 3);\n const lb = this.#二进制表示.slice(3);\n this.#内卦 = 八卦表.find((t) => t.二进制表示 === ub)!;\n this.#外卦 = 八卦表.find((t) => t.二进制表示 === lb)!;\n\n const 六亲数组 = 装六亲五行(this);\n const 天干数组 = 装天干(this);\n const 内卦装 = this.#内卦.内卦地支五行.map((地支五行, i) => 六亲数组[i + 0] + 天干数组[i + 0] + 地支五行);\n const 外卦装 = this.#外卦.外卦地支五行.map((地支五行, i) => 六亲数组[i + 3] + 天干数组[i + 3] + 地支五行);\n this.#六亲干支五行 = [...内卦装, ...外卦装];\n\n const hg = 装世应(this);\n this.#世爻 = hg.世;\n this.#应爻 = hg.应;\n\n // special types\n\n if (_scattering.includes(this.#信息.卦名)) {\n this.#六冲六合 = '六冲';\n }\n if (_gathering.includes(this.#信息.卦名)) {\n this.#六冲六合 = '六合';\n }\n\n this.#是否为八纯卦 = _pure.includes(this.#信息.卦名);\n }\n\n get 六爻(): [爻, 爻, 爻, 爻, 爻, 爻] {\n return [...this.#六爻];\n }\n\n get 阳数(): number[] {\n return this.#六爻.map((v) => v.阳数);\n }\n\n get 宫位信息(): string {\n return `${this.#信息.宫}宫(${this.#信息.五行})${八宫卦位顺序表[this.#信息.八宫卦位]}`;\n }\n\n get 动静状态(): 动静状态 {\n return this.#动静状态;\n }\n\n /**\n * 若是变卦,则返回本卦。\n *\n * 若是静卦或者本来就是本卦,则返回自身。\n */\n get 本卦(): 六爻卦 {\n return this.#本卦;\n }\n\n get 六亲干支五行(): string[] {\n return [...this.#六亲干支五行];\n }\n\n /**\n * 返回世爻所在的index(0表示初爻,5表示上爻)\n */\n get 世爻(): 0 | 1 | 2 | 3 | 4 | 5 {\n return this.#世爻;\n }\n\n /**\n * 返回应爻所在的index(0表示初爻,5表示上爻)\n */\n get 应爻(): 0 | 1 | 2 | 3 | 4 | 5 {\n return this.#应爻;\n }\n\n get 六冲六合(): '六冲' | '六合' | undefined {\n return this.#六冲六合;\n }\n\n get 是否为八纯卦(): boolean {\n return this.#是否为八纯卦;\n }\n\n get 内卦(): 八卦 {\n return this.#内卦;\n }\n\n get 外卦(): 八卦 {\n return this.#外卦;\n }\n\n // #region 实现六十四卦信息接口,快捷访问\n get 二进制表示(): string {\n return this.#二进制表示;\n }\n\n get 卦名(): string {\n return this.#信息.卦名;\n }\n\n get 全名(): string {\n return this.#信息.全名;\n }\n\n get 符号(): string {\n return this.#信息.符号;\n }\n\n get 五行(): 五行 {\n return this.#信息.五行;\n }\n\n get 宫(): 八卦名 {\n return this.#信息.宫;\n }\n\n get 八宫卦位() {\n return this.#信息.八宫卦位;\n }\n // #endregion\n\n /**\n * 获得变爻卦象\n * @returns 变爻卦象,如果卦象静则返回它自己\n */\n 变(): 六爻卦 {\n if (this.#动静状态 !== 动静状态.动未变) {\n return this;\n }\n\n return new 六爻卦(\n this.#六爻.map((y) => y.变()),\n 动静状态.动已变,\n this,\n );\n }\n\n 克隆(): 六爻卦 {\n // 变卦的六亲继承自本卦,克隆时必须带上本卦,否则会按自身重新装六亲\n return new 六爻卦(this.#六爻, this.#动静状态, this.#本卦 === this ? undefined : this.#本卦);\n }\n\n toString(): string {\n return this.全名;\n }\n\n [Symbol.toPrimitive]() {\n return this.全名;\n }\n}\n"],"mappings":"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"}
|
package/liuyao-skill/SKILL.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# 六爻卦象解析技能
|
|
1
|
+
# 六爻卦象解析技能 `v1.0.0`
|
|
2
2
|
|
|
3
3
|
**你是等同于野鹤老人水平的优秀六爻占卜师。本技能包含装挂脚本和解卦指导txt文件,请你按流程指引操作。**
|
|
4
4
|
|
|
@@ -32,22 +32,22 @@
|
|
|
32
32
|
**使用parser.skill.mjs解析卦象**
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
node parser.skill.mjs <卦象字符串>
|
|
35
|
+
node parser.skill.mjs <卦象字符串> [--date=<日期>] [--format=<格式>]
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
-
|
|
38
|
+
- **输出格式**:`--format` 可选,不写时默认 `json`
|
|
39
|
+
- `json`(默认):紧凑 JSON,`JSON.stringify(obj)`
|
|
40
|
+
- `pretty-json`:缩进两格的 JSON,`JSON.stringify(obj, null, 2)`
|
|
41
|
+
- `yaml`:YAML 文本
|
|
42
|
+
- `md`:Markdown 排盘表格,本卦逐爻列出,变卦只标动爻装卦
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- **输出格式**:JSON格式,包含:
|
|
44
|
+
- **卦象字符串格式**:由初爻到上爻,可以是多种形式
|
|
45
|
+
- 六位阳数:`112233`(0 老阴、1 少阳、2 少阴、3 老阳,0 和 3 为动爻)
|
|
46
|
+
- 六位单拆重交:`单单拆拆重重`(交单拆重对应阳数 0 1 2 3)
|
|
47
|
+
- 卦名或全名:`天风姤`、`姤`、`天火`(名字不含动爻信息,得到的是静卦)
|
|
45
48
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- 六神配置(青龙、朱雀、勾陈、螣蛇、白虎、玄武)
|
|
49
|
-
- 世应位置
|
|
50
|
-
- 变爻信息(如有动爻)
|
|
49
|
+
- **日期**:用 `--date=<日期>` 传入占卜的具体时间,交给 `new Date` 直接解析,用于确定月建、日辰,如 `--date=2026-10-31T13:00`。**请把日期和时间写全**:`new Date` 对纯日期 `2026-10-31` 按 UTC 零点解析(不是本地零点),在中国会固定成辰时,在 UTC 以西的时区会退到前一天,日辰和时辰都会错;带时间的 `2026-10-31T13:00` 才按本地时区解析
|
|
50
|
+
- **输出内容**:爻象信息(阴阳、位置)、六亲配置(父母、兄弟、子孙、妻财、官鬼)、六神配置(青龙、朱雀、勾陈、螣蛇、白虎、玄武)、世应位置、变爻信息(如有动爻)
|
|
51
51
|
|
|
52
52
|
## 解卦工作流程
|
|
53
53
|
|
|
@@ -1 +1,58 @@
|
|
|
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=[{binary:`000000`,id:`坤为地`,sign:`䷁`,phase:`土`,palace:`坤`,generation:0,yangs:[2,2,2,2,2,2],name:`坤`},{binary:`100000`,id:`地雷复`,sign:`䷗`,phase:`土`,palace:`坤`,generation:1,yangs:[1,2,2,2,2,2],name:`复`},{binary:`010000`,id:`地水师`,sign:`䷆`,phase:`水`,palace:`坎`,generation:7,yangs:[2,1,2,2,2,2],name:`师`},{binary:`110000`,id:`地泽临`,sign:`䷒`,phase:`土`,palace:`坤`,generation:2,yangs:[1,1,2,2,2,2],name:`临`},{binary:`001000`,id:`地山谦`,sign:`䷎`,phase:`土`,palace:`兑`,generation:5,yangs:[2,2,1,2,2,2],name:`谦`},{binary:`101000`,id:`地火明夷`,sign:`䷣`,phase:`水`,palace:`坎`,generation:6,yangs:[1,2,1,2,2,2],name:`明夷`},{binary:`011000`,id:`地风升`,sign:`䷭`,phase:`木`,palace:`震`,generation:4,yangs:[2,1,1,2,2,2],name:`升`},{binary:`111000`,id:`地天泰`,sign:`䷊`,phase:`土`,palace:`坤`,generation:3,yangs:[1,1,1,2,2,2],name:`泰`},{binary:`000100`,id:`雷地豫`,sign:`䷏`,phase:`木`,palace:`震`,generation:1,yangs:[2,2,2,1,2,2],name:`豫`},{binary:`100100`,id:`震为雷`,sign:`䷲`,phase:`木`,palace:`震`,generation:0,yangs:[1,2,2,1,2,2],name:`震`},{binary:`010100`,id:`雷水解`,sign:`䷧`,phase:`木`,palace:`震`,generation:2,yangs:[2,1,2,1,2,2],name:`解`},{binary:`110100`,id:`雷泽归妹`,sign:`䷵`,phase:`金`,palace:`兑`,generation:7,yangs:[1,1,2,1,2,2],name:`归妹`},{binary:`001100`,id:`雷山小过`,sign:`䷽`,phase:`金`,palace:`兑`,generation:6,yangs:[2,2,1,1,2,2],name:`小过`},{binary:`101100`,id:`雷火丰`,sign:`䷶`,phase:`水`,palace:`坎`,generation:5,yangs:[1,2,1,1,2,2],name:`丰`},{binary:`011100`,id:`雷风恒`,sign:`䷟`,phase:`木`,palace:`震`,generation:3,yangs:[2,1,1,1,2,2],name:`恒`},{binary:`111100`,id:`雷天大壮`,sign:`䷡`,phase:`土`,palace:`坤`,generation:4,yangs:[1,1,1,1,2,2],name:`大壮`},{binary:`000010`,id:`水地比`,sign:`䷇`,phase:`土`,palace:`坤`,generation:7,yangs:[2,2,2,2,1,2],name:`比`},{binary:`100010`,id:`水雷屯`,sign:`䷂`,phase:`水`,palace:`坎`,generation:2,yangs:[1,2,2,2,1,2],name:`屯`},{binary:`010010`,id:`坎为水`,sign:`䷜`,phase:`水`,palace:`坎`,generation:0,yangs:[2,1,2,2,1,2],name:`坎`},{binary:`110010`,id:`水泽节`,sign:`䷻`,phase:`水`,palace:`坎`,generation:1,yangs:[1,1,2,2,1,2],name:`节`},{binary:`001010`,id:`水山蹇`,sign:`䷦`,phase:`金`,palace:`兑`,generation:4,yangs:[2,2,1,2,1,2],name:`蹇`},{binary:`101010`,id:`水火既济`,sign:`䷾`,phase:`水`,palace:`坎`,generation:3,yangs:[1,2,1,2,1,2],name:`既济`},{binary:`011010`,id:`水风井`,sign:`䷯`,phase:`木`,palace:`震`,generation:5,yangs:[2,1,1,2,1,2],name:`井`},{binary:`111010`,id:`水天需`,sign:`䷄`,phase:`土`,palace:`坤`,generation:6,yangs:[1,1,1,2,1,2],name:`需`},{binary:`000110`,id:`泽地萃`,sign:`䷬`,phase:`金`,palace:`兑`,generation:2,yangs:[2,2,2,1,1,2],name:`萃`},{binary:`100110`,id:`泽雷随`,sign:`䷐`,phase:`木`,palace:`震`,generation:7,yangs:[1,2,2,1,1,2],name:`随`},{binary:`010110`,id:`泽水困`,sign:`䷮`,phase:`金`,palace:`兑`,generation:1,yangs:[2,1,2,1,1,2],name:`困`},{binary:`110110`,id:`兑为泽`,sign:`䷹`,phase:`金`,palace:`兑`,generation:0,yangs:[1,1,2,1,1,2],name:`兑`},{binary:`001110`,id:`泽山咸`,sign:`䷞`,phase:`金`,palace:`兑`,generation:3,yangs:[2,2,1,1,1,2],name:`咸`},{binary:`101110`,id:`泽火革`,sign:`䷰`,phase:`水`,palace:`坎`,generation:4,yangs:[1,2,1,1,1,2],name:`革`},{binary:`011110`,id:`泽风大过`,sign:`䷛`,phase:`木`,palace:`震`,generation:6,yangs:[2,1,1,1,1,2],name:`大过`},{binary:`111110`,id:`泽天夬`,sign:`䷪`,phase:`土`,palace:`坤`,generation:5,yangs:[1,1,1,1,1,2],name:`夬`},{binary:`000001`,id:`山地剥`,sign:`䷖`,phase:`金`,palace:`乾`,generation:5,yangs:[2,2,2,2,2,1],name:`剥`},{binary:`100001`,id:`山雷颐`,sign:`䷚`,phase:`木`,palace:`巽`,generation:6,yangs:[1,2,2,2,2,1],name:`颐`},{binary:`010001`,id:`山水蒙`,sign:`䷃`,phase:`火`,palace:`离`,generation:4,yangs:[2,1,2,2,2,1],name:`蒙`},{binary:`110001`,id:`山泽损`,sign:`䷨`,phase:`土`,palace:`艮`,generation:3,yangs:[1,1,2,2,2,1],name:`损`},{binary:`001001`,id:`艮为山`,sign:`䷳`,phase:`土`,palace:`艮`,generation:0,yangs:[2,2,1,2,2,1],name:`艮`},{binary:`101001`,id:`山火贲`,sign:`䷕`,phase:`土`,palace:`艮`,generation:1,yangs:[1,2,1,2,2,1],name:`贲`},{binary:`011001`,id:`山风蛊`,sign:`䷑`,phase:`木`,palace:`巽`,generation:7,yangs:[2,1,1,2,2,1],name:`蛊`},{binary:`111001`,id:`山天大畜`,sign:`䷙`,phase:`土`,palace:`艮`,generation:2,yangs:[1,1,1,2,2,1],name:`大畜`},{binary:`000101`,id:`火地晋`,sign:`䷢`,phase:`金`,palace:`乾`,generation:6,yangs:[2,2,2,1,2,1],name:`晋`},{binary:`100101`,id:`火雷噬嗑`,sign:`䷔`,phase:`木`,palace:`巽`,generation:5,yangs:[1,2,2,1,2,1],name:`噬嗑`},{binary:`010101`,id:`火水未济`,sign:`䷿`,phase:`火`,palace:`离`,generation:3,yangs:[2,1,2,1,2,1],name:`未济`},{binary:`110101`,id:`火泽睽`,sign:`䷥`,phase:`土`,palace:`艮`,generation:4,yangs:[1,1,2,1,2,1],name:`睽`},{binary:`001101`,id:`火山旅`,sign:`䷷`,phase:`火`,palace:`离`,generation:1,yangs:[2,2,1,1,2,1],name:`旅`},{binary:`101101`,id:`离为火`,sign:`䷝`,phase:`火`,palace:`离`,generation:0,yangs:[1,2,1,1,2,1],name:`离`},{binary:`011101`,id:`火风鼎`,sign:`䷱`,phase:`火`,palace:`离`,generation:2,yangs:[2,1,1,1,2,1],name:`鼎`},{binary:`111101`,id:`火天大有`,sign:`䷍`,phase:`金`,palace:`乾`,generation:7,yangs:[1,1,1,1,2,1],name:`大有`},{binary:`000011`,id:`风地观`,sign:`䷓`,phase:`金`,palace:`乾`,generation:4,yangs:[2,2,2,2,1,1],name:`观`},{binary:`100011`,id:`风雷益`,sign:`䷩`,phase:`木`,palace:`巽`,generation:3,yangs:[1,2,2,2,1,1],name:`益`},{binary:`010011`,id:`风水涣`,sign:`䷺`,phase:`火`,palace:`离`,generation:5,yangs:[2,1,2,2,1,1],name:`涣`},{binary:`110011`,id:`风泽中孚`,sign:`䷼`,phase:`土`,palace:`艮`,generation:6,yangs:[1,1,2,2,1,1],name:`中孚`},{binary:`001011`,id:`风山渐`,sign:`䷴`,phase:`土`,palace:`艮`,generation:7,yangs:[2,2,1,2,1,1],name:`渐`},{binary:`101011`,id:`风火家人`,sign:`䷤`,phase:`木`,palace:`巽`,generation:2,yangs:[1,2,1,2,1,1],name:`家人`},{binary:`011011`,id:`巽为风`,sign:`䷸`,phase:`木`,palace:`巽`,generation:0,yangs:[2,1,1,2,1,1],name:`巽`},{binary:`111011`,id:`风天小畜`,sign:`䷈`,phase:`木`,palace:`巽`,generation:1,yangs:[1,1,1,2,1,1],name:`小畜`},{binary:`000111`,id:`天地否`,sign:`䷋`,phase:`金`,palace:`乾`,generation:3,yangs:[2,2,2,1,1,1],name:`否`},{binary:`100111`,id:`天雷无妄`,sign:`䷘`,phase:`木`,palace:`巽`,generation:4,yangs:[1,2,2,1,1,1],name:`无妄`},{binary:`010111`,id:`天水讼`,sign:`䷅`,phase:`火`,palace:`离`,generation:6,yangs:[2,1,2,1,1,1],name:`讼`},{binary:`110111`,id:`天泽履`,sign:`䷉`,phase:`土`,palace:`艮`,generation:5,yangs:[1,1,2,1,1,1],name:`履`},{binary:`001111`,id:`天山遁`,sign:`䷠`,phase:`金`,palace:`乾`,generation:2,yangs:[2,2,1,1,1,1],name:`遁`},{binary:`101111`,id:`天火同人`,sign:`䷌`,phase:`火`,palace:`离`,generation:7,yangs:[1,2,1,1,1,1],name:`同人`},{binary:`011111`,id:`天风姤`,sign:`䷫`,phase:`金`,palace:`乾`,generation:1,yangs:[2,1,1,1,1,1],name:`姤`},{binary:`111111`,id:`乾为天`,sign:`䷀`,phase:`金`,palace:`乾`,generation:0,yangs:[1,1,1,1,1,1],name:`乾`}],m=[{id:`坤`,binary:`000`,yangs:0,image:`地`,sign:`☷`,inner:[`未土`,`巳火`,`卯木`],outer:[`丑土`,`亥水`,`酉金`]},{id:`震`,binary:`100`,yangs:1,image:`雷`,sign:`☳`,inner:[`子水`,`寅木`,`辰土`],outer:[`午火`,`申金`,`戌土`]},{id:`坎`,binary:`010`,yangs:1,image:`水`,sign:`☵`,inner:[`寅木`,`辰土`,`午火`],outer:[`申金`,`戌土`,`子水`]},{id:`兑`,binary:`110`,yangs:2,image:`泽`,sign:`☱`,inner:[`巳火`,`卯木`,`丑土`],outer:[`亥水`,`酉金`,`未土`]},{id:`艮`,binary:`001`,yangs:1,image:`山`,sign:`☶`,inner:[`辰土`,`午火`,`申金`],outer:[`戌土`,`子水`,`寅木`]},{id:`离`,binary:`101`,yangs:2,image:`火`,sign:`☲`,inner:[`卯木`,`丑土`,`亥水`],outer:[`酉金`,`未土`,`巳火`]},{id:`巽`,binary:`011`,yangs:2,image:`风`,sign:`☴`,inner:[`丑土`,`亥水`,`酉金`],outer:[`未土`,`巳火`,`卯木`]},{id:`乾`,binary:`111`,yangs:3,image:`天`,sign:`☰`,inner:[`子水`,`寅木`,`辰土`],outer:[`午火`,`申金`,`戌土`]}];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.id].inner,n=h[e.outer.id].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{host:_[e.generation],guest:v[e.generation]}}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.primary?e.primary.palace:e.palace];return[...e.inner.inner.map(t),...e.outer.outer.map(t)]}const C=[`老阴`,`少阳`,`少阴`,`老阳`],w=`交单拆重`,T=`×’”○`,E=[1,1,2,2],D=[0,1,0,1];var O=class e{static getName(e){return C[e]}static fromSymbol(t){let n=T.indexOf(t);return n===-1?null:new e(n)}static fromSymbolName(t){let n=w.indexOf(t);return n===-1?null:new e(n)}static fromName(t){let n=C.indexOf(t);return n===-1?null:new e(n)}static fromDigitString(t){let n=`0123`.indexOf(t);return n===-1?null:new e(n)}static fromTrigramField(t){let n=m.find(e=>e.id===t||e.yangs===t||e.binary===t||e.sign===t);return n?new e(n.yangs):null}yangs;polar;dynamic;changed;pattern;name;symbol;constructor(e,t=!1){if(e!==0&&e!==1&&e!==2&&e!==3)throw Error(`Count of yang must be 0, 1, 2 or 3`);if(this.yangs=e,this.changed=t,this.polar=D[e],this.dynamic=e===0||e===3,this.pattern=T[e],this.name=C[e],this.symbol=w[e],this.dynamic&&this.changed)throw Error(`Changed Yao should not be dynamic.`)}eq(e){return this.yangs===e.yangs}eqeqeq(e){return this.yangs===e.yangs&&this.changed===e.changed}clone(){return new e(this.yangs,this.changed)}toChanged(){return new e(E[this.yangs],this.dynamic)}};const k=[`初爻`,`二爻`,`三爻`,`四爻`,`五爻`,`上爻`],A=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`,`无妄`,`大壮`],j=[`否`,`泰`,`复`,`豫`,`贲`,`旅`,`困`,`节`],M=[`乾`,`坤`,`震`,`巽`,`坎`,`离`,`艮`,`兑`];var N=class e{static fromQuaternary(t){let n=t.split(``).map(O.fromDigitString);return n.every(e=>e!==null)?new e(n):null}static fromSymbolName(t){let n=t.split(``).map(O.fromSymbolName);return n.every(e=>e!==null)?new e(n):null}static fromYangCounts(t){try{return new e(t.map(e=>new O(e)))}catch{return null}}static fromId(t){let n=p.find(e=>e.id===t||e.id.slice(2)===t||e.id.startsWith(t)&&t.length>1);return n?e.fromYangCounts(n.yangs):null}static fromPalace(t){let n=p.find(e=>e.id[2]===t);return n?e.fromYangCounts(n.yangs):null}yaos;yangs;binary;id;name;sign;palace;phase;generation;palaceInfo;dynamic;changed;inner;outer;specialType;pure;kins;host;guest;primary;constructor(e,t=null){if(e.length!==6)throw Error(`Array length mismatch, A Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang`);if(e.some(e=>!(e instanceof O)))throw Error(`Invalid Arguments, Hexagram must be constructed with exactly 6 Yaos or 6 counts of yang`);this.yaos=e.map(e=>e.clone()),this.binary=this.yaos.map(e=>e.polar).join(``);let n=p.find(e=>e.binary===this.binary);this.palace=n.palace,this.id=n.id,this.generation=n.generation,this.yangs=this.yaos.map(e=>e.yangs),this.phase=n.phase,this.name=n.name,this.sign=n.sign,this.palaceInfo=`${n.palace}宫(${n.phase})${f[n.generation]}`,this.dynamic=this.yaos.some(e=>e.dynamic||e.changed),this.changed=!!t,this.primary=t;let r=this.binary.slice(0,3),i=this.binary.slice(3);this.inner=m.find(e=>e.binary===r),this.outer=m.find(e=>e.binary===i);let a=S(this),o=g(this);this.kins=[...this.inner.inner.map((e,t)=>a[t]+o[t]+e),...this.outer.outer.map((e,t)=>a[t+3]+o[t+3]+e)];let s=y(this);this.host=s.host,this.guest=s.guest,A.includes(n.name)&&(this.specialType=`六冲`),j.includes(n.name)&&(this.specialType=`六合`),this.pure=M.includes(n.name)}toChanged(){if(!this.dynamic)return null;if(this.changed)throw Error(`The gram is already changed, cannot change again.`);return new e(this.yaos.map(e=>e.toChanged()),this)}clone(){return new e(this.yaos,this.primary)}toString(){return this.id}[Symbol.toPrimitive](){return this.id}};const P=[{heavenlyStem:`甲`,gods:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{heavenlyStem:`乙`,gods:[`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`]},{heavenlyStem:`丙`,gods:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{heavenlyStem:`丁`,gods:[`朱雀`,`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`]},{heavenlyStem:`戊`,gods:[`勾陈`,`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`]},{heavenlyStem:`己`,gods:[`螣蛇`,`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`]},{heavenlyStem:`庚`,gods:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{heavenlyStem:`辛`,gods:[`白虎`,`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`]},{heavenlyStem:`壬`,gods:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]},{heavenlyStem:`癸`,gods:[`玄武`,`青龙`,`朱雀`,`勾陈`,`螣蛇`,`白虎`]}];Object.freeze(P);function F(e,t,n){let r={爻:e.yaos[t].name,装卦:e.kins[t]};return e.host===t?r.关系=`世`:e.guest===t&&(r.关系=`应`),n&&(r.六神=n[t]),r}function I(e,t){let n=e.toChanged();return{本卦:{上爻:F(e,5,t),五爻:F(e,4,t),四爻:F(e,3,t),三爻:F(e,2,t),二爻:F(e,1,t),初爻:F(e,0,t),卦名:e.name,宫:e.palaceInfo,变爻:e.dynamic?e.yaos.map((e,t)=>e.dynamic?k[t]:null).filter(e=>e!==null):void 0,六冲六合:e.specialType??`不是`},变卦:n?{上爻:F(n,5,t),五爻:F(n,4,t),四爻:F(n,3,t),三爻:F(n,2,t),二爻:F(n,1,t),初爻:F(n,0,t),卦名:n.name,宫:n.palaceInfo,六冲六合:n.specialType??`不是`}:`无`}}function L(){let e=process.argv[2];if(!e)return null;let t=e.split(``).map(O.fromTrigramField);return t.every(e=>e!==null)&&t.length>=6?new N(t):N.fromQuaternary(e)||N.fromId(e)||N.fromSymbolName(e)}function R(e){return`子丑丑寅寅卯卯辰辰巳巳午午未未申申酉酉戌戌亥亥子`[e.getHours()]??`未知`}function z(){let e=process.argv[3],t=new Date(e);if(Number.isNaN(t.getTime()))return null;let n=d.solar2lunar(t.getFullYear(),t.getMonth()+1,t.getDate());if(n===-1)return null;let r=P.find(e=>e.heavenlyStem===n.gzDay[0]).gods;return{时辰:{年:n.gzYear,月:n.gzMonth,日:n.gzDay,时:R(t)},gods:r}}function B(){let e=L();if(!e)return JSON.stringify({version:`0.5.4`,卦象:null},null,2);let t=z();return JSON.stringify({version:`0.5.4`,卦象:I(e,t?.gods),时辰:t?.时辰},null,2)}console.log(B());export{};
|
|
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?`变`:`本`}卦:
|
|
2
|
+
卦名: ${e.卦名}
|
|
3
|
+
宫: ${e.宫位信息}
|
|
4
|
+
六冲六合: ${e.六冲六合??`不是`}
|
|
5
|
+
上爻:
|
|
6
|
+
爻: ${n.爻}
|
|
7
|
+
装卦: ${n.装卦}
|
|
8
|
+
关系: ${n.关系}
|
|
9
|
+
六神: ${n.六神}
|
|
10
|
+
是否动爻: ${n.是否动爻}
|
|
11
|
+
五爻:
|
|
12
|
+
爻: ${r.爻}
|
|
13
|
+
装卦: ${r.装卦}
|
|
14
|
+
关系: ${r.关系}
|
|
15
|
+
六神: ${r.六神}
|
|
16
|
+
是否动爻: ${r.是否动爻}
|
|
17
|
+
四爻:
|
|
18
|
+
爻: ${i.爻}
|
|
19
|
+
装卦: ${i.装卦}
|
|
20
|
+
关系: ${i.关系}
|
|
21
|
+
六神: ${i.六神}
|
|
22
|
+
是否动爻: ${i.是否动爻}
|
|
23
|
+
三爻:
|
|
24
|
+
爻: ${a.爻}
|
|
25
|
+
装卦: ${a.装卦}
|
|
26
|
+
关系: ${a.关系}
|
|
27
|
+
六神: ${a.六神}
|
|
28
|
+
是否动爻: ${a.是否动爻}
|
|
29
|
+
二爻:
|
|
30
|
+
爻: ${o.爻}
|
|
31
|
+
装卦: ${o.装卦}
|
|
32
|
+
关系: ${o.关系}
|
|
33
|
+
六神: ${o.六神}
|
|
34
|
+
是否动爻: ${o.是否动爻}
|
|
35
|
+
初爻:
|
|
36
|
+
爻: ${s.爻}
|
|
37
|
+
装卦: ${s.装卦}
|
|
38
|
+
关系: ${s.关系}
|
|
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(`
|
|
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=<格式>]
|
|
45
|
+
|
|
46
|
+
<卦象字符串> 必填,由初爻到上爻
|
|
47
|
+
六位阳数 如 112233(0 老阴、1 少阳、2 少阴、3 老阳,0 和 3 为动爻)
|
|
48
|
+
六位单拆重交 如 单单拆拆重重(交单拆重对应阳数 0 1 2 3)
|
|
49
|
+
卦名或全名 如 天风姤、姤、天火
|
|
50
|
+
--date=<日期> 可选,占卜时间,交给 new Date 解析,如 2026-10-31 或 "2026-10-31T13:00"
|
|
51
|
+
只写日期时 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)
|
|
53
|
+
六位单拆重交(如 单单拆拆重重)
|
|
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(`
|
|
55
|
+
`).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{};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "liuyao",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"author": {
|
|
5
5
|
"name": "Kasukabe Tsumugi",
|
|
6
6
|
"email": "futami16237@gmail.com"
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
"description_zh": "提供六爻卦象的元数据,数据来自《增删卜易》等著作",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"module": "./dist/index.mjs",
|
|
13
|
-
"types": "./dist/index.d.
|
|
13
|
+
"types": "./dist/index.d.mts",
|
|
14
14
|
"exports": {
|
|
15
|
-
"types": "./dist/index.d.
|
|
15
|
+
"types": "./dist/index.d.mts",
|
|
16
16
|
"import": "./dist/index.mjs",
|
|
17
17
|
"default": "./dist/index.mjs"
|
|
18
18
|
},
|