@agile-team/mach-report 2.17.0 → 2.19.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.
Files changed (170) hide show
  1. package/README.md +19 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-UHSApSG9.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-xJIYmnZ_.js} +3 -3
  4. package/dist/ParamEditor-BZb-okUd.cjs +1 -0
  5. package/dist/ParamEditor-D1wWemaf.js +732 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-B88R-fME.js} +39 -39
  7. package/dist/ReportBatchPanel-BkJFqeEW.cjs +1 -0
  8. package/dist/ReportLabelStudio-B4WZ2XNN.js +239 -0
  9. package/dist/ReportLabelStudio-BN-fYNCr.cjs +1 -0
  10. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  11. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  12. package/dist/ReportPreview-BUr8GQUW.js +5618 -0
  13. package/dist/ReportPreview-D7PvKzs3.cjs +6 -0
  14. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BGELmgd3.js} +1 -1
  15. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BOh2MgjQ.cjs} +1 -1
  16. package/dist/RuleEditor-CoLqgehG.js +2337 -0
  17. package/dist/RuleEditor-XaLcCdTb.cjs +1 -0
  18. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-DU95loB-.js} +2 -2
  19. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-DiG8tRRe.cjs} +1 -1
  20. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-DE1KSD6c.js} +2 -2
  21. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-G-Y299wc.cjs} +1 -1
  22. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-KQx9ts0D.cjs} +1 -1
  23. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-vqFJ_Y9o.js} +2 -2
  24. package/dist/analytics.cjs +1 -1
  25. package/dist/analytics.d.cts +100 -41
  26. package/dist/analytics.d.ts +100 -41
  27. package/dist/analytics.js +76 -141
  28. package/dist/artifact-integrity.json +110 -102
  29. package/dist/assets-2eC3mOcV.js +232 -0
  30. package/dist/assets-B0Hxn4l6.cjs +1 -0
  31. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  32. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  33. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  34. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  35. package/dist/charts-Dlv8j2AG.js +141 -0
  36. package/dist/charts-aCtoswXq.cjs +1 -0
  37. package/dist/codes.cjs +9 -9
  38. package/dist/codes.d.cts +54 -0
  39. package/dist/codes.d.ts +54 -0
  40. package/dist/codes.js +12097 -13668
  41. package/dist/column-visual-BpgQVWwT.js +238 -0
  42. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  43. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  44. package/dist/component-tree-CvW4lzpv.js +67 -0
  45. package/dist/computed-4TnxzgIh.cjs +1 -0
  46. package/dist/computed-C8NRZQss.js +739 -0
  47. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  48. package/dist/data-bar-PtjXhMgN.js +9 -0
  49. package/dist/designer-CyKXBhQg.cjs +2 -0
  50. package/dist/designer-fVvpYg8H.js +5824 -0
  51. package/dist/designer.cjs +1 -1
  52. package/dist/designer.d.cts +803 -43
  53. package/dist/designer.d.ts +803 -43
  54. package/dist/designer.js +26 -20
  55. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  56. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  57. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  58. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  59. package/dist/index-CPh6tqge.js +1575 -0
  60. package/dist/index-CUNw7dL9.cjs +1 -0
  61. package/dist/index.cjs +7 -7
  62. package/dist/index.d.cts +361 -15
  63. package/dist/index.d.ts +361 -15
  64. package/dist/index.js +876 -835
  65. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  66. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  67. package/dist/matrix-0hywp0-F.cjs +1 -0
  68. package/dist/matrix-Dy-tyY7E.js +381 -0
  69. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  70. package/dist/param-validation-CnDEd2l-.js +333 -0
  71. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  72. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  73. package/dist/pdf.cjs +1 -1
  74. package/dist/pdf.d.cts +54 -0
  75. package/dist/pdf.d.ts +54 -0
  76. package/dist/pdf.js +2 -2
  77. package/dist/{plugin-CtFX9PFG.cjs → plugin-4VuL38Nc.cjs} +1 -1
  78. package/dist/{plugin-BBp74CQZ.js → plugin-YWHcI3t4.js} +5 -5
  79. package/dist/prefill-B8H9qwE4.js +371 -0
  80. package/dist/prefill-D7EswyTI.cjs +1 -0
  81. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  82. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  83. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  84. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  85. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  86. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  87. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  88. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  89. package/dist/report-encoding-worker.cjs +1 -1
  90. package/dist/report-encoding-worker.js +1 -1
  91. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  92. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  93. package/dist/runtime-CDA6d263.cjs +1 -0
  94. package/dist/runtime-CEMvybO7.js +170 -0
  95. package/dist/sbom.cdx.json +1 -1
  96. package/dist/server/node.d.cts +75 -7
  97. package/dist/server/node.d.ts +75 -7
  98. package/dist/server-node.cjs +4 -4
  99. package/dist/server-node.js +2692 -1990
  100. package/dist/server.cjs +1 -1
  101. package/dist/server.d.cts +243 -28
  102. package/dist/server.d.ts +243 -28
  103. package/dist/server.js +28 -28
  104. package/dist/sha256-BDQ1Qk7A.js +158 -0
  105. package/dist/sha256-DgZAKXqI.cjs +1 -0
  106. package/dist/style.css +1 -1
  107. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  108. package/dist/template-bindings-TKnXM7ll.js +62 -0
  109. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  110. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  111. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  112. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  113. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  114. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  115. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  116. package/dist/template-registry-DzWswQI5.cjs +1 -0
  117. package/dist/vue/async.d.cts +528 -33
  118. package/dist/vue/async.d.ts +528 -33
  119. package/dist/vue/index.d.cts +616 -64
  120. package/dist/vue/index.d.ts +616 -64
  121. package/dist/vue-async.cjs +1 -1
  122. package/dist/vue-async.js +3 -3
  123. package/dist/vue.cjs +1 -1
  124. package/dist/vue.js +94 -89
  125. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  126. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  127. package/dist/worker.cjs +1 -1
  128. package/dist/worker.d.cts +75 -7
  129. package/dist/worker.d.ts +75 -7
  130. package/dist/worker.js +4 -4
  131. package/dist/xlsx.cjs +4 -4
  132. package/dist/xlsx.d.cts +120 -13
  133. package/dist/xlsx.d.ts +120 -13
  134. package/dist/xlsx.js +313 -279
  135. package/package.json +1 -1
  136. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  137. package/dist/ParamEditor-DNNARyeB.js +0 -594
  138. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  139. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  140. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  141. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  142. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  143. package/dist/assets-BIMVwjQe.js +0 -231
  144. package/dist/assets-Dfs2ElxI.cjs +0 -1
  145. package/dist/component-tree-Ca6YYfHq.js +0 -61
  146. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  147. package/dist/computed-BW5a8QFk.js +0 -612
  148. package/dist/computed-C2GD3XcE.cjs +0 -1
  149. package/dist/config-Dg_o8e7m.cjs +0 -1
  150. package/dist/config-XQ4qrQ7Q.js +0 -844
  151. package/dist/designer-D9XAxqSc.js +0 -5178
  152. package/dist/designer-uCDo5XSK.cjs +0 -2
  153. package/dist/drill-ByN8COs_.cjs +0 -1
  154. package/dist/drill-CKW3Xtfa.js +0 -145
  155. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  156. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  157. package/dist/matrix-JLAXlux-.js +0 -302
  158. package/dist/matrix-gTHpDTGm.cjs +0 -1
  159. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  160. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  161. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  162. package/dist/runtime-DakRXui3.js +0 -170
  163. package/dist/runtime-dL5ygIfa.cjs +0 -1
  164. package/dist/sha256-BshdOkCC.cjs +0 -1
  165. package/dist/sha256-DTG-Gq8i.js +0 -157
  166. package/dist/template-bindings-C2SpvsMU.js +0 -58
  167. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  168. package/dist/template-registry-CpysHAxy.cjs +0 -1
  169. package/dist/tree-CLpxYbKa.cjs +0 -1
  170. package/dist/tree-DNJorJUf.js +0 -172
