liuyao 0.5.1 → 0.5.4
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/dist/index.d.mts +3 -4
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/liuyao-skill/SKILL.md +1 -1
- package/liuyao-skill/books//345/205/255/344/272/262/344/272/272/344/272/213/347/261/273.txt +131 -131
- package/liuyao-skill/books//345/207/272/350/241/214/350/241/214/344/272/272/347/261/273.txt +76 -76
- package/liuyao-skill/books//345/215/207/351/200/211/344/273/225/351/200/224/347/261/273.txt +182 -182
- package/liuyao-skill/books//345/244/251/346/227/266/345/215/240.txt +300 -300
- package/liuyao-skill/books//345/251/232/345/247/273/350/203/216/344/272/247/347/261/273.txt +100 -100
- package/liuyao-skill/books//345/255/246/344/270/232/345/212/237/345/220/215/347/261/273.txt +152 -152
- package/liuyao-skill/books//345/256/230/351/235/236/350/257/211/350/256/274/347/261/273.txt +9 -9
- package/liuyao-skill/books//345/256/266/345/256/205/350/220/245/351/200/240/347/261/273.txt +113 -113
- package/liuyao-skill/books//346/261/202/350/264/242/350/264/270/346/230/223/347/261/273.txt +171 -171
- package/liuyao-skill/books//347/226/276/347/227/205/345/214/273/347/226/227/347/261/273.txt +128 -128
- package/liuyao-skill/books//350/272/253/345/221/275/345/257/277/345/205/203/347/261/273.txt +331 -331
- package/liuyao-skill/books//351/243/216/346/260/264/350/214/224/350/221/254/347/261/273.txt +91 -91
- package/liuyao-skill/parser.skill.mjs +1 -1
- package/package.json +5 -5
package/dist/index.d.mts
CHANGED
|
@@ -216,10 +216,9 @@ declare class Yao {
|
|
|
216
216
|
/**
|
|
217
217
|
* Whether this Yao has already changed to another Yao. Once a Yao is changed, it cannot change again.
|
|
218
218
|
*/
|
|
219
|
-
readonly changed: boolean;
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
*/
|
|
219
|
+
readonly changed: boolean; /**
|
|
220
|
+
* The symbol representing this Yao, which is one of '×', '’', '”', '○'.
|
|
221
|
+
*/
|
|
223
222
|
readonly pattern: '×' | '’' | '”' | '○';
|
|
224
223
|
readonly name: '老阴' | '少阳' | '少阴' | '老阳';
|
|
225
224
|
readonly symbol: '单' | '拆' | '重' | '交';
|
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=[{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};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["_mappers"],"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","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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"}
|
package/liuyao-skill/SKILL.md
CHANGED