@agile-team/mach-report 2.21.1 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -5
- package/dist/{ExcelBindingWizard-mnAO2qOX.js → ExcelBindingWizard-D4FLind-.js} +3 -3
- package/dist/{ExcelBindingWizard-Bu0LUlzl.cjs → ExcelBindingWizard-D4RS5Bpg.cjs} +1 -1
- package/dist/{ParamEditor-38ZfNrPU.cjs → ParamEditor-C-6C9rd2.cjs} +1 -1
- package/dist/{ParamEditor-C8l0EC8m.js → ParamEditor-CASZt-Ma.js} +2 -2
- package/dist/{ReportBatchPanel-CfUVhvkO.js → ReportBatchPanel-Bq7t8a5r.js} +2 -2
- package/dist/{ReportBatchPanel-nCC06Nfp.cjs → ReportBatchPanel-YVj5IO5y.cjs} +1 -1
- package/dist/ReportLabelStudio-Cqhita1b.cjs +1 -0
- package/dist/ReportLabelStudio-Dj7GXhuv.js +783 -0
- package/dist/ReportParamPanel-DZbFVmDL.cjs +1 -0
- package/dist/{ReportParamPanel-peB-KEmm.js → ReportParamPanel-Dgmqro1Y.js} +265 -244
- package/dist/ReportPreview-DeWzG8jQ.js +6257 -0
- package/dist/ReportPreview-FFIryrIr.cjs +6 -0
- package/dist/{ReportTemplateLibrary-DVlsf72p.cjs → ReportTemplateLibrary-BaWodmpm.cjs} +1 -1
- package/dist/{ReportTemplateLibrary-B5t_EcIs.js → ReportTemplateLibrary-DdAAAD2I.js} +1 -1
- package/dist/{RuleEditor-kT1JsZ9f.js → RuleEditor-D2UwQGF6.js} +59 -59
- package/dist/{RuleEditor-xFkCVlii.cjs → RuleEditor-DcT9xI1v.cjs} +1 -1
- package/dist/TemplateOutlinePanel-CUHFFiNM.cjs +1 -0
- package/dist/{TemplateOutlinePanel-BesgGR1P.js → TemplateOutlinePanel-DrT7XN0m.js} +2 -2
- package/dist/{TemplateReusePanel-BNFU6V-W.js → TemplateReusePanel-4eejkNqi.js} +2 -2
- package/dist/{TemplateReusePanel-BG9Or5-P.cjs → TemplateReusePanel-DZMyiX5I.cjs} +1 -1
- package/dist/{TemplateReviewPanel-CwvwyCSs.js → TemplateReviewPanel-BIhNLeNw.js} +2 -2
- package/dist/TemplateReviewPanel-DnYImiXu.cjs +1 -0
- package/dist/analytics.cjs +1 -1
- package/dist/analytics.js +26 -26
- package/dist/artifact-integrity.json +108 -106
- package/dist/assets-D2gHc4Mz.cjs +1 -0
- package/dist/assets-T_gDeFaz.js +132 -0
- package/dist/auto-4pK9HePf.cjs +1 -0
- package/dist/auto-CTIJ6PnR.js +257 -0
- package/dist/capabilities-DiBj4Qgl.cjs +1 -0
- package/dist/capabilities-pg7j7VLT.js +106 -0
- package/dist/charts-Cjw5AYkg.cjs +1 -0
- package/dist/{charts-Dlv8j2AG.js → charts-CxJZ0XaY.js} +1 -1
- package/dist/computed-DK6BruFz.cjs +1 -0
- package/dist/{computed-C8NRZQss.js → computed-f3pOqWLX.js} +381 -301
- package/dist/data-bar-CeZuFmYl.cjs +1 -0
- package/dist/{data-bar-8baGYEZ9.js → data-bar-IkI6VvMQ.js} +1 -1
- package/dist/designer-DhrE7jzw.js +7169 -0
- package/dist/designer-IAZu6kBX.cjs +2 -0
- package/dist/designer.cjs +1 -1
- package/dist/designer.d.cts +246 -46
- package/dist/designer.d.ts +246 -46
- package/dist/designer.js +15 -14
- package/dist/dom-ChE5D-L-.cjs +1 -0
- package/dist/dom-JWrchIre.js +452 -0
- package/dist/dom-cell-address-DLD1mkTB.cjs +1 -0
- package/dist/dom-cell-address-Fn-8nk7D.js +11 -0
- package/dist/{encoding-B79hW4zq.cjs → encoding-BefcaHdp.cjs} +1 -1
- package/dist/{encoding-BSeUwrN7.js → encoding-CL6rXEkR.js} +2 -2
- package/dist/{font-loader-Di0lQKFf.js → font-loader-BT5baV-o.js} +1 -1
- package/dist/{font-loader-BB372_XN.cjs → font-loader-Ga51c2VC.cjs} +1 -1
- package/dist/grid-strokes-Be24LGuV.cjs +1 -0
- package/dist/grid-strokes-EoY66L2f.js +53 -0
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +44 -1
- package/dist/index.d.ts +44 -1
- package/dist/index.js +961 -1256
- package/dist/json-snapshot-1tvQNzQE.cjs +2 -0
- package/dist/{json-snapshot-Kgn459Oj.js → json-snapshot-OqkPyUk5.js} +763 -776
- package/dist/matrix-B8QWbsGM.cjs +1 -0
- package/dist/matrix-C6e_r_vp.js +302 -0
- package/dist/{pdf-CARdBcuw.cjs → pdf-HiEeXe9H.cjs} +42 -42
- package/dist/{pdf-DmlnL5eB.js → pdf-aobetCsy.js} +20 -20
- package/dist/pdf.cjs +1 -1
- package/dist/pdf.js +2 -2
- package/dist/{plugin-BaRUGORD.cjs → plugin-BFANt-i8.cjs} +1 -1
- package/dist/{plugin-D4kAxfLG.js → plugin-DeYYAL6F.js} +1 -1
- package/dist/{prefill-CJSazcVY.js → prefill-Dk4C6S5R.js} +21 -21
- package/dist/prefill-DsUD5OoK.cjs +1 -0
- package/dist/prepared-DCIxhKFo.js +94 -0
- package/dist/prepared-Dv-XM3i1.cjs +1 -0
- package/dist/progress-ByiOxUD3.js +250 -0
- package/dist/progress-WomPRP3B.cjs +1 -0
- package/dist/{protocol-C8VWF9An.cjs → protocol-B9YgfQ_d.cjs} +1 -1
- package/dist/{protocol-Bs9-ohHN.js → protocol-DxeUKGYG.js} +3 -3
- package/dist/record-bindings-DatJZv_e.js +200 -0
- package/dist/record-bindings-MBxbeBsi.cjs +1 -0
- package/dist/{region-binding-workflow-Cy4GIOUo.js → region-binding-workflow-DjrXuR1q.js} +2 -2
- package/dist/{region-binding-workflow-JNowHd0A.cjs → region-binding-workflow-l7NGfagJ.cjs} +2 -2
- package/dist/report-encoding-worker.cjs +1 -1
- package/dist/report-encoding-worker.js +1 -1
- package/dist/rich-text-layout-Ciwa6D2o.js +52 -0
- package/dist/rich-text-layout-DK7A_a5r.cjs +3 -0
- package/dist/{runtime-BDf5x1i1.js → runtime-75Y5Oq5B.js} +52 -51
- package/dist/runtime-DKlGd_D4.cjs +1 -0
- package/dist/sbom.cdx.json +1 -1
- package/dist/server/node.d.cts +9 -0
- package/dist/server/node.d.ts +9 -0
- package/dist/server-node.cjs +5 -4
- package/dist/server-node.js +2178 -2044
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +81 -0
- package/dist/server.d.ts +81 -0
- package/dist/server.js +24 -24
- package/dist/style.css +1 -1
- package/dist/{template-catalog-DFwIS9aN.js → template-catalog--cjxzgH7.js} +17 -17
- package/dist/template-catalog-CoT7jm_6.cjs +1 -0
- package/dist/{template-fragments-Dng-AlHk.js → template-fragments-CPpGpQoz.js} +24 -24
- package/dist/{template-fragments-DZVUBhuB.cjs → template-fragments-GVjpew_q.cjs} +1 -1
- package/dist/template-registry-DI59PXVK.cjs +1 -0
- package/dist/{template-registry-DhBqoD7W.js → template-registry-O0hNIOfB.js} +333 -261
- package/dist/template-serialization-CWmHq7lX.js +307 -0
- package/dist/template-serialization-CqQY4zDg.cjs +1 -0
- package/dist/{textwrap-CkGjRFT3.js → textwrap-BIjtEWmq.js} +1 -1
- package/dist/textwrap-Cy7o1hIR.cjs +4 -0
- package/dist/vue/async.d.cts +121 -2
- package/dist/vue/async.d.ts +121 -2
- package/dist/vue/index.d.cts +222 -5
- package/dist/vue/index.d.ts +222 -5
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +101 -91
- package/dist/{workbook-session-NYv01LHe.cjs → workbook-session-C6-SrnCT.cjs} +4 -4
- package/dist/{workbook-session-oinxX3qo.js → workbook-session-C9ZmCBwY.js} +15 -16
- package/dist/workbook-sheets-CaPAulQ6.cjs +2 -0
- package/dist/workbook-sheets-D4M7XXBh.js +44 -0
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +9 -0
- package/dist/worker.d.ts +9 -0
- package/dist/worker.js +4 -4
- package/dist/xlsx.cjs +4 -4
- package/dist/xlsx.d.cts +39 -2
- package/dist/xlsx.d.ts +39 -2
- package/dist/xlsx.js +300 -275
- package/package.json +1 -1
- package/dist/ReportLabelStudio-CaEvYuSK.cjs +0 -1
- package/dist/ReportLabelStudio-DQPBmh4v.js +0 -765
- package/dist/ReportParamPanel-CVpK8mFc.cjs +0 -1
- package/dist/ReportPreview-BBJNlu2U.js +0 -5740
- package/dist/ReportPreview-nf4Dk1Jc.cjs +0 -6
- package/dist/TemplateOutlinePanel-CDI6mfWx.cjs +0 -1
- package/dist/TemplateReviewPanel-BmBrjt6P.cjs +0 -1
- package/dist/assets-CxHunY_9.js +0 -232
- package/dist/assets-vbjAGgk8.cjs +0 -1
- package/dist/auto-BkdGiNtr.js +0 -240
- package/dist/auto-Tq7ReIC1.cjs +0 -1
- package/dist/charts-aCtoswXq.cjs +0 -1
- package/dist/component-tree-1_QCiQJX.js +0 -67
- package/dist/component-tree-BjZIp6w9.cjs +0 -1
- package/dist/computed-4TnxzgIh.cjs +0 -1
- package/dist/data-bar-YltqGTaC.cjs +0 -1
- package/dist/designer-DU3yDWgs.cjs +0 -2
- package/dist/designer-HQi-03R6.js +0 -6869
- package/dist/grid-geometry-D3SJgWFv.js +0 -136
- package/dist/grid-geometry-D8ReblRV.cjs +0 -1
- package/dist/json-snapshot-I5VI84Vp.cjs +0 -2
- package/dist/matrix-0hywp0-F.cjs +0 -1
- package/dist/matrix-Dy-tyY7E.js +0 -381
- package/dist/prefill-Bpyn58AZ.cjs +0 -1
- package/dist/prepared-BiSz_9vN.cjs +0 -1
- package/dist/prepared-BwjwEzFz.js +0 -87
- package/dist/progress-B0ctFpKf.cjs +0 -1
- package/dist/progress-Hc2vxoCs.js +0 -52
- package/dist/record-bindings-Ct1HkPrc.cjs +0 -1
- package/dist/record-bindings-VZGS-Qd8.js +0 -155
- package/dist/rich-text-layout-K48VHUoW.cjs +0 -3
- package/dist/rich-text-layout-wxBhnAS7.js +0 -102
- package/dist/runtime-DsJt1PIf.cjs +0 -1
- package/dist/template-bindings-Cg5oBLFT.cjs +0 -1
- package/dist/template-bindings-TKnXM7ll.js +0 -62
- package/dist/template-catalog-D_2jdnkL.cjs +0 -1
- package/dist/template-outline-DWkzZXVC.cjs +0 -1
- package/dist/template-outline-DiADphlq.js +0 -88
- package/dist/template-registry-DpLUSLwF.cjs +0 -1
- package/dist/template-serialization-Cc3h-miv.js +0 -247
- package/dist/template-serialization-D1R5oAqh.cjs +0 -1
- package/dist/textwrap-OTOUMr4f.cjs +0 -4
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { S as A } from "./grid-geometry-D3SJgWFv.js";
|
|
2
|
-
const h = A;
|
|
3
|
-
function l(r) {
|
|
4
|
-
return (r.kind === "image" || r.kind === "barcode" || r.kind === "qrcode" || r.kind === "chart") && !!r.imageData;
|
|
5
|
-
}
|
|
6
|
-
function b(r) {
|
|
7
|
-
return r.kind === "text" && Array.isArray(r.richParagraphs) && r.richParagraphs.length > 0;
|
|
8
|
-
}
|
|
9
|
-
function k(r) {
|
|
10
|
-
if (!r || typeof r != "object" || Array.isArray(r)) return !1;
|
|
11
|
-
const { start: e, end: i, color: n } = r;
|
|
12
|
-
return typeof e == "number" && typeof i == "number" && Number.isFinite(e) && Number.isFinite(i) && e >= 0 && i <= 1 && e <= i && typeof n == "string" && /^#[0-9a-f]{6}$/i.test(n);
|
|
13
|
-
}
|
|
14
|
-
function o(r) {
|
|
15
|
-
return !!r && typeof r == "object";
|
|
16
|
-
}
|
|
17
|
-
function d(r, e, i, n, s) {
|
|
18
|
-
if (++s.nodes > 1e6) return { path: e, message: "组件树超过100万个结构节点预算" };
|
|
19
|
-
if (o(r)) {
|
|
20
|
-
if (i > 64) return { path: e, message: "组件嵌套超过64层预算" };
|
|
21
|
-
if (n.has(r)) return { path: e, message: "组件树包含循环引用" };
|
|
22
|
-
if (!(!o(r.grid) || !Array.isArray(r.grid.cells))) {
|
|
23
|
-
n.add(r);
|
|
24
|
-
try {
|
|
25
|
-
for (const [t, f] of r.grid.cells.entries())
|
|
26
|
-
if (Array.isArray(f))
|
|
27
|
-
for (const [u, c] of f.entries()) {
|
|
28
|
-
if (++s.nodes > 1e6) return { path: e, message: "组件树超过100万个结构节点预算" };
|
|
29
|
-
if (!(!o(c) || !Array.isArray(c.children)))
|
|
30
|
-
for (const [y, g] of c.children.entries()) {
|
|
31
|
-
const a = d(g, `${e}.grid.cells.${t}.${u}.children.${y}`, i + 1, n, s);
|
|
32
|
-
if (a) return a;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
} finally {
|
|
36
|
-
n.delete(r);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
function m(r, e = "$.components", i = { nodes: 0 }) {
|
|
42
|
-
for (const [n, s] of r.entries()) {
|
|
43
|
-
const t = d(s, `${e}.${n}`, 0, /* @__PURE__ */ new Set(), i);
|
|
44
|
-
if (t) return t;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function $(r) {
|
|
48
|
-
const e = { nodes: 0 };
|
|
49
|
-
for (const [i, n] of r.entries()) {
|
|
50
|
-
if (!o(n) || !Array.isArray(n.components)) continue;
|
|
51
|
-
const s = m(n.components, `$.pages.${i}.components`, e);
|
|
52
|
-
if (s) return s;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
function E(r) {
|
|
56
|
-
const e = $(r.pages);
|
|
57
|
-
if (e) throw new TypeError(`${e.path}: ${e.message}`);
|
|
58
|
-
}
|
|
59
|
-
export {
|
|
60
|
-
h as R,
|
|
61
|
-
b as a,
|
|
62
|
-
E as b,
|
|
63
|
-
m as c,
|
|
64
|
-
l as i,
|
|
65
|
-
$ as r,
|
|
66
|
-
k as v
|
|
67
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const $=require("./grid-geometry-D8ReblRV.cjs"),E=$.SCHEMA_VERSION_MACH;function R(e){return(e.kind==="image"||e.kind==="barcode"||e.kind==="qrcode"||e.kind==="chart")&&!!e.imageData}function h(e){return e.kind==="text"&&Array.isArray(e.richParagraphs)&&e.richParagraphs.length>0}function l(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;const{start:r,end:i,color:n}=e;return typeof r=="number"&&typeof i=="number"&&Number.isFinite(r)&&Number.isFinite(i)&&r>=0&&i<=1&&r<=i&&typeof n=="string"&&/^#[0-9a-f]{6}$/i.test(n)}function o(e){return!!e&&typeof e=="object"}function d(e,r,i,n,t){if(++t.nodes>1e6)return{path:r,message:"组件树超过100万个结构节点预算"};if(o(e)){if(i>64)return{path:r,message:"组件嵌套超过64层预算"};if(n.has(e))return{path:r,message:"组件树包含循环引用"};if(!(!o(e.grid)||!Array.isArray(e.grid.cells))){n.add(e);try{for(const[s,f]of e.grid.cells.entries())if(Array.isArray(f))for(const[g,c]of f.entries()){if(++t.nodes>1e6)return{path:r,message:"组件树超过100万个结构节点预算"};if(!(!o(c)||!Array.isArray(c.children)))for(const[A,m]of c.children.entries()){const a=d(m,`${r}.grid.cells.${s}.${g}.children.${A}`,i+1,n,t);if(a)return a}}}finally{n.delete(e)}}}}function u(e,r="$.components",i={nodes:0}){for(const[n,t]of e.entries()){const s=d(t,`${r}.${n}`,0,new Set,i);if(s)return s}}function y(e){const r={nodes:0};for(const[i,n]of e.entries()){if(!o(n)||!Array.isArray(n.components))continue;const t=u(n.components,`$.pages.${i}.components`,r);if(t)return t}}function p(e){const r=y(e.pages);if(r)throw new TypeError(`${r.path}: ${r.message}`)}exports.RENDER_PLAN_SCHEMA_VERSION=E;exports.assertBoundedRenderTree=p;exports.componentTreeIssue=u;exports.isImageBackedComponent=R;exports.isRichText=h;exports.renderTreeIssue=y;exports.validDataBar=l;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";function d(e){if(!Number.isSafeInteger(e)||e<0||e>1e3*2)throw new Error("十进制精度超出预算");return 10n**BigInt(e)}function S(e){if(e.coefficient.toString().length>1e3*2||e.scale>1e3*2)throw new Error("十进制结果超出精度预算");return e}function l(e){if(typeof e!="string"&&!(typeof e=="number"&&Number.isFinite(e)))throw new Error("十进制参数必须是有限数字或十进制文本");const t=String(e);if(t.length>1e3)throw new Error("十进制文本超出精度预算");const r=/^([+-]?)(\d+)(?:\.(\d*))?(?:[eE]([+-]?\d{1,4}))?$/.exec(t);if(!r)throw new Error("无效十进制文本");const n=r[3]??"",i=Number(r[4]??0),c=n.length-i,o=BigInt(`${r[1]==="-"?"-":""}${r[2]}${n}`);return S(c<0?{coefficient:o*d(-c),scale:0}:{coefficient:o,scale:c})}function J(e,t){const r=Math.max(e.scale,t.scale);return[e.coefficient*d(r-e.scale),t.coefficient*d(r-t.scale),r]}function h(e,t){const[r,n]=J(e,t);return r<n?-1:r>n?1:0}function y(e,t){const[r,n,i]=J(e,t);return S({coefficient:r+n,scale:i})}function N(e,t){return S({coefficient:e.coefficient*t.coefficient,scale:e.scale+t.scale})}function V(e,t){const r=e/t,n=e%t,i=c=>c<0n?-c:c;return i(n)*2n<i(t)?r:r+(e<0n==t<0n?1n:-1n)}function w(e){if(!Number.isInteger(e)||e<0||e>100)throw new Error("十进制小数位应为 0–100 的整数")}function v(e,t,r=20){if(w(r),t.coefficient===0n)throw new Error("不能除以零");const n=t.scale-e.scale+r,i=e.coefficient*d(Math.max(0,n)),c=t.coefficient*d(Math.max(0,-n));return S({coefficient:V(i,c),scale:r})}function b(e,t){let r=e.coefficient,n=e.scale;t!==void 0&&(w(t),r=t>=n?r*d(t-n):V(r,d(n-t)),n=t);const i=r<0n,c=(i?-r:r).toString().padStart(n+1,"0");let o=n?c.slice(-n):"";return t===void 0&&(o=o.replace(/0+$/,"")),`${i?"-":""}${n?c.slice(0,-n):c}${o?`.${o}`:""}`}function q(e,t,r=!1,n=!1){let i=l(e);n&&(i=N(i,{coefficient:100n,scale:0}));const[c,o]=b(i,t).split(".");return`${r?c.replace(/\B(?=(\d{3})+(?!\d))/g,","):c}${o===void 0?"":`.${o}`}${n?"%":""}`}const ee=["sum","count","avg","min","max","weightedAvg"];function $(e){if(typeof e!="number"||!Number.isFinite(e))throw new Error("聚合度量必须是有限数字,不能隐式转换;小数文本请显式选择 decimal");return e}function O(e,t){return t&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function te(e){let t=0,r=0,n=0,i=0,c=1/0,o=-1/0;const a=s=>{const f=s-n,u=r+f;n=u-r-f,r=u};return{add(s){const f=O(s,e.field);if(e.op==="count"){(!e.field||f!=null)&&t++;return}if(f==null)return;const u=$(f),_=e.op==="weightedAvg"?O(s,e.weightField):1;if(_==null)return;const M=$(_);if(e.op==="weightedAvg"&&M<0)throw new Error("加权平均的权重不能为负数");["sum","avg","weightedAvg"].includes(e.op)&&a(u*M),i+=M,c=Math.min(c,u),o=Math.max(o,u),t++},value(){if(e.op==="count")return t;if(!t)return null;const s=e.op==="min"?c:e.op==="max"?o:e.op==="avg"?r/t:e.op==="weightedAvg"?i===0?null:r/i:r;if(s!==null&&!Number.isFinite(s))throw new Error("聚合计算溢出");return s}}}function re(e){let t=0,r=l("0"),n=l("0"),i,c;return{add(o){const a=O(o,e.field);if(e.op==="count"){(!e.field||a!=null)&&t++;return}if(a==null)return;const s=e.op==="weightedAvg"?O(o,e.weightField):"1";if(s==null)return;const f=l(a),u=l(s);if(e.op==="weightedAvg"&&u.coefficient<0n)throw new Error("加权平均的权重不能为负数");["sum","avg","weightedAvg"].includes(e.op)&&(r=y(r,N(f,u))),e.op==="weightedAvg"&&(n=y(n,u)),(!i||h(f,i)<0)&&(i=f),(!c||h(f,c)>0)&&(c=f),t++},value(){if(e.op==="count")return t;if(!t||e.op==="weightedAvg"&&n.coefficient===0n)return null;let o=e.op==="min"?i:e.op==="max"?c:r;return e.op==="avg"&&(o=v(r,l(t),e.digits)),e.op==="weightedAvg"&&(o=v(r,n,e.digits)),b(o,e.digits)}}}function Z(e){if(e.digits!==void 0&&w(e.digits),e.numeric!==void 0&&e.numeric!=="number"&&e.numeric!=="decimal")throw new Error("未知聚合数值模式");if(!ee.includes(e.op))throw new Error("未知聚合操作");if(e.op!=="count"&&!e.field)throw new Error("聚合需要度量字段");if(e.op==="weightedAvg"&&!e.weightField)throw new Error("加权平均需要权重字段");return e.numeric==="decimal"?re(e):te(e)}function x(e,t){const r=Z(t);for(const n of e)r.add(n);return r.value()}const K=new Set(["__proto__","prototype","constructor"]);function L(e){if(!e||typeof e!="object"||Array.isArray(e)||![Object.prototype,null].includes(Object.getPrototypeOf(e)))throw new Error("条件应为普通声明式对象");for(const[t,r]of Object.entries(Object.getOwnPropertyDescriptors(e)))if(K.has(t)||!Object.prototype.hasOwnProperty.call(r,"value"))throw new Error("条件不允许访问器或不安全属性")}function T(e){if(typeof e!="string"||!e.trim()||e.length>512||K.has(e))throw new Error("条件字段应为安全的非空字段名")}function F(e){if(e!==null&&typeof e!="boolean"&&typeof e!="string"&&!(typeof e=="number"&&Number.isFinite(e)))throw new Error("条件常量应为有限 JSON 标量");if(typeof e=="string"&&e.length>16384)throw new Error("条件文本超出预算")}function k(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))throw new Error("日期条件使用 YYYY-MM-DD 日历日");const[t,r,n]=e.split("-").map(Number),i=new Date(0);if(i.setUTCFullYear(t,r-1,n),i.setUTCHours(0,0,0,0),i.getUTCFullYear()!==t||i.getUTCMonth()!==r-1||i.getUTCDate()!==n)throw new Error("无效日历日");return e}function B(e){return["string","boolean"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e)}function U(e){return e==null||e===""}function ne(e){const t=e.values?.[0]??(e.right&&"value"in e.right?e.right.value:e.value);return e.valueType??e.numeric??(typeof t=="number"?"decimal":typeof t=="boolean"?"boolean":"text")}function E(e,t,r){if(U(e)||U(t))return;const n=ne(r);try{if(n==="decimal")return h(l(e),l(t));if(n==="number")return!["number","string"].includes(typeof e)||!["number","string"].includes(typeof t)?void 0:h(l(e),l(t));if(n==="date"&&(e=k(e),t=k(t)),n==="boolean"&&(typeof e!="boolean"||typeof t!="boolean")||n==="text"&&(!B(e)||!B(t)))return;const i=String(e),c=String(t);return i<c?-1:i>c?1:0}catch{return}}function ie(e){if(T(e.field),![">",">=","<","<=","==","!=","between","contains","isNull","isNotNull"].includes(e.op))throw new Error("未知条件运算符");if(e.numeric!==void 0&&!["number","decimal"].includes(e.numeric))throw new Error("未知条件数值模式");if(e.valueType!==void 0&&!["number","decimal","text","date","boolean"].includes(e.valueType))throw new Error("未知条件值类型");if(!(e.op==="isNull"||e.op==="isNotNull"))if(e.op==="between"){if(!Array.isArray(e.values)||e.values.length!==2||Object.keys(e.values).length!==2)throw new Error("范围条件需要两个明确边界");e.values.forEach(F);const t=E(e.values[0],e.values[1],e);if(t===void 0||t>0)throw new Error("范围边界无效或顺序颠倒")}else if(e.right!==void 0){if(L(e.right),Object.keys(e.right).length!==1)throw new Error("条件 right 只能指定一个 field 或 value");if("field"in e.right?T(e.right.field):F(e.right.value),e.value!==void 0)throw new Error("条件不能同时指定 value 和 right")}else F(e.value)}function j(e,t){if(t===void 0)return!1;switch(e){case">":return t>0;case">=":return t>=0;case"<":return t<0;case"<=":return t<=0;case"==":return t===0;case"!=":return t!==0;default:return!1}}function oe(e){ie(e),e={...e,right:e.right?{...e.right}:void 0,values:e.values?[e.values[0],e.values[1]]:void 0};const t=(r,n)=>Object.prototype.hasOwnProperty.call(r,n)?r[n]:void 0;return r=>{const n=t(r,e.field);if(e.op==="isNull")return n==null;if(e.op==="isNotNull")return n!=null;if(e.op==="between")return j(">=",E(n,e.values[0],e))&&j("<=",E(n,e.values[1],e));const i=e.right?"field"in e.right?t(r,e.right.field):e.right.value:e.value;return e.op==="contains"?typeof n=="string"&&typeof i=="string"&&n.includes(i):j(e.op,E(n,i,e))}}function p(e,t={nodes:0},r=0){if(++t.nodes>256||r>16)throw new Error("条件超出深度或节点预算");if(L(e),["all","any","not","field"].filter(i=>Object.prototype.hasOwnProperty.call(e,i)).length!==1)throw new Error("条件只能指定一种组合或比较");if("not"in e){const i=p(e.not,t,r+1);return c=>!i(c)}if("all"in e||"any"in e){const i="all"in e?e.all:e.any;if(!Array.isArray(i)||i.length<1||i.length>256||Object.keys(i).length!==i.length)throw new Error("组合条件需要有界、无空位的非空数组");const c=i.map(o=>p(o,t,r+1));return"all"in e?o=>c.every(a=>a(o)):o=>c.some(a=>a(o))}return oe(e)}function ce(e,t){return p(t)(e)}function H(e){p(e);const t=new Set;function r(n){"all"in n?n.all.forEach(r):"any"in n?n.any.forEach(r):"not"in n?r(n.not):(t.add(n.field),n.right&&"field"in n.right&&t.add(n.right.field))}return r(e),[...t]}const ae=[{name:"add",minArgs:2,maxArgs:256,input:"numeric",output:"numeric",example:"add(quantity, adjustment)"},{name:"subtract",minArgs:2,maxArgs:2,input:"numeric",output:"numeric",example:"subtract(input, output)"},{name:"multiply",minArgs:2,maxArgs:256,input:"numeric",output:"numeric",example:"multiply(quantity, price)"},{name:"divide",minArgs:2,maxArgs:2,input:"numeric",output:"numeric",example:"divide(amount, quantity)"},{name:"coalesce",minArgs:2,maxArgs:256,input:"scalar",output:"scalar",example:"coalesce(actual, planned)"},{name:"if",minArgs:2,maxArgs:2,input:"condition + branches",output:"scalar",example:"if(quantity > 0, divide(amount, quantity), null)"},{name:"round",minArgs:1,maxArgs:2,input:"numeric, digits?",output:"numeric",example:"round(amount, 2)"},{name:"abs",minArgs:1,maxArgs:1,input:"numeric",output:"numeric",example:"abs(difference)"},{name:"concat",minArgs:2,maxArgs:256,input:"text",output:"text",example:"concat(plant, '-' , heat)"},{name:"trim",minArgs:1,maxArgs:1,input:"text",output:"text",example:"trim(heat)"},{name:"upper",minArgs:1,maxArgs:1,input:"text",output:"text",example:"upper(grade)"},{name:"lower",minArgs:1,maxArgs:1,input:"text",output:"text",example:"lower(code)"},{name:"dateYear",minArgs:1,maxArgs:1,input:"YYYY-MM-DD",output:"number",example:"dateYear(reportDate)"},{name:"dateMonth",minArgs:1,maxArgs:1,input:"YYYY-MM-DD",output:"number",example:"dateMonth(reportDate)"},{name:"dateDay",minArgs:1,maxArgs:1,input:"YYYY-MM-DD",output:"number",example:"dateDay(reportDate)"}],C=Object.freeze(ae.map(e=>Object.freeze(e)));function se(e,t,r,n,i){if(t.some(a=>a==null)){if(i==="error")throw new Error("函数参数包含空值");return null}if(e==="round"||e==="abs")return fe(e,t,r,n);if(e.startsWith("date")){const a=k(t[0]);return Number(a.slice(e==="dateYear"?0:e==="dateMonth"?5:8,e==="dateYear"?4:e==="dateMonth"?7:10))}if(t.some(a=>typeof a!="string"))throw new Error("文本函数只接受文本,不隐式转换数字或空值");if(t.reduce((a,s)=>a+s.length,0)>1e6)throw new Error("计算文本超出长度预算");const c=t[0],o=e==="concat"?t.join(""):e==="trim"?c.trim():e==="upper"?c.toUpperCase():c.toLowerCase();if(o.length>1e6)throw new Error("计算文本超出长度预算");return o}function fe(e,t,r,n){const i=t[0];if(r!=="decimal"&&(typeof i!="number"||!Number.isFinite(i)))throw new Error("普通数值函数需要有限数字");const c=l(i);e==="abs"&&(c.coefficient=c.coefficient<0n?-c.coefficient:c.coefficient);const o=e==="round"?t.length===2?t[1]:n??0:n;if(o!==void 0){if(typeof o!="number")throw new Error("小数位必须为数字");w(o)}const a=b(c,o),s=Number(a);if(r!=="decimal"&&!Number.isFinite(s))throw new Error("计算结果不是有限数字");return r==="decimal"?a:s}const ue=new Set(["__proto__","prototype","constructor"]);function g(e){if(typeof e!="string"||!e.trim()||ue.has(e))throw new Error("计算字段应为安全的非空字段名")}function R(e){return e===null||["string","boolean"].includes(typeof e)||typeof e=="number"&&Number.isFinite(e)}function le(e){if(e.some(t=>typeof t!="number"||!Number.isFinite(t)))throw new Error("算术参数必须是有限数字;空值和小数文本不会隐式转换");return e}function me(e,t){const r=le(t);let n;if(e==="add")n=r.reduce((i,c)=>i+c,0);else if(e==="multiply")n=r.reduce((i,c)=>i*c,1);else if(e==="subtract")n=r[0]-r[1];else{if(r[1]===0)throw new Error("不能除以零");n=r[0]/r[1]}if(!Number.isFinite(n))throw new Error("计算结果不是有限数字");return n}function de(e,t,r){const n=t.map(l);let i;return e==="add"?i=n.reduce(y):e==="multiply"?i=n.reduce(N):e==="subtract"?i=y(n[0],{...n[1],coefficient:-n[1].coefficient}):i=v(n[0],n[1],r),b(i,r)}function ge(e,t,r){return r.nulls!=="error"&&t.some(n=>n==null)||e==="divide"&&r.divisionByZero==="null"&&(r.numeric==="decimal"?l(t[1]).coefficient===0n:t[1]===0)?null:r.numeric==="decimal"?de(e,t,r.digits):me(e,t)}function pe(e,t){e.field!==void 0&&g(e.field),e.weightField!==void 0&&g(e.weightField);const r={op:e.aggregate,field:e.field,weightField:e.weightField,numeric:t.numeric,digits:t.digits};x([],r);const n=new WeakMap;return i=>{let c=n.get(i.rows);if(!c){try{c={value:x(i.rows,r)}}catch(o){c={error:o instanceof Error?o:new Error(String(o))}}n.set(i.rows,c)}if(c.error)throw c.error;return c.value}}function we(e,t){for(const r of e){const n=r(t);if(n!=null)return n}return null}function Y(e,t={},r={nodes:0},n=0){if(++r.nodes>256||n>16)throw new Error("计算表达式超出深度或节点预算");if(!e||typeof e!="object"||Array.isArray(e))throw new Error("计算表达式应为声明式对象");if("aggregate"in e)return pe(e,t);if("field"in e){g(e.field);const i=e.field;return({row:c})=>Object.prototype.hasOwnProperty.call(c,i)?c[i]:void 0}if("value"in e){if(!R(e.value))throw new Error("常量应为有限 JSON 标量");return()=>e.value}return he(e,t,r,n)}function he(e,t,r,n){const i=C.find(a=>a.name===e.op);if(!i||!Array.isArray(e.args))throw new Error("未知计算操作");if(e.args.length>256||Object.keys(e.args).length!==e.args.length)throw new Error("计算参数超出预算或包含空位");if(e.args.length<i.minArgs||e.args.length>i.maxArgs)throw new Error("运算参数数量不正确");const c=e.op==="if"?p(e.condition,r,n+1):void 0;if(e.op!=="if"&&e.condition!==void 0)throw new Error("仅 IF 运算接受 condition");const o=e.args.map(a=>Y(a,t,r,n+1));return c?a=>o[c(a.row)?0:1](a):["add","subtract","multiply","divide","coalesce"].includes(e.op)?e.op==="coalesce"?a=>we(o,a):a=>ge(e.op,o.map(s=>s(a)),t):a=>se(e.op,o.map(s=>s(a)),t.numeric,t.digits,t.nulls)}function ye(e){Y(e);const t=new Set,r=n=>{"field"in n&&n.field&&t.add(n.field),"aggregate"in n&&n.weightField&&t.add(n.weightField),"args"in n&&(n.args.forEach(r),n.condition&&H(n.condition).forEach(i=>t.add(i)))};return r(e),[...t]}const be=16,P=1024*1024,X=5e5,D=new WeakMap,m=Symbol("uncacheable-computation-definition");function A(e,t,r=0){if(++t.nodes>1e4||r>32)throw m;if(e==null)return[String(e)];if(typeof e=="number")return["number",Object.is(e,-0)?"-0":String(e)];if(typeof e=="boolean")return["boolean",e];if(typeof e=="string"){if(t.units+=e.length,t.units>P)throw m;return["string",e]}if(typeof e!="object")throw m;if(Array.isArray(e)){if(Object.getPrototypeOf(e)!==Array.prototype||Object.keys(e).length!==e.length)throw m;return["array",Array.from({length:e.length},(n,i)=>A(W(e,String(i)),t,r+1))]}if(Object.getPrototypeOf(e)!==Object.prototype&&Object.getPrototypeOf(e)!==null)throw m;return["object",Object.keys(e).map(n=>[A(n,t,r+1),A(W(e,n),t,r+1)])]}function W(e,t){const r=Object.getOwnPropertyDescriptor(e,t);if(!r||r.get||r.set)throw m;return r.value}function Ee(e){try{return JSON.stringify(A(e,{nodes:0,units:0}))}catch(t){if(t!==m)throw t;return}}function Ae(e){D.set(e,{programs:new Map,units:0,slots:0})}function ve(e,t){const r=D.get(e);if(!r)return;const n={programs:new Map,units:r.units,slots:r.slots};for(const[i,c]of r.programs){const o=new WeakMap;t.forEach((a,s)=>{const f=c.rows.get(e[s]);f&&o.set(a,f)}),n.programs.set(i,{...c,rows:o})}D.set(t,n)}function Oe(e,t,r){const n=D.get(e);if(!n||t.some(f=>typeof f.expression=="string"))return;const i=Ee(t);if(i===void 0||i.length>P)return;const c=n.programs.get(i);if(c)return c;const o=r(),a=e.length*o.reduce((f,u)=>f+u.dependencies.length+1,0),s={fields:o,rows:new WeakMap,slots:a,cacheRows:a<=X};if(!s.cacheRows)return s;for(;n.programs.size>=be||n.units+i.length>P||n.slots+a>X;){const f=n.programs.keys().next().value;n.slots-=n.programs.get(f).slots,n.units-=f.length,n.programs.delete(f)}return n.programs.set(i,s),n.units+=i.length,n.slots+=a,s}function De(e,t,r,n){if((r.definition.scope??"row")!=="row")return;const i=e.program?.rows.get(t)?.get(r.definition.field);return i?.dependencies.every((c,o)=>Object.is(n[r.dependencies[o]],c))?i:void 0}function Se(e,t,r,n,i){const c=e.program;if(!c?.cacheRows||(r.definition.scope??"row")!=="row")return;let o=e.writes.get(t);o||(o=new Map(c.rows.get(t)),e.writes.set(t,o),c.rows.set(t,o)),o.set(r.definition.field,{dependencies:r.dependencies.map(a=>n[a]),value:n[r.definition.field],...i?{issue:{field:i.field,message:i.message}}:{}})}function Ne(e){if(g(e.field),e.scope!==void 0&&!["row","group","dataset"].includes(e.scope))throw new Error("未知计算范围");if(e.numeric!==void 0&&e.numeric!=="number"&&e.numeric!=="decimal")throw new Error("未知数值模式");if(e.digits!==void 0&&w(e.digits),e.nulls!==void 0&&e.nulls!=="propagate"&&e.nulls!=="error")throw new Error("未知空值规则");if(e.divisionByZero!==void 0&&e.divisionByZero!=="null"&&e.divisionByZero!=="error")throw new Error("未知除零规则");if(e.scope==="group"&&(!Array.isArray(e.groupBy)||!e.groupBy.length))throw new Error("分组计算需要 groupBy 字段");Me(e)}function Me(e){if(e.groupBy!==void 0){if(!Array.isArray(e.groupBy)||e.groupBy.length>16)throw new Error("计算分组最多 16 级");e.groupBy.forEach(g)}if(e.dependsOn!==void 0){if(!Array.isArray(e.dependsOn)||e.dependsOn.length>2048)throw new Error("计算依赖超出预算");e.dependsOn.forEach(g)}}function I(e){return[...new Set([...typeof e.expression=="string"?e.dependsOn??[]:ye(e.expression),...e.groupBy??[]])]}function Q(e){if(!Array.isArray(e)||e.length>2048)throw new Error("计算字段应为数组且最多2048项");const t=new Map;for(const o of e){if(Ne(o),t.has(o.field))throw new Error(`计算字段重复:${o.field}`);t.set(o.field,o)}const r=new Set,n=new Set,i=[];function c(o){if(!n.has(o.field)){if(r.has(o.field))throw new Error(`计算字段存在循环依赖:${[...r,o.field].join(" → ")}`);r.add(o.field);for(const a of I(o)){const s=t.get(a);s&&c(s)}r.delete(o.field),n.add(o.field),i.push(o)}}return e.forEach(c),i}function Fe(e){try{const t=Q(e);return{valid:!0,errors:[],order:t.map(r=>r.field),fields:e.map(r=>({field:r.field,dependencies:I(r),scope:r.scope??"row"}))}}catch(t){return{valid:!1,errors:[t instanceof Error?t.message:String(t)],fields:[],order:[]}}}function je(e=[]){return{fields:e.map(t=>({...t})),functions:C,operations:C.map(t=>t.name),aggregates:["sum","count","avg","min","max","weightedAvg"],scopes:["row","group","dataset"],numericModes:["number","decimal"],rules:{nulls:"propagate",aggregateNulls:"skip",emptyAggregate:null,countEmpty:0,divisionByZero:"error",decimalOutput:"string",rounding:"half-away-from-zero"}}}function z(e){return Q(e.fields).map(t=>{const r=I(t);if(typeof t.expression!="string")return{definition:t,dependencies:r,read:Y(t.expression,t)};if(!e.formula)throw new Error("字符串公式需要显式配置 formula adapter");const n=t.expression;return{definition:t,dependencies:r,read:i=>e.formula.evaluate(n,i)}})}function xe(e,t){return JSON.stringify(t.map(r=>{const n=Object.prototype.hasOwnProperty.call(e,r)?e[r]:null;if(n!=null&&!R(n))throw new Error("分组字段应为有限 JSON 标量");return[typeof n,n??null]}))}function ke(e,t){if(t.scope==="dataset")return()=>e;if(t.scope!=="group"){const i=new WeakMap;return c=>{let o=i.get(c);return o||(o=[c],i.set(c,o)),o}}const r=new Map,n=new WeakMap;for(const i of e){const c=xe(i,t.groupBy);n.set(i,c);const o=r.get(c);o?o.push(i):r.set(c,[i])}return i=>r.get(n.get(i))}function Ce(e,t){const r=t.maxRows??1e5,n=t.maxCells??2e6;if(!Array.isArray(e)||!Number.isSafeInteger(r)||r<1||e.length>r)throw new Error("计算数据行数超出预算或输入不是数组");if(!Array.isArray(t.fields)||t.fields.length>2048)throw new Error("计算字段应为数组且最多2048项");if(!Number.isSafeInteger(n)||n<1||e.length*t.fields.length>n)throw new Error("计算单元格超出 maxCells 预算")}function G(e){if(e?.aborted){const t=new Error("数据计算已取消");throw t.name="AbortError",t}}function Pe(e,t,r,n,i,c){try{const o=e.read({row:t,rowIndex:r,rows:n});if(o!==void 0&&!R(o))throw new Error("计算结果应为有限 JSON 标量,异步公式请先在数据源中求值");t[e.definition.field]=o??null}catch(o){const a=o instanceof Error?o.message:String(o);if(i.onError!=="null")throw Object.assign(new Error(`第 ${r+1} 行 ${e.definition.field}:${a}`),{cause:o});t[e.definition.field]=null,c.push({rowIndex:r,field:e.definition.field,message:a})}}function Re(e,t,r,n,i,c,o,a){const s=De(e,t,r,n);if(s&&(!s.issue||o.onError==="null")){n[r.definition.field]=s.value,s.issue&&a.push({...s.issue,rowIndex:i});return}const f=a.length;Pe(r,n,i,c,o,a),Se(e,t,r,n,a.length>f?a[a.length-1]:void 0)}function Ye(e,t){Ce(e,t),G(t.signal);const r=Oe(e,t.fields,()=>z(t)),n={program:r,writes:new WeakMap},i=r?.fields??z(t),c=[],o=e.map((a,s)=>{if(!a||typeof a!="object"||Array.isArray(a))throw new Error(`第 ${s+1} 行应为对象`);return{...a}});for(const a of i){const s=ke(o,a.definition);o.forEach((f,u)=>{G(t.signal),Re(n,e[u],a,f,u,s(f),t,c)})}return{rows:o,issues:c}}exports.addDecimal=y;exports.aggregateRows=x;exports.compareDecimal=h;exports.compileReportPredicate=p;exports.computationFieldName=g;exports.computeDataset=Ye;exports.createAggregateAccumulator=Z;exports.decimalDigits=w;exports.divideDecimal=v;exports.evaluateReportPredicate=ce;exports.forkComputedDataset=ve;exports.formatDecimal=q;exports.getComputationMetadata=je;exports.multiplyDecimal=N;exports.parseDecimal=l;exports.printDecimal=b;exports.registerComputedDataset=Ae;exports.reportPredicateFields=H;exports.validateComputedFields=Fe;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";const n=require("./component-tree-BjZIp6w9.cjs");function c(t,r,e,o){if(!n.validDataBar(t)||t.start===t.end)return;const a=Math.max(0,r-2*o);return{x:o+a*t.start,y:o,width:a*(t.end-t.start),height:Math.max(0,e-2*o),color:t.color}}exports.dataBarBox=c;
|