package/dist/designer.js CHANGED
@@ -1,23 +1,29 @@
1
1
  import "vue";
2
- import { E as S, c as T, P as s, d as R, R as t, D as A, e as _, f as r, g as M, h as l, i as P, a as i, b as p, j as m, T as o, k as G, l as L, m as n, n as D } from "./designer-D9XAxqSc.js";
2
+ import { C as e, d as s, e as t, f as T, E as _, g as A, L as R, P as r, h as M, R as l, D as i, i as o, j as G, c as L, k as p, l as P, m as n, a as I, b as m, n as D, T as d, o as O, p as C, q as B, r as u } from "./designer-fVvpYg8H.js";
3
3
  export {
4
- S as EXCEL_BINDING_MESSAGES,
5
- T as ExcelBindingWizard,
6
- s as PARAM_EDITOR_MESSAGES,
7
- R as ParamEditor,
8
- t as REPORT_BATCH_MESSAGES,
9
- A as RULE_EDITOR_MESSAGES,
10
- _ as ReportBatchPanel,
11
- r as ReportTemplateEditor,
12
- M as ReportTemplateLibrary,
13
- l as RuleEditor,
14
- P as TEMPLATE_EDITOR_MESSAGES,
15
- i as TEMPLATE_LIBRARY_MESSAGES,
16
- p as TEMPLATE_PRODUCT_MESSAGES,
17
- m as TEMPLATE_RECOVERY_MESSAGES,
18
- o as TEMPLATE_REVIEW_MESSAGES,
19
- G as TemplateOutlinePanel,
20
- L as TemplateReusePanel,
21
- n as TemplateReviewPanel,
22
- D as createTemplateDraftStorage
4
+ e as COLUMN_VISUAL_MESSAGES,
5
+ s as ChartBindingInspector,
6
+ t as ColumnVisualEditor,
7
+ T as DESIGNER_GUIDE_MESSAGES,
8
+ _ as EXCEL_BINDING_MESSAGES,
9
+ A as ExcelBindingWizard,
10
+ R as LABEL_STUDIO_MESSAGES,
11
+ r as PARAM_EDITOR_MESSAGES,
12
+ M as ParamEditor,
13
+ l as REPORT_BATCH_MESSAGES,
14
+ i as RULE_EDITOR_MESSAGES,
15
+ o as ReportBatchPanel,
16
+ G as ReportLabelStudio,
17
+ L as ReportTemplateEditor,
18
+ p as ReportTemplateLibrary,
19
+ P as RuleEditor,
20
+ n as TEMPLATE_EDITOR_MESSAGES,
21
+ I as TEMPLATE_LIBRARY_MESSAGES,
22
+ m as TEMPLATE_PRODUCT_MESSAGES,
23
+ D as TEMPLATE_RECOVERY_MESSAGES,
24
+ d as TEMPLATE_REVIEW_MESSAGES,
25
+ O as TemplateOutlinePanel,
26
+ C as TemplateReusePanel,
27
+ B as TemplateReviewPanel,
28
+ u as createTemplateDraftStorage
23
29
  };
