@agile-team/mach-report 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ReportPreview-DWLjYi_p.js +527 -0
- package/dist/ReportPreview-rBtmbu3W.cjs +6 -0
- package/dist/_commonjsHelpers-DKOUU3wS.cjs +1 -0
- package/dist/_commonjsHelpers-DaMA6jEr.js +8 -0
- package/dist/builder/template-builder.d.ts +3 -3
- package/dist/compat/jh4j-template.d.ts +1 -1
- package/dist/index.cjs +6 -0
- package/dist/index.d.cts +13 -0
- package/dist/index.d.ts +13 -13
- package/dist/index.js +919 -14
- package/dist/layout/paginate.d.ts +2 -2
- package/dist/manager/api.d.ts +1 -1
- package/dist/manager/index.d.ts +2 -2
- package/dist/manager.cjs +1 -0
- package/dist/manager.d.cts +5 -0
- package/dist/manager.d.ts +1 -1
- package/dist/manager.js +104 -6
- package/dist/pdf/index.d.ts +2 -2
- package/dist/pdf/render-pdf.d.ts +10 -4
- package/dist/pdf.cjs +84 -0
- package/dist/pdf.d.cts +6 -0
- package/dist/pdf.d.ts +1 -1
- package/dist/pdf.js +36152 -7
- package/dist/plugin-BIJxGHZX.cjs +1 -0
- package/dist/plugin-DrV67_VW.js +89 -0
- package/dist/render/canvas.d.ts +2 -2
- package/dist/render/dom.d.ts +1 -1
- package/dist/render/grid-geometry.d.ts +1 -1
- package/dist/render/style.d.ts +1 -8
- package/dist/schema/validate.d.ts +1 -1
- package/dist/sql/compile.d.ts +1 -1
- package/dist/sql/index.d.ts +4 -4
- package/dist/sql.cjs +68 -0
- package/dist/sql.d.cts +5 -0
- package/dist/sql.d.ts +1 -1
- package/dist/sql.js +40794 -6
- package/dist/style-B3vxGDZd.cjs +3 -0
- package/dist/style-B7Xfo5I-.js +255 -0
- package/dist/style.css +1 -0
- package/dist/vue/ReportPreview.d.ts +141 -0
- package/dist/vue/ReportToolbar.d.ts +25 -0
- package/dist/vue/adapters.d.ts +37 -0
- package/dist/vue/async.d.cts +146 -0
- package/dist/vue/async.d.ts +146 -0
- package/dist/vue/composables/usePageWindow.d.ts +28 -0
- package/dist/vue/composables/usePrintExport.d.ts +19 -0
- package/dist/vue/composables/useZoom.d.ts +15 -0
- package/dist/vue/config.d.ts +79 -0
- package/dist/vue/index.d.cts +11 -0
- package/dist/vue/index.d.ts +11 -0
- package/dist/vue/injection-keys.d.ts +12 -0
- package/dist/vue/local-adapter.d.ts +12 -0
- package/dist/vue/pdf-exporter.d.ts +13 -0
- package/dist/vue/plugin.d.ts +34 -0
- package/dist/vue-async.cjs +1 -0
- package/dist/vue-async.js +17 -0
- package/dist/vue.cjs +1 -0
- package/dist/vue.js +44 -0
- package/package.json +84 -17
- package/dist/builder/template-builder.js +0 -153
- package/dist/builder/template-builder.js.map +0 -1
- package/dist/compat/jh4j-template.js +0 -196
- package/dist/compat/jh4j-template.js.map +0 -1
- package/dist/defaults.js +0 -28
- package/dist/defaults.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/layout/paginate.js +0 -197
- package/dist/layout/paginate.js.map +0 -1
- package/dist/layout/textwrap.js +0 -173
- package/dist/layout/textwrap.js.map +0 -1
- package/dist/manager/api.js +0 -101
- package/dist/manager/api.js.map +0 -1
- package/dist/manager/index.js +0 -3
- package/dist/manager/index.js.map +0 -1
- package/dist/manager/types.js +0 -8
- package/dist/manager/types.js.map +0 -1
- package/dist/manager.js.map +0 -1
- package/dist/pdf/font-loader.js +0 -84
- package/dist/pdf/font-loader.js.map +0 -1
- package/dist/pdf/index.js +0 -3
- package/dist/pdf/index.js.map +0 -1
- package/dist/pdf/render-pdf.js +0 -284
- package/dist/pdf/render-pdf.js.map +0 -1
- package/dist/pdf.js.map +0 -1
- package/dist/render/canvas.js +0 -402
- package/dist/render/canvas.js.map +0 -1
- package/dist/render/dom.js +0 -311
- package/dist/render/dom.js.map +0 -1
- package/dist/render/grid-geometry.js +0 -131
- package/dist/render/grid-geometry.js.map +0 -1
- package/dist/render/style.js +0 -39
- package/dist/render/style.js.map +0 -1
- package/dist/render/window.js +0 -58
- package/dist/render/window.js.map +0 -1
- package/dist/schema/render-plan.js +0 -25
- package/dist/schema/render-plan.js.map +0 -1
- package/dist/schema/validate.js +0 -129
- package/dist/schema/validate.js.map +0 -1
- package/dist/sql/ast-check.js +0 -44
- package/dist/sql/ast-check.js.map +0 -1
- package/dist/sql/compile.js +0 -145
- package/dist/sql/compile.js.map +0 -1
- package/dist/sql/expr.js +0 -123
- package/dist/sql/expr.js.map +0 -1
- package/dist/sql/index.js +0 -5
- package/dist/sql/index.js.map +0 -1
- package/dist/sql/tokenizer.js +0 -124
- package/dist/sql/tokenizer.js.map +0 -1
- package/dist/sql.js.map +0 -1
- package/dist/units.js +0 -26
- package/dist/units.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { measureTextMm, wrapText,
|
|
1
|
+
import { ComponentStyle, PlanComponent, RenderPlan } from '../schema/render-plan';
|
|
2
|
+
import { measureTextMm, wrapText, TextMeasurer } from './textwrap';
|
|
3
3
|
export interface ListColumn {
|
|
4
4
|
header: string;
|
|
5
5
|
field: string;
|
package/dist/manager/api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { DatasetRecord, ImportStrategy, PageResult, ParamRecord, ReportRecord, RequestFn } from './types';
|
|
2
2
|
export declare function createReportAdminClient(options: {
|
|
3
3
|
request: RequestFn;
|
|
4
4
|
baseUrl?: string;
|
package/dist/manager/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './api';
|
package/dist/manager.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class h extends Error{constructor(a,r){super(a),this.url=r,this.name="ReportAdminError"}}const o="/report/codePrintReport",d="/report/codePrintReportLock";function n(s,a){const r=s;if(r&&r.code!=null&&r.code!==200)throw new h(String(r.message||"请求失败"),a);return r?.data??r}function $(s){const{request:a}=s,r=s.baseUrl??"";return{async listReports(e={}){const t=`${r}${o}/list`;return n(await a({url:t,method:"get",params:{current:1,size:20,...e}}),t)},async getReport(e){const t=`${r}${o}/getById`;return n(await a({url:t,method:"get",params:{id:e}}),t)},async updateReport(e){const t=`${r}${o}/update`;return n(await a({url:t,method:"put",data:e}),t)},async exportDefinition(e){const t=`${r}${o}/exportDefinition`;return a({url:t,method:"post",data:e})},async importDefinition(e,t){const c=`${r}${o}/importDefinition`,i=new FormData;return i.append("file",e),i.append("strategy",t),a({url:c,method:"post",data:i})},async listDatasets(e){const t=`${r}${o}Ds/list`;return n(await a({url:t,method:"get",params:{reportId:e,current:1,size:999}}),t)},async listParams(e){const t=`${r}${o}Param/list`;return n(await a({url:t,method:"get",params:{reportId:e,current:1,size:999}}),t)},async acquireLock(e){const t=`${r}${d}/acquire`;return n(await a({url:t,method:"post",data:{reportId:e}}),t)},async lockHeartbeat(e){const t=`${r}${d}/heartbeat`;return n(await a({url:t,method:"post",data:{reportId:e}}),t)},async releaseLock(e){const t=`${r}${d}/release`;return n(await a({url:t,method:"post",data:{reportId:e}}),t)},async holdLock(e,t,c={}){await this.acquireLock(e);const i=Math.max(1,c.heartbeatFailLimit??2);let l=0,m=!1;const p=setInterval(()=>{this.lockHeartbeat(e).then(()=>{l=0}).catch(u=>{l++,!m&&l>=i&&(m=!0,c.onLockLost?.(`模板锁心跳连续 ${l} 次失败(${u instanceof Error?u.message:String(u)}),锁可能已被释放`),clearInterval(p))})},4e4);try{return await t()}finally{clearInterval(p),await this.releaseLock(e).catch(()=>{})}}}}exports.ReportAdminError=h;exports.createReportAdminClient=$;
|
package/dist/manager.d.ts
CHANGED
package/dist/manager.js
CHANGED
|
@@ -1,6 +1,104 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
class h extends Error {
|
|
2
|
+
constructor(a, r) {
|
|
3
|
+
super(a), this.url = r, this.name = "ReportAdminError";
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
const o = "/report/codePrintReport", d = "/report/codePrintReportLock";
|
|
7
|
+
function n(s, a) {
|
|
8
|
+
const r = s;
|
|
9
|
+
if (r && r.code != null && r.code !== 200)
|
|
10
|
+
throw new h(String(r.message || "请求失败"), a);
|
|
11
|
+
return r?.data ?? r;
|
|
12
|
+
}
|
|
13
|
+
function $(s) {
|
|
14
|
+
const { request: a } = s, r = s.baseUrl ?? "";
|
|
15
|
+
return {
|
|
16
|
+
/** 模板列表(分页) */
|
|
17
|
+
async listReports(e = {}) {
|
|
18
|
+
const t = `${r}${o}/list`;
|
|
19
|
+
return n(
|
|
20
|
+
await a({ url: t, method: "get", params: { current: 1, size: 20, ...e } }),
|
|
21
|
+
t
|
|
22
|
+
);
|
|
23
|
+
},
|
|
24
|
+
/** 模板详情(content 为 jh4j 私有模板 JSON 字符串,可喂给 importJh4jTemplateContent) */
|
|
25
|
+
async getReport(e) {
|
|
26
|
+
const t = `${r}${o}/getById`;
|
|
27
|
+
return n(await a({ url: t, method: "get", params: { id: e } }), t);
|
|
28
|
+
},
|
|
29
|
+
/** 保存模板(jh4j:PUT,body {id, code, name, content}) */
|
|
30
|
+
async updateReport(e) {
|
|
31
|
+
const t = `${r}${o}/update`;
|
|
32
|
+
return n(await a({ url: t, method: "put", data: e }), t);
|
|
33
|
+
},
|
|
34
|
+
/** 导出模板定义包(body = ID 数组,返回 ZIP blob) */
|
|
35
|
+
async exportDefinition(e) {
|
|
36
|
+
const t = `${r}${o}/exportDefinition`;
|
|
37
|
+
return a({ url: t, method: "post", data: e });
|
|
38
|
+
},
|
|
39
|
+
/** 导入模板定义包(multipart: file + strategy) */
|
|
40
|
+
async importDefinition(e, t) {
|
|
41
|
+
const c = `${r}${o}/importDefinition`, i = new FormData();
|
|
42
|
+
return i.append("file", e), i.append("strategy", t), a({ url: c, method: "post", data: i });
|
|
43
|
+
},
|
|
44
|
+
/** 数据集列表 */
|
|
45
|
+
async listDatasets(e) {
|
|
46
|
+
const t = `${r}${o}Ds/list`;
|
|
47
|
+
return n(
|
|
48
|
+
await a({ url: t, method: "get", params: { reportId: e, current: 1, size: 999 } }),
|
|
49
|
+
t
|
|
50
|
+
);
|
|
51
|
+
},
|
|
52
|
+
/** 参数列表 */
|
|
53
|
+
async listParams(e) {
|
|
54
|
+
const t = `${r}${o}Param/list`;
|
|
55
|
+
return n(
|
|
56
|
+
await a({ url: t, method: "get", params: { reportId: e, current: 1, size: 999 } }),
|
|
57
|
+
t
|
|
58
|
+
);
|
|
59
|
+
},
|
|
60
|
+
/** 模板锁:进入设计器前获取(40s 心跳由 holdLock 驱动) */
|
|
61
|
+
async acquireLock(e) {
|
|
62
|
+
const t = `${r}${d}/acquire`;
|
|
63
|
+
return n(await a({ url: t, method: "post", data: { reportId: e } }), t);
|
|
64
|
+
},
|
|
65
|
+
async lockHeartbeat(e) {
|
|
66
|
+
const t = `${r}${d}/heartbeat`;
|
|
67
|
+
return n(await a({ url: t, method: "post", data: { reportId: e } }), t);
|
|
68
|
+
},
|
|
69
|
+
async releaseLock(e) {
|
|
70
|
+
const t = `${r}${d}/release`;
|
|
71
|
+
return n(await a({ url: t, method: "post", data: { reportId: e } }), t);
|
|
72
|
+
},
|
|
73
|
+
/**
|
|
74
|
+
* 持锁执行:acquire → fn(期间自动心跳)→ release(finally)。
|
|
75
|
+
* 返回 fn 的结果;获取锁失败时抛 ReportAdminError。
|
|
76
|
+
* 心跳连续失败(默认 2 次)视为锁丢失:触发 onLockLost 回调并停止心跳,
|
|
77
|
+
* fn 继续执行(避免中途丢弃用户编辑),由调用方决定是否提示/中止。
|
|
78
|
+
*/
|
|
79
|
+
async holdLock(e, t, c = {}) {
|
|
80
|
+
await this.acquireLock(e);
|
|
81
|
+
const i = Math.max(1, c.heartbeatFailLimit ?? 2);
|
|
82
|
+
let l = 0, m = !1;
|
|
83
|
+
const p = setInterval(() => {
|
|
84
|
+
this.lockHeartbeat(e).then(() => {
|
|
85
|
+
l = 0;
|
|
86
|
+
}).catch((u) => {
|
|
87
|
+
l++, !m && l >= i && (m = !0, c.onLockLost?.(
|
|
88
|
+
`模板锁心跳连续 ${l} 次失败(${u instanceof Error ? u.message : String(u)}),锁可能已被释放`
|
|
89
|
+
), clearInterval(p));
|
|
90
|
+
});
|
|
91
|
+
}, 4e4);
|
|
92
|
+
try {
|
|
93
|
+
return await t();
|
|
94
|
+
} finally {
|
|
95
|
+
clearInterval(p), await this.releaseLock(e).catch(() => {
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export {
|
|
102
|
+
h as ReportAdminError,
|
|
103
|
+
$ as createReportAdminClient
|
|
104
|
+
};
|
package/dist/pdf/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from './render-pdf';
|
|
2
|
+
export * from './font-loader';
|
package/dist/pdf/render-pdf.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { type TextMeasurer } from "../index";
|
|
1
|
+
import { RenderPlan } from '../schema/render-plan';
|
|
2
|
+
import { TextMeasurer } from '../index';
|
|
4
3
|
export interface PdfRenderOptions {
|
|
5
4
|
/** 嵌入字体字节(TTF,如黑体);缺省用 Helvetica(不支持 CJK) */
|
|
6
5
|
customFontBytes?: Uint8Array | ArrayBuffer;
|
|
@@ -8,8 +7,15 @@ export interface PdfRenderOptions {
|
|
|
8
7
|
/** 文本测量器(默认启发式;与分页/Canvas 注入同一实例可消除折行差异) */
|
|
9
8
|
measurer?: TextMeasurer;
|
|
10
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* PDF 文档句柄(不透明最小面):结构化仅暴露 save(),
|
|
12
|
+
* 避免在公共类型面泄漏 pdf-lib 类型(引擎保持零运行时依赖声明)。
|
|
13
|
+
*/
|
|
14
|
+
export type PdfDocumentHandle = {
|
|
15
|
+
save(): Promise<Uint8Array>;
|
|
16
|
+
};
|
|
11
17
|
export interface PdfRenderResult {
|
|
12
|
-
pdfDoc:
|
|
18
|
+
pdfDoc: PdfDocumentHandle;
|
|
13
19
|
bytes: Uint8Array;
|
|
14
20
|
pageErrors: string[];
|
|
15
21
|
unsupportedTextCount: number;
|