@gracefullight/saju 0.4.1 → 0.5.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/dist/__tests__/relations.test.js +6 -6
- package/dist/__tests__/saju.test.js +3 -3
- package/dist/__tests__/sinsals.test.js +5 -5
- package/dist/__tests__/solar-terms.test.js +26 -16
- package/dist/__tests__/strength.test.js +2 -2
- package/dist/__tests__/ten-gods.test.js +6 -6
- package/dist/__tests__/twelve-stages.test.js +6 -6
- package/dist/__tests__/yongshen.test.js +3 -3
- package/dist/core/relations.d.ts +36 -19
- package/dist/core/relations.d.ts.map +1 -1
- package/dist/core/relations.js +105 -33
- package/dist/core/sinsals.d.ts +16 -6
- package/dist/core/sinsals.d.ts.map +1 -1
- package/dist/core/sinsals.js +19 -8
- package/dist/core/solar-terms.d.ts +19 -105
- package/dist/core/solar-terms.d.ts.map +1 -1
- package/dist/core/solar-terms.js +56 -29
- package/dist/core/strength.d.ts +9 -1
- package/dist/core/strength.d.ts.map +1 -1
- package/dist/core/strength.js +38 -11
- package/dist/core/ten-gods.d.ts +36 -64
- package/dist/core/ten-gods.d.ts.map +1 -1
- package/dist/core/ten-gods.js +109 -119
- package/dist/core/twelve-stages.d.ts +19 -8
- package/dist/core/twelve-stages.d.ts.map +1 -1
- package/dist/core/twelve-stages.js +34 -24
- package/dist/core/yongshen.d.ts +12 -6
- package/dist/core/yongshen.d.ts.map +1 -1
- package/dist/core/yongshen.js +55 -37
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/types/common.d.ts +8 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -48,7 +48,7 @@ describe("relations", () => {
|
|
|
48
48
|
describe("analyzeRelations", () => {
|
|
49
49
|
it("finds stem combinations in four pillars", () => {
|
|
50
50
|
const result = analyzeRelations("甲子", "己丑", "丙寅", "辛亥");
|
|
51
|
-
const stemCombos = result.combinations.filter((c) => c.type === "
|
|
51
|
+
const stemCombos = result.combinations.filter((c) => c.type.key === "stemCombination");
|
|
52
52
|
expect(stemCombos.length).toBeGreaterThan(0);
|
|
53
53
|
});
|
|
54
54
|
it("finds branch clashes in four pillars", () => {
|
|
@@ -57,23 +57,23 @@ describe("relations", () => {
|
|
|
57
57
|
});
|
|
58
58
|
it("finds 삼합 (triple combination)", () => {
|
|
59
59
|
const result = analyzeRelations("甲寅", "丙午", "戊戌", "庚子");
|
|
60
|
-
const tripleCombos = result.combinations.filter((c) => c.type === "
|
|
60
|
+
const tripleCombos = result.combinations.filter((c) => c.type.key === "tripleCombination");
|
|
61
61
|
expect(tripleCombos.length).toBeGreaterThan(0);
|
|
62
|
-
expect(tripleCombos[0].resultElement).toBe("fire");
|
|
62
|
+
expect(tripleCombos[0].resultElement.key).toBe("fire");
|
|
63
63
|
});
|
|
64
64
|
it("finds 육합 (six combination)", () => {
|
|
65
65
|
const result = analyzeRelations("甲子", "乙丑", "丙寅", "丁卯");
|
|
66
|
-
const sixCombos = result.combinations.filter((c) => c.type === "
|
|
66
|
+
const sixCombos = result.combinations.filter((c) => c.type.key === "sixCombination");
|
|
67
67
|
expect(sixCombos.length).toBeGreaterThan(0);
|
|
68
68
|
});
|
|
69
69
|
it("finds 형 (punishment)", () => {
|
|
70
70
|
const result = analyzeRelations("甲寅", "丙巳", "戊申", "庚子");
|
|
71
71
|
expect(result.punishments.length).toBeGreaterThan(0);
|
|
72
|
-
expect(result.punishments[0].punishmentType).toBe("
|
|
72
|
+
expect(result.punishments[0].punishmentType.key).toBe("ungrateful");
|
|
73
73
|
});
|
|
74
74
|
it("includes transformStatus and transformReason for combinations", () => {
|
|
75
75
|
const result = analyzeRelations("甲子", "己丑", "丙寅", "辛亥");
|
|
76
|
-
const stemCombos = result.combinations.filter((c) => c.type === "
|
|
76
|
+
const stemCombos = result.combinations.filter((c) => c.type.key === "stemCombination");
|
|
77
77
|
expect(stemCombos.length).toBeGreaterThan(0);
|
|
78
78
|
expect(stemCombos[0]).toHaveProperty("transformStatus");
|
|
79
79
|
expect(stemCombos[0]).toHaveProperty("transformReason");
|
|
@@ -32,8 +32,8 @@ describe("getSaju integration", () => {
|
|
|
32
32
|
gender: "female",
|
|
33
33
|
preset: STANDARD_PRESET,
|
|
34
34
|
});
|
|
35
|
-
expect(result.solarTerms.current.
|
|
36
|
-
expect(result.solarTerms.next.
|
|
35
|
+
expect(result.solarTerms.current.korean).toBe("소한");
|
|
36
|
+
expect(result.solarTerms.next.korean).toBe("대한");
|
|
37
37
|
expect(result.solarTerms.daysSinceCurrent).toBeGreaterThanOrEqual(0);
|
|
38
38
|
expect(result.solarTerms.daysUntilNext).toBeGreaterThan(0);
|
|
39
39
|
expect(result.solarTerms.currentDate).toBeDefined();
|
|
@@ -99,7 +99,7 @@ describe("getSaju integration", () => {
|
|
|
99
99
|
preset: STANDARD_PRESET,
|
|
100
100
|
});
|
|
101
101
|
expect(result.tenGods.dayMaster).toBe("丁");
|
|
102
|
-
expect(result.tenGods.day.stem.tenGod).toBe("
|
|
102
|
+
expect(result.tenGods.day.stem.tenGod.key).toBe("dayMaster");
|
|
103
103
|
});
|
|
104
104
|
it("calculates major luck start age based on actual solar terms (not fixed 10)", async () => {
|
|
105
105
|
const adapter = await createLuxonAdapter();
|
|
@@ -4,17 +4,17 @@ describe("sinsals", () => {
|
|
|
4
4
|
describe("analyzeSinsals", () => {
|
|
5
5
|
it("should detect peach blossom (도화살)", () => {
|
|
6
6
|
const result = analyzeSinsals("甲寅", "丙寅", "戊卯", "庚午");
|
|
7
|
-
const peachBlossoms = result.matches.filter((m) => m.sinsal === "peachBlossom");
|
|
7
|
+
const peachBlossoms = result.matches.filter((m) => m.sinsal.key === "peachBlossom");
|
|
8
8
|
expect(peachBlossoms.length).toBeGreaterThan(0);
|
|
9
9
|
});
|
|
10
10
|
it("should detect sky horse (역마살)", () => {
|
|
11
11
|
const result = analyzeSinsals("甲寅", "丙寅", "戊申", "庚午");
|
|
12
|
-
const skyHorses = result.matches.filter((m) => m.sinsal === "skyHorse");
|
|
12
|
+
const skyHorses = result.matches.filter((m) => m.sinsal.key === "skyHorse");
|
|
13
13
|
expect(skyHorses.length).toBeGreaterThan(0);
|
|
14
14
|
});
|
|
15
15
|
it("should detect flowery canopy (화개살)", () => {
|
|
16
16
|
const result = analyzeSinsals("甲寅", "丙戌", "戊子", "庚午");
|
|
17
|
-
const floweryCanopies = result.matches.filter((m) => m.sinsal === "floweryCanopy");
|
|
17
|
+
const floweryCanopies = result.matches.filter((m) => m.sinsal.key === "floweryCanopy");
|
|
18
18
|
expect(floweryCanopies.length).toBeGreaterThan(0);
|
|
19
19
|
});
|
|
20
20
|
it("should return summary grouped by sinsal", () => {
|
|
@@ -29,14 +29,14 @@ describe("sinsals", () => {
|
|
|
29
29
|
const result = analyzeSinsals("甲子", "丙寅", "戊辰", "庚午");
|
|
30
30
|
const seen = new Set();
|
|
31
31
|
for (const match of result.matches) {
|
|
32
|
-
const key = `${match.sinsal}-${match.position}`;
|
|
32
|
+
const key = `${match.sinsal.key}-${match.position}`;
|
|
33
33
|
expect(seen.has(key)).toBe(false);
|
|
34
34
|
seen.add(key);
|
|
35
35
|
}
|
|
36
36
|
});
|
|
37
37
|
it("should detect sky noble (천을귀인)", () => {
|
|
38
38
|
const result = analyzeSinsals("甲丑", "丙寅", "甲子", "庚午");
|
|
39
|
-
const skyNobles = result.matches.filter((m) => m.sinsal === "skyNoble");
|
|
39
|
+
const skyNobles = result.matches.filter((m) => m.sinsal.key === "skyNoble");
|
|
40
40
|
expect(skyNobles.length).toBeGreaterThan(0);
|
|
41
41
|
});
|
|
42
42
|
});
|
|
@@ -15,51 +15,61 @@ describe("solar-terms", async () => {
|
|
|
15
15
|
}
|
|
16
16
|
});
|
|
17
17
|
it("should start with 소한 at 285°", () => {
|
|
18
|
-
expect(SOLAR_TERMS[0]).toEqual({
|
|
18
|
+
expect(SOLAR_TERMS[0]).toEqual({
|
|
19
|
+
key: "minorCold",
|
|
20
|
+
korean: "소한",
|
|
21
|
+
hanja: "小寒",
|
|
22
|
+
longitude: 285,
|
|
23
|
+
});
|
|
19
24
|
});
|
|
20
25
|
it("should have 입춘 at 315°", () => {
|
|
21
|
-
const ipchun = SOLAR_TERMS.find((t) => t.
|
|
22
|
-
expect(ipchun).toEqual({
|
|
26
|
+
const ipchun = SOLAR_TERMS.find((t) => t.korean === "입춘");
|
|
27
|
+
expect(ipchun).toEqual({
|
|
28
|
+
key: "springBegins",
|
|
29
|
+
korean: "입춘",
|
|
30
|
+
hanja: "立春",
|
|
31
|
+
longitude: 315,
|
|
32
|
+
});
|
|
23
33
|
});
|
|
24
34
|
});
|
|
25
35
|
describe("analyzeSolarTerms", () => {
|
|
26
36
|
it("should return current and next solar terms for mid-January", () => {
|
|
27
37
|
const dt = DateTime.fromObject({ year: 2024, month: 1, day: 15 }, { zone: "Asia/Seoul" });
|
|
28
38
|
const result = analyzeSolarTerms(adapter, dt);
|
|
29
|
-
expect(result.current.
|
|
30
|
-
expect(result.next.
|
|
39
|
+
expect(result.current.korean).toBe("소한");
|
|
40
|
+
expect(result.next.korean).toBe("대한");
|
|
31
41
|
expect(result.daysSinceCurrent).toBeGreaterThanOrEqual(0);
|
|
32
42
|
expect(result.daysUntilNext).toBeGreaterThan(0);
|
|
33
43
|
});
|
|
34
44
|
it("should return current and next solar terms for early February", () => {
|
|
35
45
|
const dt = DateTime.fromObject({ year: 2024, month: 2, day: 3 }, { zone: "Asia/Seoul" });
|
|
36
46
|
const result = analyzeSolarTerms(adapter, dt);
|
|
37
|
-
expect(result.current.
|
|
38
|
-
expect(result.next.
|
|
47
|
+
expect(result.current.korean).toBe("대한");
|
|
48
|
+
expect(result.next.korean).toBe("입춘");
|
|
39
49
|
});
|
|
40
50
|
it("should return current and next solar terms for summer solstice period", () => {
|
|
41
51
|
const dt = DateTime.fromObject({ year: 2024, month: 6, day: 25 }, { zone: "Asia/Seoul" });
|
|
42
52
|
const result = analyzeSolarTerms(adapter, dt);
|
|
43
|
-
expect(result.current.
|
|
44
|
-
expect(result.next.
|
|
53
|
+
expect(result.current.korean).toBe("하지");
|
|
54
|
+
expect(result.next.korean).toBe("소서");
|
|
45
55
|
});
|
|
46
56
|
it("should return current and next solar terms for winter solstice period", () => {
|
|
47
57
|
const dt = DateTime.fromObject({ year: 2024, month: 12, day: 25 }, { zone: "Asia/Seoul" });
|
|
48
58
|
const result = analyzeSolarTerms(adapter, dt);
|
|
49
|
-
expect(result.current.
|
|
50
|
-
expect(result.next.
|
|
59
|
+
expect(result.current.korean).toBe("동지");
|
|
60
|
+
expect(result.next.korean).toBe("소한");
|
|
51
61
|
});
|
|
52
62
|
it("should calculate days since current term correctly", () => {
|
|
53
63
|
const dt = DateTime.fromObject({ year: 2024, month: 3, day: 25 }, { zone: "Asia/Seoul" });
|
|
54
64
|
const result = analyzeSolarTerms(adapter, dt);
|
|
55
|
-
expect(result.current.
|
|
65
|
+
expect(result.current.korean).toBe("춘분");
|
|
56
66
|
expect(result.daysSinceCurrent).toBeGreaterThanOrEqual(0);
|
|
57
67
|
expect(result.daysSinceCurrent).toBeLessThan(16);
|
|
58
68
|
});
|
|
59
69
|
it("should calculate days until next term correctly", () => {
|
|
60
70
|
const dt = DateTime.fromObject({ year: 2024, month: 4, day: 1 }, { zone: "Asia/Seoul" });
|
|
61
71
|
const result = analyzeSolarTerms(adapter, dt);
|
|
62
|
-
expect(result.next.
|
|
72
|
+
expect(result.next.korean).toBe("청명");
|
|
63
73
|
expect(result.daysUntilNext).toBeGreaterThan(0);
|
|
64
74
|
expect(result.daysUntilNext).toBeLessThan(16);
|
|
65
75
|
});
|
|
@@ -85,7 +95,7 @@ describe("solar-terms", async () => {
|
|
|
85
95
|
});
|
|
86
96
|
it("should have all terms in order", () => {
|
|
87
97
|
const terms = getSolarTermsForYear(adapter, 2024, "Asia/Seoul");
|
|
88
|
-
const names = terms.map((t) => t.term.
|
|
98
|
+
const names = terms.map((t) => t.term.korean);
|
|
89
99
|
expect(names[0]).toBe("소한");
|
|
90
100
|
expect(names[2]).toBe("입춘");
|
|
91
101
|
expect(names[5]).toBe("춘분");
|
|
@@ -105,14 +115,14 @@ describe("solar-terms", async () => {
|
|
|
105
115
|
});
|
|
106
116
|
it("should have 입춘 around February 4", () => {
|
|
107
117
|
const terms = getSolarTermsForYear(adapter, 2024, "Asia/Seoul");
|
|
108
|
-
const ipchun = terms.find((t) => t.term.
|
|
118
|
+
const ipchun = terms.find((t) => t.term.korean === "입춘");
|
|
109
119
|
expect(ipchun?.date.month).toBe(2);
|
|
110
120
|
expect(ipchun?.date.day).toBeGreaterThanOrEqual(3);
|
|
111
121
|
expect(ipchun?.date.day).toBeLessThanOrEqual(5);
|
|
112
122
|
});
|
|
113
123
|
it("should have 하지 around June 21", () => {
|
|
114
124
|
const terms = getSolarTermsForYear(adapter, 2024, "Asia/Seoul");
|
|
115
|
-
const haji = terms.find((t) => t.term.
|
|
125
|
+
const haji = terms.find((t) => t.term.korean === "하지");
|
|
116
126
|
expect(haji?.date.month).toBe(6);
|
|
117
127
|
expect(haji?.date.day).toBeGreaterThanOrEqual(20);
|
|
118
128
|
expect(haji?.date.day).toBeLessThanOrEqual(22);
|
|
@@ -29,11 +29,11 @@ describe("strength", () => {
|
|
|
29
29
|
});
|
|
30
30
|
it("returns 신강 for strong day master", () => {
|
|
31
31
|
const result = analyzeStrength("甲子", "甲寅", "甲寅", "甲寅");
|
|
32
|
-
expect(["신강", "태강", "극왕", "중화신강"]).toContain(result.level);
|
|
32
|
+
expect(["신강", "태강", "극왕", "중화신강"]).toContain(result.level.korean);
|
|
33
33
|
});
|
|
34
34
|
it("returns 신약 for weak day master", () => {
|
|
35
35
|
const result = analyzeStrength("庚申", "庚申", "甲申", "庚申");
|
|
36
|
-
expect(["신약", "태약", "극약", "중화신약"]).toContain(result.level);
|
|
36
|
+
expect(["신약", "태약", "극약", "중화신약"]).toContain(result.level.korean);
|
|
37
37
|
});
|
|
38
38
|
it("includes description with day master info", () => {
|
|
39
39
|
const result = analyzeStrength("甲子", "丙寅", "甲辰", "乙亥");
|
|
@@ -88,10 +88,10 @@ describe("ten-gods", () => {
|
|
|
88
88
|
it("analyzes four pillars correctly", () => {
|
|
89
89
|
const result = analyzeTenGods("甲子", "丙寅", "甲辰", "乙亥");
|
|
90
90
|
expect(result.dayMaster).toBe("甲");
|
|
91
|
-
expect(result.year.stem.tenGod).toBe("
|
|
92
|
-
expect(result.month.stem.tenGod).toBe("
|
|
93
|
-
expect(result.day.stem.tenGod).toBe("
|
|
94
|
-
expect(result.hour.stem.tenGod).toBe("
|
|
91
|
+
expect(result.year.stem.tenGod.key).toBe("companion");
|
|
92
|
+
expect(result.month.stem.tenGod.key).toBe("eatingGod");
|
|
93
|
+
expect(result.day.stem.tenGod.key).toBe("dayMaster");
|
|
94
|
+
expect(result.hour.stem.tenGod.key).toBe("robWealth");
|
|
95
95
|
});
|
|
96
96
|
it("includes hidden stems analysis", () => {
|
|
97
97
|
const result = analyzeTenGods("甲子", "丙寅", "甲辰", "乙亥");
|
|
@@ -104,8 +104,8 @@ describe("ten-gods", () => {
|
|
|
104
104
|
it("counts ten gods correctly", () => {
|
|
105
105
|
const analysis = analyzeTenGods("甲子", "丙寅", "甲辰", "乙亥");
|
|
106
106
|
const counts = countTenGods(analysis);
|
|
107
|
-
expect(counts
|
|
108
|
-
expect(counts
|
|
107
|
+
expect(counts.companion).toBeGreaterThanOrEqual(1);
|
|
108
|
+
expect(counts.eatingGod).toBeGreaterThanOrEqual(1);
|
|
109
109
|
});
|
|
110
110
|
});
|
|
111
111
|
describe("countElements", () => {
|
|
@@ -49,15 +49,15 @@ describe("twelve-stages", () => {
|
|
|
49
49
|
expect(result.month).toBeDefined();
|
|
50
50
|
expect(result.day).toBeDefined();
|
|
51
51
|
expect(result.hour).toBeDefined();
|
|
52
|
-
expect(TWELVE_STAGES).toContain(result.year);
|
|
53
|
-
expect(TWELVE_STAGES).toContain(result.month);
|
|
54
|
-
expect(TWELVE_STAGES).toContain(result.day);
|
|
55
|
-
expect(TWELVE_STAGES).toContain(result.hour);
|
|
52
|
+
expect(TWELVE_STAGES).toContain(result.year.key);
|
|
53
|
+
expect(TWELVE_STAGES).toContain(result.month.key);
|
|
54
|
+
expect(TWELVE_STAGES).toContain(result.day.key);
|
|
55
|
+
expect(TWELVE_STAGES).toContain(result.hour.key);
|
|
56
56
|
});
|
|
57
57
|
it("should correctly analyze 戊 day master", () => {
|
|
58
58
|
const result = analyzeTwelveStages("甲子", "丙寅", "戊辰", "庚午");
|
|
59
|
-
expect(result.month).toBe("longLife");
|
|
60
|
-
expect(result.hour).toBe("imperial");
|
|
59
|
+
expect(result.month.key).toBe("longLife");
|
|
60
|
+
expect(result.hour.key).toBe("imperial");
|
|
61
61
|
});
|
|
62
62
|
});
|
|
63
63
|
describe("STAGE_INFO", () => {
|
|
@@ -11,7 +11,7 @@ describe("yongshen", () => {
|
|
|
11
11
|
});
|
|
12
12
|
it("identifies yongshen elements correctly", () => {
|
|
13
13
|
const result = analyzeYongShen("甲子", "丙寅", "甲辰", "乙亥");
|
|
14
|
-
expect(result.allElements[result.primary].isYongShen).toBe(true);
|
|
14
|
+
expect(result.allElements[result.primary.key].isYongShen).toBe(true);
|
|
15
15
|
});
|
|
16
16
|
it("identifies kishen elements correctly", () => {
|
|
17
17
|
const result = analyzeYongShen("甲子", "丙寅", "甲辰", "乙亥");
|
|
@@ -20,11 +20,11 @@ describe("yongshen", () => {
|
|
|
20
20
|
});
|
|
21
21
|
it("uses 억부 method for 중화 strength (조후 is adjustment, not primary)", () => {
|
|
22
22
|
const result = analyzeYongShen("甲子", "丙寅", "庚申", "丁亥");
|
|
23
|
-
expect(["
|
|
23
|
+
expect(["balance", "formation"]).toContain(result.method.key);
|
|
24
24
|
});
|
|
25
25
|
it("uses 억부 method for extreme strength", () => {
|
|
26
26
|
const result = analyzeYongShen("甲寅", "甲寅", "甲寅", "甲寅");
|
|
27
|
-
expect(result.method).toBe("
|
|
27
|
+
expect(result.method.key).toBe("balance");
|
|
28
28
|
});
|
|
29
29
|
it("includes johuAdjustment field in result", () => {
|
|
30
30
|
const result = analyzeYongShen("甲子", "丙寅", "甲辰", "乙亥");
|
package/dist/core/relations.d.ts
CHANGED
|
@@ -1,4 +1,21 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Label } from "../types";
|
|
2
|
+
import type { Element, ElementLabel } from "./ten-gods";
|
|
3
|
+
export declare const RELATION_TYPE_KEYS: readonly ["stemCombination", "sixCombination", "tripleCombination", "directionalCombination", "clash", "harm", "punishment", "destruction"];
|
|
4
|
+
export type RelationTypeKey = (typeof RELATION_TYPE_KEYS)[number];
|
|
5
|
+
export interface RelationTypeLabel extends Label<RelationTypeKey> {
|
|
6
|
+
}
|
|
7
|
+
export declare function getRelationTypeLabel(key: RelationTypeKey): RelationTypeLabel;
|
|
8
|
+
export declare const TRANSFORMATION_STATUS_KEYS: readonly ["combined", "halfCombined", "transformed", "notTransformed"];
|
|
9
|
+
export type TransformationStatusKey = (typeof TRANSFORMATION_STATUS_KEYS)[number];
|
|
10
|
+
export interface TransformationStatusLabel extends Label<TransformationStatusKey> {
|
|
11
|
+
}
|
|
12
|
+
export declare function getTransformationStatusLabel(key: TransformationStatusKey): TransformationStatusLabel;
|
|
13
|
+
export declare const PUNISHMENT_TYPE_KEYS: readonly ["ungrateful", "power", "rude", "self"];
|
|
14
|
+
export type PunishmentTypeKey = (typeof PUNISHMENT_TYPE_KEYS)[number];
|
|
15
|
+
export interface PunishmentTypeLabel extends Label<PunishmentTypeKey> {
|
|
16
|
+
}
|
|
17
|
+
export declare function getPunishmentTypeLabel(key: PunishmentTypeKey): PunishmentTypeLabel;
|
|
18
|
+
/** @deprecated Use TransformationStatusKey instead */
|
|
2
19
|
export type TransformationStatus = "합" | "반합" | "화" | "불화";
|
|
3
20
|
export type StemCombinationResult = {
|
|
4
21
|
stems: [string, string];
|
|
@@ -20,61 +37,61 @@ export declare const BRANCH_CLASHES: [string, string][];
|
|
|
20
37
|
export declare const BRANCH_HARMS: [string, string][];
|
|
21
38
|
export declare const BRANCH_PUNISHMENTS: {
|
|
22
39
|
branches: string[];
|
|
23
|
-
type:
|
|
40
|
+
type: PunishmentTypeKey;
|
|
24
41
|
}[];
|
|
25
42
|
export declare const BRANCH_DESTRUCTIONS: [string, string][];
|
|
26
43
|
export interface StemCombination {
|
|
27
|
-
type:
|
|
44
|
+
type: RelationTypeLabel;
|
|
28
45
|
pair: [string, string];
|
|
29
46
|
positions: [string, string];
|
|
30
|
-
resultElement:
|
|
31
|
-
transformStatus:
|
|
47
|
+
resultElement: ElementLabel;
|
|
48
|
+
transformStatus: TransformationStatusLabel;
|
|
32
49
|
transformReason: string;
|
|
33
50
|
}
|
|
34
51
|
export interface BranchSixCombination {
|
|
35
|
-
type:
|
|
52
|
+
type: RelationTypeLabel;
|
|
36
53
|
pair: [string, string];
|
|
37
54
|
positions: [string, string];
|
|
38
|
-
resultElement:
|
|
39
|
-
transformStatus:
|
|
55
|
+
resultElement: ElementLabel;
|
|
56
|
+
transformStatus: TransformationStatusLabel;
|
|
40
57
|
transformReason: string;
|
|
41
58
|
}
|
|
42
59
|
export interface BranchTripleCombination {
|
|
43
|
-
type:
|
|
60
|
+
type: RelationTypeLabel;
|
|
44
61
|
branches: string[];
|
|
45
62
|
positions: string[];
|
|
46
|
-
resultElement:
|
|
63
|
+
resultElement: ElementLabel;
|
|
47
64
|
isComplete: boolean;
|
|
48
|
-
transformStatus:
|
|
65
|
+
transformStatus: TransformationStatusLabel;
|
|
49
66
|
transformReason: string;
|
|
50
67
|
}
|
|
51
68
|
export interface BranchDirectionalCombination {
|
|
52
|
-
type:
|
|
69
|
+
type: RelationTypeLabel;
|
|
53
70
|
branches: string[];
|
|
54
71
|
positions: string[];
|
|
55
|
-
resultElement:
|
|
72
|
+
resultElement: ElementLabel;
|
|
56
73
|
isComplete: boolean;
|
|
57
|
-
transformStatus:
|
|
74
|
+
transformStatus: TransformationStatusLabel;
|
|
58
75
|
transformReason: string;
|
|
59
76
|
}
|
|
60
77
|
export interface BranchClash {
|
|
61
|
-
type:
|
|
78
|
+
type: RelationTypeLabel;
|
|
62
79
|
pair: [string, string];
|
|
63
80
|
positions: [string, string];
|
|
64
81
|
}
|
|
65
82
|
export interface BranchHarm {
|
|
66
|
-
type:
|
|
83
|
+
type: RelationTypeLabel;
|
|
67
84
|
pair: [string, string];
|
|
68
85
|
positions: [string, string];
|
|
69
86
|
}
|
|
70
87
|
export interface BranchPunishment {
|
|
71
|
-
type:
|
|
88
|
+
type: RelationTypeLabel;
|
|
72
89
|
branches: string[];
|
|
73
90
|
positions: string[];
|
|
74
|
-
punishmentType:
|
|
91
|
+
punishmentType: PunishmentTypeLabel;
|
|
75
92
|
}
|
|
76
93
|
export interface BranchDestruction {
|
|
77
|
-
type:
|
|
94
|
+
type: RelationTypeLabel;
|
|
78
95
|
pair: [string, string];
|
|
79
96
|
positions: [string, string];
|
|
80
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/core/relations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"relations.d.ts","sourceRoot":"","sources":["../../src/core/relations.ts"],"names":[],"mappings":"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"}
|