@@ -1 +1 @@
1
- "use strict";const s=require("./runtime-dL5ygIfa.cjs"),e=require("./protocol-B5A2uom4.cjs");async function a(r,t){try{if(r.operation!=="exportPrepared")throw new TypeError("内置编码 Worker 仅接受 exportPrepared");return await e.runReportWorkerRequest(s.createReportRuntime({reports:{},budget:r.budget}),r,t)}catch(o){return{protocol:e.REPORT_WORKER_PROTOCOL,id:r.id,error:e.serializeError(o)}}}function R(r=globalThis){const t=o=>{if(!e.isReportWorkerRequest(o.data))return;const i=o.data;a(i,n=>r.postMessage({protocol:e.REPORT_WORKER_PROTOCOL,id:i.id,type:"event",event:n})).then(n=>r.postMessage(n,e.reportWorkerTransferList(n)))};return r.addEventListener("message",t),()=>r.removeEventListener("message",t)}exports.serveReportEncodingWorker=R;
1
+ "use strict";const s=require("./runtime-CDA6d263.cjs"),e=require("./protocol-ByRVzzQG.cjs");async function a(r,t){try{if(r.operation!=="exportPrepared")throw new TypeError("内置编码 Worker 仅接受 exportPrepared");return await e.runReportWorkerRequest(s.createReportRuntime({reports:{},budget:r.budget}),r,t)}catch(o){return{protocol:e.REPORT_WORKER_PROTOCOL,id:r.id,error:e.serializeError(o)}}}function R(r=globalThis){const t=o=>{if(!e.isReportWorkerRequest(o.data))return;const i=o.data;a(i,n=>r.postMessage({protocol:e.REPORT_WORKER_PROTOCOL,id:i.id,type:"event",event:n})).then(n=>r.postMessage(n,e.reportWorkerTransferList(n)))};return r.addEventListener("message",t),()=>r.removeEventListener("message",t)}exports.serveReportEncodingWorker=R;
@@ -1,5 +1,5 @@
1
- import { c as n } from "./runtime-DakRXui3.js";
2
- import { i, a as p, r as d, R as a, s as R } from "./protocol-BaiWjq5w.js";
1
+ import { c as n } from "./runtime-CEMvybO7.js";
2
+ import { i, a as p, r as d, R as a, s as R } from "./protocol-Cr81vFSQ.js";
3
3
  async function u(r, e) {
4
4
  try {
5
5
  if (r.operation !== "exportPrepared") throw new TypeError("内置编码 Worker 仅接受 exportPrepared");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=new Map;let b=0,d={maxFonts:8,maxBytes:64*1024*1024,maxFontBytes:24*1024*1024};function O(){for(;f.size>d.maxFonts||b>d.maxBytes;){const t=f.keys().next().value;b-=f.get(t).byteLength,f.delete(t)}}function W(t){const e={...d,...t};if(!Object.values(e).every(n=>Number.isSafeInteger(n)&&n>0))throw new Error("字体缓存预算应为正整数字节/数量");d=e;for(const[n,a]of f)a.byteLength>d.maxFontBytes&&B(n);O()}function p(){return{fonts:f.size,bytes:b,...d}}function j(t){const e=f.get(t);return e&&(f.delete(t),f.set(t,e)),e}function B(t){const e=f.get(t);e&&(b-=e.byteLength),f.delete(t)}function q(){f.clear(),b=0}function H(t,e){B(t),!(e.byteLength>d.maxBytes||e.byteLength>d.maxFontBytes)&&(f.set(t,e),b+=e.byteLength,O())}const V="mach-report-fonts",u="fonts";function $(){return new Promise((t,e)=>{const n=indexedDB.open(V,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(u)||n.result.createObjectStore(u)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}function M(t){if(t instanceof Uint8Array)return{bytes:t,accessedAt:0};const e=t;return e?.bytes instanceof Uint8Array&&Number.isFinite(e.accessedAt)?e:void 0}async function C(t,e){if(typeof indexedDB>"u")return t;let n;try{return n=await $(),await e(n)}catch{return t}finally{n?.close()}}function G(t){return C(null,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u),i=o.get(t);let c=null;i.onsuccess=()=>{const s=M(i.result);s&&s.bytes.byteLength<=p().maxFontBytes?(c=s.bytes,o.put({bytes:s.bytes,accessedAt:Date.now()},t)):i.result!==void 0&&o.delete(t)},r.oncomplete=()=>n(c),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}function J(t,e,n,a){const r=p(),o=e.filter(s=>s.key!==n);t.delete(n),a.byteLength<=Math.min(r.maxFontBytes,r.maxBytes)&&o.unshift({key:n,bytes:a.byteLength,accessedAt:Date.now()}),o.sort((s,h)=>h.accessedAt-s.accessedAt);let i=0,c=0;for(const s of o){if(c>=r.maxFonts||i+s.bytes>r.maxBytes||s.bytes>r.maxFontBytes){t.delete(s.key);continue}i+=s.bytes,c++,s.key===n&&t.put({bytes:a,accessedAt:s.accessedAt},n)}}function _(t,e){return C(void 0,n=>new Promise((a,r)=>{const o=n.transaction(u,"readwrite"),i=o.objectStore(u),c=i.openCursor(),s=[];c.onsuccess=()=>{const h=c.result;if(!h){J(i,s,t,e);return}const x=M(h.value);x?s.push({key:h.key,bytes:x.bytes.byteLength,accessedAt:x.accessedAt}):h.delete(),h.continue()},o.oncomplete=()=>a(),o.onerror=()=>r(o.error),o.onabort=()=>r(o.error)}))}function D(t){return C(void 0,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u);t===void 0?o.clear():o.delete(t),r.oncomplete=()=>n(),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}let L=0,S=0,v=Promise.resolve();const g=new Map;async function N(t){l.set(t,(l.get(t)??0)+1),B(t),w.delete(t);const e=g.get(t),n=(async()=>{await v,await e,await y.get(t),await D(t)})();g.set(t,n);try{await n}finally{g.get(t)===n&&g.delete(t)}}async function I(){L++,q(),w.clear(),l.clear();const t=v,e=(async()=>{await t,await Promise.all(y.values()),await D()})();v=e.catch(()=>{}),await e}const l=new Map,y=new Map,w=new Map,E=new Set;function k(){!S&&!E.size&&l.clear()}const T=new WeakMap;function K(t){const e=new TextDecoder().decode(t.subarray(0,256));return/^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e)}function R(t){if(t.byteLength===0)throw new Error("字体文件为空");if(K(t))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件")}function Q(t){const e=T.get(t);if(e)return e;const n=(async()=>{const a=String.fromCharCode(...t.subarray(0,4));if(!["\0\0\0","true","OTTO","wOFF","wOF2","ttcf"].includes(a))throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");const{default:r}=await Promise.resolve().then(()=>require("./pdf-B8JouyYv.cjs")).then(i=>i.fontkit_es),o=r.create(t);if(!Number.isFinite(o.unitsPerEm)||o.unitsPerEm<=0||!o.characterSet?.length||!o.numGlyphs)throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件")})();return T.set(t,n),n}function A(t,e,n=!1){const a=n?"字体加载超时,请检查网络或字体服务":e instanceof Error?e.message:String(e);return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`),{cause:e})}function P(t,e){if(t>e)throw new Error(`字体文件超过单字体下载预算(${e}字节)`)}async function X(t,e,n){const a=Number(t.headers?.get("content-length"));try{Number.isFinite(a)&&P(a,e)}catch(r){throw t.body?.cancel(r).catch(()=>{}),r}if(!t.body){const r=new Uint8Array(await F(t.arrayBuffer(),n));return P(r.byteLength,e),r}return U(t.body,e,n)}async function U(t,e,n){const a=t.getReader(),r=[];let o=0;try{for(;;){const s=await F(a.read(),n);if(s.done)break;o+=s.value.byteLength,P(o,e),r.push(s.value)}const i=new Uint8Array(o);let c=0;for(const s of r)i.set(s,c),c+=s.byteLength;return i}catch(i){throw a.cancel(i).catch(()=>{}),i}finally{a.releaseLock()}}async function Y(t,e,n){if(t[0]!==31||t[1]!==139)return t;if(typeof DecompressionStream>"u")throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");const r=new ReadableStream({start(o){o.enqueue(t),o.close()}}).pipeThrough(new DecompressionStream("gzip"));return U(r,e,n)}async function Z(t){const e=new AbortController;let n=!1;const a=setTimeout(()=>{n=!0,e.abort()},15e3);try{const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`字体请求返回 HTTP ${r.status}`);if(/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type")??""))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");const o=p().maxFontBytes,i=await X(r,o,e.signal),c=await Y(i,o,e.signal);return R(c),{bytes:c,fromCache:!1}}catch(r){throw e.abort(),A(t,r,n)}finally{clearTimeout(a)}}async function tt(t){await v,await g.get(t);const e=await G(t);if(e)try{return R(e),{bytes:e,fromCache:!0}}catch{}return Z(t)}function et(t){const e=w.get(t);if(e)return e;const n=tt(t);w.set(t,n),E.add(n);const a=()=>{w.get(t)===n&&w.delete(t),E.delete(n),k()};return n.then(a,a),n}async function nt(t,e,n,a){if((l.get(t)??0)!==n||L!==a)return;H(t,e);const r=y.get(t);if(r){await r;return}const o=_(t,e);y.set(t,o),await o,y.get(t)===o&&y.delete(t)}function m(t){return t.reason??new DOMException("字体加载已取消","AbortError")}function F(t,e){return e?e.aborted?Promise.reject(m(e)):new Promise((n,a)=>{const r=()=>{e.removeEventListener("abort",r),a(m(e))};e.addEventListener("abort",r,{once:!0}),t.then(o=>{e.removeEventListener("abort",r),n(o)},o=>{e.removeEventListener("abort",r),a(o)})}):t}async function rt(t,e,n,a,r){try{return await F(Q(e.bytes),n.signal),e.bytes}catch(o){if(n.signal?.aborted)throw m(n.signal);if((l.get(t)??0)!==a||L!==r)throw A(t,o);if(await N(t),e.fromCache)return await z(t,n);throw A(t,o)}}async function z(t,e={}){if(e.signal?.aborted)throw m(e.signal);const n=l.get(t)??0,a=L,r=j(t);if(r&&!e.strict)return r;const o=r?void 0:et(t);S++;try{const i=r?{bytes:r,fromCache:!0}:await F(o,e.signal),c=e.strict?await rt(t,i,e,n,a):i.bytes;if(e.signal?.aborted)throw m(e.signal);return r||await F(nt(t,c,n,a),e.signal),c}catch(i){if(e.signal?.aborted)throw m(e.signal);if(e.strict)throw i;return null}finally{S--,k()}}exports.clearFontCache=I;exports.configureFontCache=W;exports.getFontCacheStats=p;exports.invalidateFontCache=N;exports.loadFontWithCache=z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=new Map;let b=0,d={maxFonts:8,maxBytes:64*1024*1024,maxFontBytes:24*1024*1024};function O(){for(;f.size>d.maxFonts||b>d.maxBytes;){const t=f.keys().next().value;b-=f.get(t).byteLength,f.delete(t)}}function W(t){const e={...d,...t};if(!Object.values(e).every(n=>Number.isSafeInteger(n)&&n>0))throw new Error("字体缓存预算应为正整数字节/数量");d=e;for(const[n,a]of f)a.byteLength>d.maxFontBytes&&B(n);O()}function p(){return{fonts:f.size,bytes:b,...d}}function j(t){const e=f.get(t);return e&&(f.delete(t),f.set(t,e)),e}function B(t){const e=f.get(t);e&&(b-=e.byteLength),f.delete(t)}function q(){f.clear(),b=0}function H(t,e){B(t),!(e.byteLength>d.maxBytes||e.byteLength>d.maxFontBytes)&&(f.set(t,e),b+=e.byteLength,O())}const V="mach-report-fonts",u="fonts";function $(){return new Promise((t,e)=>{const n=indexedDB.open(V,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(u)||n.result.createObjectStore(u)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}function M(t){if(t instanceof Uint8Array)return{bytes:t,accessedAt:0};const e=t;return e?.bytes instanceof Uint8Array&&Number.isFinite(e.accessedAt)?e:void 0}async function C(t,e){if(typeof indexedDB>"u")return t;let n;try{return n=await $(),await e(n)}catch{return t}finally{n?.close()}}function G(t){return C(null,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u),i=o.get(t);let c=null;i.onsuccess=()=>{const s=M(i.result);s&&s.bytes.byteLength<=p().maxFontBytes?(c=s.bytes,o.put({bytes:s.bytes,accessedAt:Date.now()},t)):i.result!==void 0&&o.delete(t)},r.oncomplete=()=>n(c),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}function J(t,e,n,a){const r=p(),o=e.filter(s=>s.key!==n);t.delete(n),a.byteLength<=Math.min(r.maxFontBytes,r.maxBytes)&&o.unshift({key:n,bytes:a.byteLength,accessedAt:Date.now()}),o.sort((s,h)=>h.accessedAt-s.accessedAt);let i=0,c=0;for(const s of o){if(c>=r.maxFonts||i+s.bytes>r.maxBytes||s.bytes>r.maxFontBytes){t.delete(s.key);continue}i+=s.bytes,c++,s.key===n&&t.put({bytes:a,accessedAt:s.accessedAt},n)}}function _(t,e){return C(void 0,n=>new Promise((a,r)=>{const o=n.transaction(u,"readwrite"),i=o.objectStore(u),c=i.openCursor(),s=[];c.onsuccess=()=>{const h=c.result;if(!h){J(i,s,t,e);return}const x=M(h.value);x?s.push({key:h.key,bytes:x.bytes.byteLength,accessedAt:x.accessedAt}):h.delete(),h.continue()},o.oncomplete=()=>a(),o.onerror=()=>r(o.error),o.onabort=()=>r(o.error)}))}function D(t){return C(void 0,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u);t===void 0?o.clear():o.delete(t),r.oncomplete=()=>n(),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}let L=0,S=0,v=Promise.resolve();const g=new Map;async function N(t){l.set(t,(l.get(t)??0)+1),B(t),w.delete(t);const e=g.get(t),n=(async()=>{await v,await e,await y.get(t),await D(t)})();g.set(t,n);try{await n}finally{g.get(t)===n&&g.delete(t)}}async function I(){L++,q(),w.clear(),l.clear();const t=v,e=(async()=>{await t,await Promise.all(y.values()),await D()})();v=e.catch(()=>{}),await e}const l=new Map,y=new Map,w=new Map,E=new Set;function k(){!S&&!E.size&&l.clear()}const T=new WeakMap;function K(t){const e=new TextDecoder().decode(t.subarray(0,256));return/^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e)}function R(t){if(t.byteLength===0)throw new Error("字体文件为空");if(K(t))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件")}function Q(t){const e=T.get(t);if(e)return e;const n=(async()=>{const a=String.fromCharCode(...t.subarray(0,4));if(!["\0\0\0","true","OTTO","wOFF","wOF2","ttcf"].includes(a))throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");const{default:r}=await Promise.resolve().then(()=>require("./pdf-DqyxJ96U.cjs")).then(i=>i.fontkit_es),o=r.create(t);if(!Number.isFinite(o.unitsPerEm)||o.unitsPerEm<=0||!o.characterSet?.length||!o.numGlyphs)throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件")})();return T.set(t,n),n}function A(t,e,n=!1){const a=n?"字体加载超时,请检查网络或字体服务":e instanceof Error?e.message:String(e);return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`),{cause:e})}function P(t,e){if(t>e)throw new Error(`字体文件超过单字体下载预算(${e}字节)`)}async function X(t,e,n){const a=Number(t.headers?.get("content-length"));try{Number.isFinite(a)&&P(a,e)}catch(r){throw t.body?.cancel(r).catch(()=>{}),r}if(!t.body){const r=new Uint8Array(await F(t.arrayBuffer(),n));return P(r.byteLength,e),r}return U(t.body,e,n)}async function U(t,e,n){const a=t.getReader(),r=[];let o=0;try{for(;;){const s=await F(a.read(),n);if(s.done)break;o+=s.value.byteLength,P(o,e),r.push(s.value)}const i=new Uint8Array(o);let c=0;for(const s of r)i.set(s,c),c+=s.byteLength;return i}catch(i){throw a.cancel(i).catch(()=>{}),i}finally{a.releaseLock()}}async function Y(t,e,n){if(t[0]!==31||t[1]!==139)return t;if(typeof DecompressionStream>"u")throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");const r=new ReadableStream({start(o){o.enqueue(t),o.close()}}).pipeThrough(new DecompressionStream("gzip"));return U(r,e,n)}async function Z(t){const e=new AbortController;let n=!1;const a=setTimeout(()=>{n=!0,e.abort()},15e3);try{const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`字体请求返回 HTTP ${r.status}`);if(/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type")??""))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");const o=p().maxFontBytes,i=await X(r,o,e.signal),c=await Y(i,o,e.signal);return R(c),{bytes:c,fromCache:!1}}catch(r){throw e.abort(),A(t,r,n)}finally{clearTimeout(a)}}async function tt(t){await v,await g.get(t);const e=await G(t);if(e)try{return R(e),{bytes:e,fromCache:!0}}catch{}return Z(t)}function et(t){const e=w.get(t);if(e)return e;const n=tt(t);w.set(t,n),E.add(n);const a=()=>{w.get(t)===n&&w.delete(t),E.delete(n),k()};return n.then(a,a),n}async function nt(t,e,n,a){if((l.get(t)??0)!==n||L!==a)return;H(t,e);const r=y.get(t);if(r){await r;return}const o=_(t,e);y.set(t,o),await o,y.get(t)===o&&y.delete(t)}function m(t){return t.reason??new DOMException("字体加载已取消","AbortError")}function F(t,e){return e?e.aborted?Promise.reject(m(e)):new Promise((n,a)=>{const r=()=>{e.removeEventListener("abort",r),a(m(e))};e.addEventListener("abort",r,{once:!0}),t.then(o=>{e.removeEventListener("abort",r),n(o)},o=>{e.removeEventListener("abort",r),a(o)})}):t}async function rt(t,e,n,a,r){try{return await F(Q(e.bytes),n.signal),e.bytes}catch(o){if(n.signal?.aborted)throw m(n.signal);if((l.get(t)??0)!==a||L!==r)throw A(t,o);if(await N(t),e.fromCache)return await z(t,n);throw A(t,o)}}async function z(t,e={}){if(e.signal?.aborted)throw m(e.signal);const n=l.get(t)??0,a=L,r=j(t);if(r&&!e.strict)return r;const o=r?void 0:et(t);S++;try{const i=r?{bytes:r,fromCache:!0}:await F(o,e.signal),c=e.strict?await rt(t,i,e,n,a):i.bytes;if(e.signal?.aborted)throw m(e.signal);return r||await F(nt(t,c,n,a),e.signal),c}catch(i){if(e.signal?.aborted)throw m(e.signal);if(e.strict)throw i;return null}finally{S--,k()}}exports.clearFontCache=I;exports.configureFontCache=W;exports.getFontCacheStats=p;exports.invalidateFontCache=N;exports.loadFontWithCache=z;
@@ -139,7 +139,7 @@ function I(t) {
139
139
  const a = String.fromCharCode(...t.subarray(0, 4));
140
140
  if (!["\0\0\0", "true", "OTTO", "wOFF", "wOF2", "ttcf"].includes(a))
141
141
  throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");
142
- const { default: r } = await import("./pdf-l3ea86di.js").then((i) => i.f), o = r.create(t);
142
+ const { default: r } = await import("./pdf-CKROKygt.js").then((i) => i.f), o = r.create(t);
143
143
  if (!Number.isFinite(o.unitsPerEm) || o.unitsPerEm <= 0 || !o.characterSet?.length || !o.numGlyphs)
144
144
  throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件");
145
145
  })();