@agile-team/mach-report 2.16.0 → 2.17.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 +10 -6
- package/dist/{ExcelBindingWizard-CP6h2x1f.cjs → ExcelBindingWizard-Bq6FYME6.cjs} +1 -1
- package/dist/{ExcelBindingWizard-HhB3hAJE.js → ExcelBindingWizard-Co1svTsw.js} +3 -3
- package/dist/{ParamEditor-CUQLgoxa.cjs → ParamEditor-B5UZRgxv.cjs} +1 -1
- package/dist/{ParamEditor-OKesP_nO.js → ParamEditor-DNNARyeB.js} +1 -1
- package/dist/{ReportBatchPanel-cZCAMAwH.cjs → ReportBatchPanel-Ctvs2t_9.cjs} +1 -1
- package/dist/{ReportBatchPanel-ruxcbfY6.js → ReportBatchPanel-uQh06usx.js} +1 -1
- package/dist/ReportPreview-BdQawRh0.js +4879 -0
- package/dist/ReportPreview-CJC_-j2I.cjs +6 -0
- package/dist/{ReportTemplateLibrary-BDlNT8JN.cjs → ReportTemplateLibrary-CnP7_1pH.cjs} +1 -1
- package/dist/{ReportTemplateLibrary-DcwrH-63.js → ReportTemplateLibrary-TIL_Oj2l.js} +1 -1
- package/dist/RuleEditor-DkRjOLlr.js +2141 -0
- package/dist/RuleEditor-h5anGsDB.cjs +1 -0
- package/dist/{TemplateOutlinePanel-CGrT5DFN.cjs → TemplateOutlinePanel-BlLxRrfu.cjs} +1 -1
- package/dist/{TemplateOutlinePanel-SXCjaPKR.js → TemplateOutlinePanel-BouxsuqQ.js} +1 -1
- package/dist/{TemplateReusePanel-lHLOS9Wn.js → TemplateReusePanel-BEACLPaN.js} +2 -2
- package/dist/{TemplateReusePanel-6Z3wRFz8.cjs → TemplateReusePanel-yxsHSO40.cjs} +1 -1
- package/dist/{TemplateReviewPanel-CJ9PLc48.js → TemplateReviewPanel-B1OGRY2i.js} +1 -1
- package/dist/{TemplateReviewPanel-Dpk7sLcF.cjs → TemplateReviewPanel-D9Cx0m2N.cjs} +1 -1
- package/dist/analytics.cjs +1 -1
- package/dist/analytics.d.cts +63 -1
- package/dist/analytics.d.ts +63 -1
- package/dist/analytics.js +4 -4
- package/dist/artifact-integrity.json +86 -90
- package/dist/assets-BIMVwjQe.js +231 -0
- package/dist/assets-Dfs2ElxI.cjs +1 -0
- package/dist/{auto-YR7a4BtF.js → auto-BIOmtVhk.js} +14 -14
- package/dist/{auto-uVBjX1j5.cjs → auto-DDHflI9v.cjs} +1 -1
- package/dist/computed-BW5a8QFk.js +612 -0
- package/dist/computed-C2GD3XcE.cjs +1 -0
- package/dist/dataset-DL83majE.js +161 -0
- package/dist/dataset-IrlXbUvh.cjs +1 -0
- package/dist/{designer-BfQSahxq.js → designer-D9XAxqSc.js} +1194 -1179
- package/dist/designer-uCDo5XSK.cjs +2 -0
- package/dist/designer.cjs +1 -1
- package/dist/designer.d.cts +125 -3
- package/dist/designer.d.ts +125 -3
- package/dist/designer.js +1 -1
- package/dist/{drill-CsdjgkRM.cjs → drill-ByN8COs_.cjs} +1 -1
- package/dist/{drill-DIGsZfyB.js → drill-CKW3Xtfa.js} +11 -11
- package/dist/{encoding-BYF9ZTl9.cjs → encoding-BFMFIc4r.cjs} +1 -1
- package/dist/{encoding-BOGq4qYL.js → encoding-DP_Eaf0A.js} +2 -2
- package/dist/{font-loader-EKLzOJxf.cjs → font-loader-7FWVlykp.cjs} +1 -1
- package/dist/{font-loader-CzI1GuBc.js → font-loader-CQZowp0I.js} +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +173 -1
- package/dist/index.d.ts +173 -1
- package/dist/index.js +1205 -808
- package/dist/json-snapshot-D7PE1NsU.cjs +2 -0
- package/dist/{json-snapshot-D6ioHth9.js → json-snapshot-DYmEe3sO.js} +769 -692
- package/dist/matrix-JLAXlux-.js +302 -0
- package/dist/matrix-gTHpDTGm.cjs +1 -0
- package/dist/{pdf-ByVCb1i6.cjs → pdf-B8JouyYv.cjs} +47 -47
- package/dist/{pdf-DJ5S6ukC.js → pdf-l3ea86di.js} +13 -15
- package/dist/pdf.cjs +1 -1
- package/dist/pdf.d.cts +12 -0
- package/dist/pdf.d.ts +12 -0
- package/dist/pdf.js +2 -2
- package/dist/{plugin-C2j5_mhx.js → plugin-BBp74CQZ.js} +1 -1
- package/dist/{plugin-Dr39GBRG.cjs → plugin-CtFX9PFG.cjs} +1 -1
- package/dist/{prepared-DqtpvRTn.js → prepared-CARicKYh.js} +1 -1
- package/dist/{prepared-DdrjLC7L.cjs → prepared-Ch1x_Gog.cjs} +1 -1
- package/dist/{protocol-BzwMP4Vw.cjs → protocol-B5A2uom4.cjs} +1 -1
- package/dist/{protocol-kt4Iy6-3.js → protocol-BaiWjq5w.js} +3 -3
- package/dist/{record-bindings-DUX1VMlR.cjs → record-bindings-B86Sur_y.cjs} +1 -1
- package/dist/{record-bindings-CZWBJ1fU.js → record-bindings-D4TuMzHs.js} +1 -1
- package/dist/{region-binding-workflow-CWNvIjkV.js → region-binding-workflow-BNasF5kz.js} +2 -2
- package/dist/{region-binding-workflow-CqSMxQ4p.cjs → region-binding-workflow-O2Cni3mF.cjs} +1 -1
- package/dist/report-encoding-worker.cjs +1 -1
- package/dist/report-encoding-worker.js +1 -1
- package/dist/runtime-DakRXui3.js +170 -0
- package/dist/runtime-dL5ygIfa.cjs +1 -0
- package/dist/sbom.cdx.json +1 -1
- package/dist/server/node.d.cts +46 -0
- package/dist/server/node.d.ts +46 -0
- package/dist/server-node.cjs +4 -4
- package/dist/server-node.js +2540 -1911
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +174 -1
- package/dist/server.d.ts +174 -1
- package/dist/server.js +787 -544
- package/dist/style.css +1 -1
- package/dist/template-catalog-Dua8h9ZA.cjs +1 -0
- package/dist/{template-catalog-BtR2JmCL.js → template-catalog-wT1fNeAP.js} +4 -4
- package/dist/{template-fragments-BVsbxs4a.cjs → template-fragments-BajTajb4.cjs} +1 -1
- package/dist/{template-fragments-By0aZC1D.js → template-fragments-DmX5XK4N.js} +1 -1
- package/dist/{template-registry-C62vpv4a.cjs → template-registry-CpysHAxy.cjs} +1 -1
- package/dist/{template-registry-Cw3vRTX2.js → template-registry-u11fPd8D.js} +5 -5
- package/dist/{tree-BX380Rr7.cjs → tree-CLpxYbKa.cjs} +1 -1
- package/dist/{tree-CjVZLRw7.js → tree-DNJorJUf.js} +1 -1
- package/dist/vue/async.d.cts +108 -2
- package/dist/vue/async.d.ts +108 -2
- package/dist/vue/index.d.cts +130 -3
- package/dist/vue/index.d.ts +130 -3
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +4 -4
- package/dist/{workbook-session-BeSO8PFB.js → workbook-session-B8pNW24X.js} +1 -1
- package/dist/{workbook-session-Cbts-22R.cjs → workbook-session-DN5LSA5C.cjs} +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.js +4 -4
- package/dist/xlsx.cjs +4 -4
- package/dist/xlsx.d.cts +88 -2
- package/dist/xlsx.d.ts +88 -2
- package/dist/xlsx.js +232 -230
- package/package.json +1 -1
- package/dist/ReportPreview-BcDKCLiK.js +0 -4834
- package/dist/ReportPreview-Bk9nLfO9.cjs +0 -6
- package/dist/RuleEditor-BX5S8RSF.cjs +0 -1
- package/dist/RuleEditor-CGl9XY2s.js +0 -2037
- package/dist/assets-CqIbfbTr.js +0 -126
- package/dist/assets-e4YSke8n.cjs +0 -1
- package/dist/capabilities-DDwXr_cA.js +0 -103
- package/dist/capabilities-DNLyZdNw.cjs +0 -1
- package/dist/computed-C-4C2S5h.js +0 -521
- package/dist/computed-CGV2a809.cjs +0 -1
- package/dist/dataset-BkRmwgeJ.cjs +0 -1
- package/dist/dataset-H5pFuQGU.js +0 -121
- package/dist/designer-CPPdeM5_.cjs +0 -2
- package/dist/diagnostic-notification-B9K9We3h.cjs +0 -1
- package/dist/diagnostic-notification-qGAYZdkB.js +0 -7
- package/dist/json-snapshot-DknkjvxP.cjs +0 -2
- package/dist/matrix-CGRGkn5s.js +0 -112
- package/dist/matrix-gEO7ZM_u.cjs +0 -1
- package/dist/runtime-BjKBI530.js +0 -168
- package/dist/runtime-CBFEPKEs.cjs +0 -1
- package/dist/template-catalog-C2NLdrwB.cjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var J=Object.create;var D=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var W=(e,t,a,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of N(t))!X.call(e,s)&&s!==a&&D(e,s,{get:()=>t[s],enumerable:!(c=V(t,s))||c.enumerable});return e};var E=(e,t,a)=>(a=e!=null?J(U(e)):{},W(t||!e||!e.__esModule?D(a,"default",{value:e,enumerable:!0}):a,e));const n=require("./json-snapshot-D7PE1NsU.cjs"),F=require("./report-params-WDGrA4oP.cjs"),k=require("./param-validation-C3HlcLLO.cjs"),o=require("./sha256-BshdOkCC.cjs"),z=require("./template-registry-CpysHAxy.cjs"),G=require("./tree-CLpxYbKa.cjs"),M=require("./assets-Dfs2ElxI.cjs"),b=require("./prepared-Ch1x_Gog.cjs");function I(e=[]){return e.map(({code:t,message:a,severity:c,pageIndex:s,componentIndex:r})=>({code:t,message:a,severity:c,path:r<0?`$.pages.${s}`:`$.pages.${s}.components.${r}`}))}async function q(e,t,a=Date.now()){const c=e.prepared;if(e.fidelity==="strict"&&c.diagnostics.some(f=>f.code==="asset-render-failed"||f.code==="asset-budget-exceeded"))throw new n.ReportSourceError("validate","严格输出拒绝已有资产渲染降级,请修复组件后重新准备报表。");const s=e.format==="pdf"?await import("@agile-team/mach-report/pdf"):void 0;o.throwIfAborted(e.signal);const r=e.pdf?.customFontFaces??(e.pdf?.customFontBytes?{regular:e.pdf.customFontBytes}:void 0),u=s&&r?s.createFontBytesMeasurer(r):void 0,m=n.createReportTaskReporter(e),p=await m.run("encode",async()=>{let f;if(e.format==="pdf"){o.throwIfAborted(e.signal);const i=await s.renderPlanToPdf(c.plan,{...e.pdf,...u?{measurer:u}:{},fidelity:e.fidelity,signal:e.signal,onProgress:(w,l)=>m.progress("encode",w,l)});f=i.bytes,c.diagnostics.push(...I(i.diagnostics)),c.diagnostics.push(...i.fidelityWarnings.map(w=>({code:"pdf-fidelity",message:w,severity:"warning"})),...i.pageErrors.map(w=>({code:"pdf-page",message:w,severity:"error"}))),i.unsupportedTextCount&&c.diagnostics.push({code:"pdf-font",message:`${i.unsupportedTextCount} 段文本包含当前字体不支持的字符`,severity:"warning"})}else{const{renderPlanToXlsx:i}=await import("@agile-team/mach-report/xlsx");o.throwIfAborted(e.signal);const w=await i(c.plan,{...e.xlsx,fidelity:e.fidelity,signal:e.signal,onProgress:(l,h)=>m.progress("encode",l,h)});f=new Uint8Array(w.buffer),c.diagnostics.push(...I(w.diagnostics)),c.diagnostics.push(...w.warnings.map(l=>({code:"xlsx-fidelity",message:l,severity:"warning"})))}return o.throwIfAborted(e.signal),f});o.assertBudget(t,"maxOutputBytes",p.byteLength);const{plan:d,...y}=c;return{...y,bytes:p,format:e.format,contentType:e.format==="pdf"?"application/pdf":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",stats:{...y.stats,durationMs:Date.now()-a,outputBytes:p.byteLength}}}function A(e){return{...e,reportIds:[...e.reportIds],...e.params?{params:{...e.params}}:{}}}function $(e,t){if(t.length===0)throw new n.ReportSourceError("config","缺少报表 ID");return t.map(a=>{if(!Object.prototype.hasOwnProperty.call(e,a))throw new n.ReportSourceError("config",`未注册报表 ${a}`);return e[a]})}function T(e){return e.grid?.cells.reduce((t,a)=>t+a.reduce((c,s)=>c+(s?1+(s.children?.reduce((r,u)=>r+T(u),0)??0):0),0),0)??0}function Q(e,t,a){return e.pages.reduce((c,s)=>c+s.components.reduce((r,u)=>u.kind!=="list"?r+T(u):r+n.estimateListLayoutCells(u,t,a),0),0)}function H(e,t=Object.keys(e)){return $(e,t).map((a,c)=>{const s=t[c],r=F.getReportParamDefs(e,[s]);return{id:s,params:JSON.parse(JSON.stringify(r)),paramsSchema:k.reportParamsJsonSchema(r),datasetsSchema:Object.fromEntries(Object.entries(a.dataSchema??{}).map(([u,m])=>[u,n.templateDatasetJsonSchema(typeof a.template=="function"?void 0:a.template,u,m)])),capabilities:{save:!!a.provider?.save,export:!!a.provider?.export,templates:!!a.provider?.templates}}})}function j(e,t){$(e,t.reportIds);const a=k.validateReportParams(F.getReportParamDefs(e,t.reportIds),t.params),c=t.reportIds.flatMap(r=>k.validateReportParams(F.getReportParamDefs(e,[r]),t.params).issues),s=new Map(c.map(r=>[JSON.stringify(r),r]));return{...a,ok:s.size===0,issues:[...s.values()]}}function O(e,t){const a=z.validateRenderPlan(e.plan);if(!a.ok)throw new n.ReportSourceError("validate",`执行器返回无效计划:${a.errors[0]?.path}`);const c=e.plan.pages.length,s=e.plan.pages.reduce((r,u)=>r+u.components.reduce((m,p)=>m+T(p),0),0);return o.assertBudget(t,"maxRows",e.stats.rows),o.assertBudget(t,"maxPages",c),o.assertBudget(t,"maxCells",s),{...e,stats:{...e.stats,pages:c,cells:s}}}function L(e,t){const a=j(e.reports,t);if(!a.ok)throw new k.ReportParamValidationError(a.issues)}function K(e){const t={...o.DEFAULT_REPORT_RUNTIME_BUDGET,...e.budget};o.validateBudget(t);const a=async(s,r)=>{const u=Date.now();let m=0,p=0;const d=[],y={},f=[],i=Object.fromEntries(Object.entries(e.reports).map(([g,x])=>[g,{...x,pagination:{...e.pagination,...x.pagination,...r?{measurer:r}:{}},dataValidation:{...x.dataValidation,maxRows:Math.min(t.maxRows??1e5,x.dataValidation?.maxRows??1/0),maxCells:Math.min(t.maxCells??2e6,x.dataValidation?.maxCells??1/0)}}])),l=await n.createReportSource(i,{maxPages:t.maxPages,maxCells:t.maxCells,onDatasets:(g,x,v)=>{try{m+=n.templateDatasetRowCount(v,x,{maxRows:t.maxRows,signal:s.signal})}catch(R){throw R instanceof G.TreeRowLimitError?new o.ReportRuntimeError("budget",R.message,"$.budget.maxRows"):R}o.assertBudget(t,"maxRows",m),p+=Q(v,x,i[g]?.pagination),o.assertBudget(t,"maxCells",p)}})({...s,params:s.params??{},onWarning:g=>d.push({code:"layout",message:g,severity:"warning"}),onQueryResult:(g,x,v=0)=>{const R=n.reportOccurrenceScope(v,g);Object.defineProperty(y,g,{value:{revision:x.revision,sourceToken:x.sourceToken},enumerable:!0,writable:!0}),f.push({reportId:g,reportIndex:v,reportScope:R,...x.revision===void 0?{}:{revision:x.revision},...x.sourceToken===void 0?{}:{sourceToken:x.sourceToken}}),d.push(...(x.diagnostics??[]).map(P=>({...P,...P.target?{target:{...P.target,reportScope:R,...P.target.tableId?{tableId:JSON.stringify([v,g,P.target.tableId])}:{}}}:{}})))}}).catch(g=>{throw g instanceof n.ReportSourceError&&g.cause instanceof n.PaginatePageLimitError?new o.ReportRuntimeError("budget",g.cause.message,"$.budget.maxPages"):g instanceof n.ReportSourceError&&g.cause instanceof n.PaginateCellLimitError?new o.ReportRuntimeError("budget",g.cause.message,"$.budget.maxCells"):g});o.throwIfAborted(s.signal);const h=e.assets?await n.createReportTaskReporter(s).run("assets",()=>M.resolvePlanAssets(l,{...e.assets,signal:s.signal})):{plan:l,diagnostics:[]},B=h.plan;d.push(...I(h.diagnostics));const C=B.pages.reduce((g,x)=>g+x.components.reduce((v,R)=>v+T(R),0),0);o.assertBudget(t,"maxPages",B.pages.length),o.assertBudget(t,"maxCells",C);const S=b.reportFontFingerprint(s.pdf),_=e.pagination?.measurer||Object.values(e.reports).some(g=>g.pagination?.measurer);return{plan:B,diagnostics:d,revisions:y,sources:f,layout:{textMetrics:S?"font-bytes":_?"provided":"heuristic",...S?{fontFingerprint:S}:{}},stats:{rows:m,pages:B.pages.length,cells:C,durationMs:Date.now()-u}}},c=async s=>{const r=Date.now();if(s.format!=="pdf"&&s.format!=="xlsx")throw new n.ReportSourceError("config","不支持的报表导出格式");const u=s.format==="pdf"?await import("@agile-team/mach-report/pdf"):void 0;o.throwIfAborted(s.signal);const m=s.pdf?.customFontFaces??(s.pdf?.customFontBytes?{regular:s.pdf.customFontBytes}:void 0),p=u&&m?u.createFontBytesMeasurer(m):void 0,d=await a(s,p);return o.throwIfAborted(s.signal),q({...s,prepared:d},t,r)};return{describe:s=>H(e.reports,s),validate:s=>j(e.reports,s),prepare:s=>o.controlled(s.signal,t.maxDurationMs,async r=>{const{signal:u,onEvent:m,...p}=A(s),d={...p,...p.pdf?{pdf:b.snapshotPdfFonts(p.pdf)}:{},taskId:p.taskId??n.reportTaskId()},y=m?h=>n.notifyReportTaskEvent(m,h,r):void 0,f={...d,signal:r,onEvent:y};n.createReportTaskReporter(f).runSync("validate",()=>L(e,d));let i;const w=d.pdf?.customFontFaces??(d.pdf?.customFontBytes?{regular:d.pdf.customFontBytes}:void 0);if(!e.executor&&w){const h=await import("@agile-team/mach-report/pdf");o.throwIfAborted(r),i=h.createFontBytesMeasurer(w)}const l=e.executor?await e.executor.prepare(d,r,y):await a(f,i);return O(l,t)}),exportPrepared:s=>o.controlled(s.signal,t.maxDurationMs,async r=>{const u=Date.now(),{signal:m,onEvent:p,...d}=s,y=O(b.snapshotPreparedReport(s.prepared,t.maxPreparedBytes??64e6,r),t),f={...d,xlsx:b.snapshotXlsxOptions(d.xlsx),prepared:y,...d.pdf?{pdf:b.snapshotPdfFonts(d.pdf)}:{},taskId:d.taskId??n.reportTaskId()};if(f.format!=="pdf"&&f.format!=="xlsx")throw new n.ReportSourceError("config","不支持的报表导出格式");const i=p?l=>n.notifyReportTaskEvent(p,l,r):void 0;if(e.executor){if(!e.executor.exportPrepared)throw new n.ReportSourceError("config","执行器未实现 exportPrepared;请升级执行器或显式使用本地运行时");const l=await e.executor.exportPrepared(f,r,i);return o.assertBudget(t,"maxRows",l.stats.rows),o.assertBudget(t,"maxPages",l.stats.pages),o.assertBudget(t,"maxCells",l.stats.cells),o.assertBudget(t,"maxOutputBytes",l.bytes.byteLength),{...l,stats:{...l.stats,outputBytes:l.bytes.byteLength}}}const w={...f,signal:r,onEvent:i};if(n.createReportTaskReporter(w).runSync("validate",()=>b.checkPreparedFont(w)),e.assets){const l=await n.createReportTaskReporter(w).run("assets",()=>M.resolvePlanAssets(y.plan,{...e.assets,signal:r}));y.plan=l.plan,y.diagnostics.push(...I(l.diagnostics))}return q(w,t,u)}),export:s=>o.controlled(s.signal,t.maxDurationMs,async r=>{const{signal:u,onEvent:m,...p}=A(s),d={...p,xlsx:b.snapshotXlsxOptions(p.xlsx),...p.pdf?{pdf:b.snapshotPdfFonts(p.pdf)}:{},taskId:p.taskId??n.reportTaskId()},y=m?w=>n.notifyReportTaskEvent(m,w,r):void 0,f={...d,signal:r,onEvent:y};if(n.createReportTaskReporter(f).runSync("validate",()=>L(e,d)),d.format!=="pdf"&&d.format!=="xlsx")throw new n.ReportSourceError("config","不支持的报表导出格式");const i=e.executor?await e.executor.export(d,r,y):await c(f);return o.assertBudget(t,"maxRows",i.stats.rows),o.assertBudget(t,"maxPages",i.stats.pages),o.assertBudget(t,"maxCells",i.stats.cells),o.assertBudget(t,"maxOutputBytes",i.bytes.byteLength),{...i,stats:{...i.stats,outputBytes:i.bytes.byteLength}}})}}exports.createReportRuntime=K;exports.enforcePrepared=O;
|
package/dist/sbom.cdx.json
CHANGED
package/dist/server/node.d.cts
CHANGED
|
@@ -87,6 +87,14 @@ export declare function createNodeAutoReportExporter(options?: Omit<ReportExport
|
|
|
87
87
|
/** 独立 worker_threads 适配器;worker 入口注册自己的模板/Provider,不把函数跨线程序列化。 */
|
|
88
88
|
export declare function createNodeReportExecutor(options: NodeReportExecutorOptions): ReportRuntimeExecutor;
|
|
89
89
|
|
|
90
|
+
export declare interface FileReportDocumentStore extends ReportDocumentStore {
|
|
91
|
+
close(): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export declare interface FileReportDocumentStoreOptions extends ReportDocumentBudget {
|
|
95
|
+
directory: string;
|
|
96
|
+
}
|
|
97
|
+
|
|
90
98
|
export declare interface FileReportJobStore extends ReportJobStore {
|
|
91
99
|
close(): Promise<void>;
|
|
92
100
|
}
|
|
@@ -141,6 +149,9 @@ export declare interface NodeReportExecutorOptions extends ReportWorkerOptions {
|
|
|
141
149
|
workerOptions?: WorkerOptions_2;
|
|
142
150
|
}
|
|
143
151
|
|
|
152
|
+
/** Exclusive-process disk reference. Pages stay on disk; manifest/page reads and appends are bounded. */
|
|
153
|
+
export declare function openFileReportDocumentStore(options: FileReportDocumentStoreOptions): Promise<FileReportDocumentStore>;
|
|
154
|
+
|
|
144
155
|
/** Durable local store with one process owner; database adapters provide multi-instance atomic CAS. */
|
|
145
156
|
export declare function openFileReportJobStore(options: FileReportJobStoreOptions): Promise<FileReportJobStore>;
|
|
146
157
|
|
|
@@ -294,6 +305,41 @@ declare interface ReportDiagnostic {
|
|
|
294
305
|
target?: ReportDataTarget;
|
|
295
306
|
}
|
|
296
307
|
|
|
308
|
+
declare interface ReportDocumentBudget {
|
|
309
|
+
maxDocuments?: number;
|
|
310
|
+
maxBytes?: number;
|
|
311
|
+
maxPages?: number;
|
|
312
|
+
maxPageBytes?: number;
|
|
313
|
+
maxManifestBytes?: number;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
declare interface ReportDocumentManifest {
|
|
317
|
+
scope: string;
|
|
318
|
+
id: string;
|
|
319
|
+
version: string;
|
|
320
|
+
/** CAS token increases after each append and completion. */
|
|
321
|
+
revision: number;
|
|
322
|
+
state: "building" | "complete" | "failed";
|
|
323
|
+
failure?: {
|
|
324
|
+
code: "cancelled" | "generation";
|
|
325
|
+
message: string;
|
|
326
|
+
};
|
|
327
|
+
pageCount: number;
|
|
328
|
+
bytes: number;
|
|
329
|
+
plan: Omit<RenderPlan, "pages">;
|
|
330
|
+
metadata?: Omit<PreparedReport, "plan">;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
declare interface ReportDocumentStore {
|
|
334
|
+
create(input: Pick<ReportDocumentManifest, "scope" | "id" | "version" | "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
335
|
+
append(scope: string, id: string, version: string, expectedRevision: number, page: PlanPage, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
336
|
+
complete(scope: string, id: string, version: string, expectedRevision: number, metadata?: Omit<PreparedReport, "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
337
|
+
fail(scope: string, id: string, version: string, expectedRevision: number, failure: NonNullable<ReportDocumentManifest["failure"]>): Promise<ReportDocumentManifest>;
|
|
338
|
+
read(scope: string, id: string, signal?: AbortSignal): Promise<ReportDocumentManifest | undefined>;
|
|
339
|
+
readPage(scope: string, id: string, version: string, index: number, signal?: AbortSignal): Promise<PlanPage | undefined>;
|
|
340
|
+
remove(scope: string, id: string, version: string, signal?: AbortSignal): Promise<boolean>;
|
|
341
|
+
}
|
|
342
|
+
|
|
297
343
|
export declare interface ReportExportDecision {
|
|
298
344
|
mode: "local" | "worker";
|
|
299
345
|
reason: ReportExportDecisionReason;
|
package/dist/server/node.d.ts
CHANGED
|
@@ -87,6 +87,14 @@ export declare function createNodeAutoReportExporter(options?: Omit<ReportExport
|
|
|
87
87
|
/** 独立 worker_threads 适配器;worker 入口注册自己的模板/Provider,不把函数跨线程序列化。 */
|
|
88
88
|
export declare function createNodeReportExecutor(options: NodeReportExecutorOptions): ReportRuntimeExecutor;
|
|
89
89
|
|
|
90
|
+
export declare interface FileReportDocumentStore extends ReportDocumentStore {
|
|
91
|
+
close(): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export declare interface FileReportDocumentStoreOptions extends ReportDocumentBudget {
|
|
95
|
+
directory: string;
|
|
96
|
+
}
|
|
97
|
+
|
|
90
98
|
export declare interface FileReportJobStore extends ReportJobStore {
|
|
91
99
|
close(): Promise<void>;
|
|
92
100
|
}
|
|
@@ -141,6 +149,9 @@ export declare interface NodeReportExecutorOptions extends ReportWorkerOptions {
|
|
|
141
149
|
workerOptions?: WorkerOptions_2;
|
|
142
150
|
}
|
|
143
151
|
|
|
152
|
+
/** Exclusive-process disk reference. Pages stay on disk; manifest/page reads and appends are bounded. */
|
|
153
|
+
export declare function openFileReportDocumentStore(options: FileReportDocumentStoreOptions): Promise<FileReportDocumentStore>;
|
|
154
|
+
|
|
144
155
|
/** Durable local store with one process owner; database adapters provide multi-instance atomic CAS. */
|
|
145
156
|
export declare function openFileReportJobStore(options: FileReportJobStoreOptions): Promise<FileReportJobStore>;
|
|
146
157
|
|
|
@@ -294,6 +305,41 @@ declare interface ReportDiagnostic {
|
|
|
294
305
|
target?: ReportDataTarget;
|
|
295
306
|
}
|
|
296
307
|
|
|
308
|
+
declare interface ReportDocumentBudget {
|
|
309
|
+
maxDocuments?: number;
|
|
310
|
+
maxBytes?: number;
|
|
311
|
+
maxPages?: number;
|
|
312
|
+
maxPageBytes?: number;
|
|
313
|
+
maxManifestBytes?: number;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
declare interface ReportDocumentManifest {
|
|
317
|
+
scope: string;
|
|
318
|
+
id: string;
|
|
319
|
+
version: string;
|
|
320
|
+
/** CAS token increases after each append and completion. */
|
|
321
|
+
revision: number;
|
|
322
|
+
state: "building" | "complete" | "failed";
|
|
323
|
+
failure?: {
|
|
324
|
+
code: "cancelled" | "generation";
|
|
325
|
+
message: string;
|
|
326
|
+
};
|
|
327
|
+
pageCount: number;
|
|
328
|
+
bytes: number;
|
|
329
|
+
plan: Omit<RenderPlan, "pages">;
|
|
330
|
+
metadata?: Omit<PreparedReport, "plan">;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
declare interface ReportDocumentStore {
|
|
334
|
+
create(input: Pick<ReportDocumentManifest, "scope" | "id" | "version" | "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
335
|
+
append(scope: string, id: string, version: string, expectedRevision: number, page: PlanPage, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
336
|
+
complete(scope: string, id: string, version: string, expectedRevision: number, metadata?: Omit<PreparedReport, "plan">, signal?: AbortSignal): Promise<ReportDocumentManifest>;
|
|
337
|
+
fail(scope: string, id: string, version: string, expectedRevision: number, failure: NonNullable<ReportDocumentManifest["failure"]>): Promise<ReportDocumentManifest>;
|
|
338
|
+
read(scope: string, id: string, signal?: AbortSignal): Promise<ReportDocumentManifest | undefined>;
|
|
339
|
+
readPage(scope: string, id: string, version: string, index: number, signal?: AbortSignal): Promise<PlanPage | undefined>;
|
|
340
|
+
remove(scope: string, id: string, version: string, signal?: AbortSignal): Promise<boolean>;
|
|
341
|
+
}
|
|
342
|
+
|
|
297
343
|
export declare interface ReportExportDecision {
|
|
298
344
|
mode: "local" | "worker";
|
|
299
345
|
reason: ReportExportDecisionReason;
|