dsh-metaphysics 0.56.0 → 0.58.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/CHANGELOG.md +103 -1
- package/README.md +26 -9
- package/client.almanac.js +66 -61
- package/client.bazi.js +98 -91
- package/client.chenggu.js +68 -63
- package/client.convert.js +68 -63
- package/client.daliuren.js +104 -97
- package/client.fengshui.js +65 -60
- package/client.hepan.js +99 -92
- package/client.js +392 -267
- package/client.liuyao.js +101 -94
- package/client.mbti.js +66 -61
- package/client.name.js +68 -63
- package/client.numerology.js +66 -61
- package/client.qimen.js +104 -97
- package/client.star.js +66 -61
- package/client.tarot.js +99 -94
- package/client.trend.js +104 -97
- package/client.xiaoliuren.js +66 -61
- package/client.zeri.js +66 -61
- package/client.ziwei.js +98 -91
- package/engine/bridge.js +211 -0
- package/engine/citations.js +603 -320
- package/engine/diff.js +59 -0
- package/engine/fengshui.js +718 -718
- package/engine/geju.js +16 -0
- package/engine/handle.js +192 -0
- package/engine/hepan.js +43 -0
- package/engine/index.js +168 -51
- package/engine/interpret-knowledge.js +3 -2
- package/engine/interpret-plain.js +4 -1
- package/engine/interpret.js +7 -3
- package/engine/qimen-ganying.js +134 -134
- package/engine/qimen-interpret.js +233 -233
- package/engine/revise.js +162 -0
- package/engine/trace.js +493 -456
- package/engine/zeri.js +89 -13
- package/index.js +59 -6
- package/package.json +6 -3
- package//345/221/275/347/220/206/346/216/222/347/233/230.html +3548 -1943
package/engine/diff.js
CHANGED
|
@@ -21,6 +21,11 @@ const IGNORE_KEYS = new Set([
|
|
|
21
21
|
// 十类流派开关的回显(含 rules.schools 那行说明)同理:换开关必然改这段话,
|
|
22
22
|
// 真正要看的是星位、四化、宫位有没有动。身主两派的口径名与说明同属回显。
|
|
23
23
|
'schools', 'bodyMasterSchool', 'bodyMasterNote',
|
|
24
|
+
// 排盘句柄只是把入参编码回来:换口径后入参变了,句柄必然跟着变,
|
|
25
|
+
// 但它反映的是「另一次请求」,不是盘面差异。
|
|
26
|
+
'handle', 'handleError',
|
|
27
|
+
// 一句话改参的回显:换口径时它必然不同(等于另一次请求),不是盘面差异
|
|
28
|
+
'revision',
|
|
24
29
|
]);
|
|
25
30
|
|
|
26
31
|
const isObject = (v) => v !== null && typeof v === 'object';
|
|
@@ -348,3 +353,57 @@ export const CALIBER_SWITCHES = {
|
|
|
348
353
|
},
|
|
349
354
|
],
|
|
350
355
|
};
|
|
356
|
+
|
|
357
|
+
/**
|
|
358
|
+
* 口径并排:把「换口径后哪几条结论变了」抽成两列表格。
|
|
359
|
+
* 只读结果里的既有字段,不重算、不判定哪套更准;字段缺省时留空,不编值。
|
|
360
|
+
*/
|
|
361
|
+
export const CALIBER_VIEWS = {
|
|
362
|
+
bazi: [
|
|
363
|
+
{ path: 'pillars.day.ganzhi', label: '日柱' },
|
|
364
|
+
{ path: 'pillars.hour.ganzhi', label: '时柱' },
|
|
365
|
+
{ path: 'strength.level', label: '旺衰' },
|
|
366
|
+
{ path: 'frame.primaryName', label: '格局' },
|
|
367
|
+
{ path: 'frame.yongshen.favor', label: '喜用' },
|
|
368
|
+
{ path: 'dayun.jiao.at', label: '起运' },
|
|
369
|
+
],
|
|
370
|
+
ziwei: [
|
|
371
|
+
{ path: 'soul.ganzhi', label: '命宫' },
|
|
372
|
+
{ path: 'body.branch', label: '身宫支' },
|
|
373
|
+
{ path: 'bureau.name', label: '五行局' },
|
|
374
|
+
{ path: 'bodyMaster', label: '身主' },
|
|
375
|
+
{ path: 'daxianList.0.ages', label: '起大限' },
|
|
376
|
+
],
|
|
377
|
+
qimen: [
|
|
378
|
+
{ path: 'siZhu.day', label: '日柱' },
|
|
379
|
+
{ path: 'ju', label: '局数' },
|
|
380
|
+
{ path: 'zhiFu.star', label: '值符' },
|
|
381
|
+
{ path: 'zhiShi.gate', label: '值使' },
|
|
382
|
+
],
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
function pickPath(obj, path) {
|
|
386
|
+
let cur = obj;
|
|
387
|
+
for (const seg of String(path).split('.')) {
|
|
388
|
+
if (cur === null || cur === undefined) return undefined;
|
|
389
|
+
cur = cur[seg];
|
|
390
|
+
}
|
|
391
|
+
return cur;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/** 并排单元格:数组用「、」串起,缺省留空,不把 undefined 写成字符串 */
|
|
395
|
+
export function viewCell(value) {
|
|
396
|
+
if (value === undefined || value === null) return '—';
|
|
397
|
+
if (Array.isArray(value)) return value.join('、');
|
|
398
|
+
if (typeof value === 'object') return '—';
|
|
399
|
+
return String(value);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
export function viewRows(system, current, alt) {
|
|
403
|
+
const defs = CALIBER_VIEWS[system] || [];
|
|
404
|
+
return defs.map((d) => {
|
|
405
|
+
const a = viewCell(pickPath(current, d.path));
|
|
406
|
+
const b = viewCell(pickPath(alt, d.path));
|
|
407
|
+
return { key: d.path, label: d.label, current: a, alt: b, changed: a !== b };
|
|
408
|
+
});
|
|
409
|
+
}
|