@agile-team/mach-report 2.0.0 → 2.1.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 (77) hide show
  1. package/LICENSE +2 -4
  2. package/LICENSING.md +15 -0
  3. package/README.md +232 -76
  4. package/dist/ReportPreview-Dwdsyk9b.js +1558 -0
  5. package/dist/ReportPreview-VHAIfsz1.cjs +6 -0
  6. package/dist/index.cjs +5 -5
  7. package/dist/index.d.cts +738 -13
  8. package/dist/index.d.ts +738 -13
  9. package/dist/index.js +821 -631
  10. package/dist/pdf.cjs +47 -47
  11. package/dist/pdf.d.cts +155 -6
  12. package/dist/pdf.d.ts +155 -6
  13. package/dist/pdf.js +3542 -3466
  14. package/dist/plugin-Bl00j_CP.cjs +1 -0
  15. package/dist/plugin-DVScnZ4C.js +25 -0
  16. package/dist/report-params-BB85g7mg.js +10 -0
  17. package/dist/report-params-D1NeY-eR.cjs +1 -0
  18. package/dist/sql.cjs +65 -64
  19. package/dist/sql.d.cts +109 -5
  20. package/dist/sql.d.ts +109 -5
  21. package/dist/sql.js +7947 -7922
  22. package/dist/style.css +1 -1
  23. package/dist/vue/async.d.cts +769 -320
  24. package/dist/vue/async.d.ts +769 -320
  25. package/dist/vue/index.d.cts +1321 -14
  26. package/dist/vue/index.d.ts +1321 -14
  27. package/dist/vue-async.cjs +1 -1
  28. package/dist/vue-async.js +11 -12
  29. package/dist/vue.cjs +1 -1
  30. package/dist/vue.js +129 -49
  31. package/dist/xlsx.cjs +20 -20
  32. package/dist/xlsx.d.cts +2292 -5
  33. package/dist/xlsx.d.ts +2292 -5
  34. package/dist/xlsx.js +5452 -5443
  35. package/package.json +6 -2
  36. package/dist/ReportPreview-Cr0IH1Rz.cjs +0 -6
  37. package/dist/ReportPreview-DwknBgsJ.js +0 -1266
  38. package/dist/builder/template-builder.d.ts +0 -69
  39. package/dist/defaults.d.ts +0 -23
  40. package/dist/format.d.ts +0 -48
  41. package/dist/layout/paginate.d.ts +0 -97
  42. package/dist/layout/textwrap.d.ts +0 -36
  43. package/dist/pdf/font-loader.d.ts +0 -6
  44. package/dist/pdf/index.d.ts +0 -2
  45. package/dist/pdf/render-pdf.d.ts +0 -25
  46. package/dist/plugin-Cj3c2wJc.cjs +0 -1
  47. package/dist/plugin-DJf_6_fl.js +0 -18
  48. package/dist/render/canvas.d.ts +0 -76
  49. package/dist/render/dom.d.ts +0 -10
  50. package/dist/render/grid-geometry.d.ts +0 -41
  51. package/dist/render/style.d.ts +0 -33
  52. package/dist/render/window.d.ts +0 -23
  53. package/dist/schema/render-plan.d.ts +0 -88
  54. package/dist/schema/validate.d.ts +0 -15
  55. package/dist/sql/ast-check.d.ts +0 -14
  56. package/dist/sql/compile.d.ts +0 -31
  57. package/dist/sql/expr.d.ts +0 -21
  58. package/dist/sql/index.d.ts +0 -4
  59. package/dist/sql/tokenizer.d.ts +0 -25
  60. package/dist/units.d.ts +0 -11
  61. package/dist/vue/ReportParamPanel.d.ts +0 -19
  62. package/dist/vue/ReportPreview.d.ts +0 -200
  63. package/dist/vue/ReportToolbar.d.ts +0 -42
  64. package/dist/vue/adapters.d.ts +0 -34
  65. package/dist/vue/composables/useHighlight.d.ts +0 -8
  66. package/dist/vue/composables/usePageWindow.d.ts +0 -25
  67. package/dist/vue/composables/usePrintExport.d.ts +0 -40
  68. package/dist/vue/composables/useReportSearch.d.ts +0 -73
  69. package/dist/vue/composables/useZoom.d.ts +0 -15
  70. package/dist/vue/config.d.ts +0 -108
  71. package/dist/vue/controller.d.ts +0 -29
  72. package/dist/vue/errors.d.ts +0 -16
  73. package/dist/vue/injection-keys.d.ts +0 -14
  74. package/dist/vue/local-adapter.d.ts +0 -11
  75. package/dist/vue/pdf-exporter.d.ts +0 -13
  76. package/dist/vue/plugin.d.ts +0 -332
  77. package/dist/xlsx/render-xlsx.d.ts +0 -20
package/dist/pdf.d.cts CHANGED
@@ -1,6 +1,155 @@
1
- /**
2
- * PDF 直出子路径入口(@agile-team/mach-report/pdf):
3
- * 矢量 PDF 生成 + 字体缓存。pdf-lib 为常规依赖,
4
- * 仅当导入本子路径或触发懒加载导出时才进入产物图。
5
- */
6
- export * from './pdf/index';
1
+ declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
2
+
3
+ declare interface ComponentStyle {
4
+ fontSizePx?: number;
5
+ fontSize?: number;
6
+ fontFamily?: string;
7
+ bold?: boolean;
8
+ italic?: boolean;
9
+ underline?: boolean;
10
+ color?: string;
11
+ backgroundColor?: string;
12
+ align?: "left" | "center" | "right" | "justify";
13
+ verticalAlign?: "top" | "middle" | "bottom";
14
+ lineColor?: string;
15
+ borderColor?: string;
16
+ lineWidthPt?: number;
17
+ borderTop?: boolean;
18
+ borderRight?: boolean;
19
+ borderBottom?: boolean;
20
+ borderLeft?: boolean;
21
+ lineHeight?: number;
22
+ letterSpacing?: number;
23
+ opacity?: number;
24
+ rotateDeg?: number;
25
+ }
26
+
27
+ export declare interface FontLoadOptions {
28
+ /** 校验字体格式与可解析结构,失败抛出带 cause 的诊断;默认保留旧 API 的 null 降级。 */
29
+ strict?: boolean;
30
+ }
31
+
32
+ declare interface GridCell {
33
+ text?: string;
34
+ rawText?: string;
35
+ children?: PlanComponent[];
36
+ colSpan?: number;
37
+ rowSpan?: number;
38
+ style?: ComponentStyle;
39
+ }
40
+
41
+ /** 删除已知无效的字体缓存;供字体解析失败后修正同 URL 并重试。 */
42
+ export declare function invalidateFontCache(url: string): Promise<void>;
43
+
44
+ /**
45
+ * 字体加载(浏览器:IndexedDB 持久缓存 + 内存缓存;Node/SSR:内存缓存 + fetch):
46
+ * 中文字体体积大(simhei ~9MB),首次 fetch 后缓存,后续导出零网络等待。
47
+ * 双环境兼容——同一引擎可在 Node 做无头导出(定时任务/归档)。
48
+ */
49
+ export declare function loadFontWithCache(url: string, options?: FontLoadOptions): Promise<Uint8Array | null>;
50
+
51
+ /**
52
+ * PDF 文档句柄(不透明最小面):结构化仅暴露 save(),
53
+ * 避免在公共类型面泄漏 pdf-lib 类型(引擎保持零运行时依赖声明)。
54
+ */
55
+ export declare type PdfDocumentHandle = {
56
+ save(): Promise<Uint8Array>;
57
+ };
58
+
59
+ export declare interface PdfRenderOptions {
60
+ /** 嵌入字体字节(TTF,如黑体);缺省用 Helvetica(不支持 CJK) */
61
+ customFontBytes?: Uint8Array | ArrayBuffer;
62
+ customFontName?: string;
63
+ /** 文本测量器(默认启发式;与分页/Canvas 注入同一实例可消除折行差异) */
64
+ measurer?: TextMeasurer;
65
+ }
66
+
67
+ export declare interface PdfRenderResult {
68
+ pdfDoc: PdfDocumentHandle;
69
+ bytes: Uint8Array;
70
+ pageErrors: string[];
71
+ unsupportedTextCount: number;
72
+ /** 保真度降级清单(富文本转纯文本、图片格式不支持等),供上层提示 */
73
+ fidelityWarnings: string[];
74
+ }
75
+
76
+ declare interface PlanComponent {
77
+ kind: ComponentKind;
78
+ leftMm: number;
79
+ topMm: number;
80
+ widthMm: number;
81
+ heightMm: number;
82
+ nid?: string;
83
+ rkey?: string;
84
+ text?: string;
85
+ rawText?: string;
86
+ lines?: string[];
87
+ richParagraphs?: RichParagraph[];
88
+ imageData?: string;
89
+ grid?: PlanGrid;
90
+ style?: ComponentStyle;
91
+ meta?: Record<string, unknown>;
92
+ /** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
93
+ fallbackText?: string;
94
+ }
95
+
96
+ declare interface PlanGrid {
97
+ /** 行内允许 null 空位;渲染器按空单元格处理 */
98
+ cells: (GridCell | null)[][];
99
+ colWidthsMm?: number[];
100
+ rowHeightsMm?: number[];
101
+ gapMm?: number;
102
+ }
103
+
104
+ declare interface PlanPage {
105
+ pageWidthMm: number;
106
+ pageHeightMm: number;
107
+ marginTopMm?: number;
108
+ marginBottomMm?: number;
109
+ marginLeftMm?: number;
110
+ marginRightMm?: number;
111
+ components: PlanComponent[];
112
+ }
113
+
114
+ declare interface RenderPlan {
115
+ schemaVersion: string;
116
+ pages: PlanPage[];
117
+ }
118
+
119
+ export declare function renderPlanToPdf(plan: RenderPlan, options?: PdfRenderOptions): Promise<PdfRenderResult>;
120
+
121
+ declare interface RichParagraph {
122
+ segments: RichSegment[];
123
+ align?: ComponentStyle["align"];
124
+ lineHeight?: number;
125
+ spaceBeforeMm?: number;
126
+ spaceAfterMm?: number;
127
+ indentMm?: number;
128
+ }
129
+
130
+ declare interface RichSegment {
131
+ kind?: "text" | "field";
132
+ text?: string;
133
+ field?: string;
134
+ style?: ComponentStyle;
135
+ }
136
+
137
+ /**
138
+ * 文本测量与折行(分页/Canvas/PDF 共用的唯一折行真相源)。
139
+ *
140
+ * 测量模型可注入(TextMeasurer):
141
+ * - 默认 createHeuristicMeasurer():CJK/拉丁宽度启发式(零依赖、Node 可用)
142
+ * - 浏览器端可注入 createCanvasMeasurer()(真字体 metrics,消除三端折行差异)
143
+ */
144
+ declare interface TextMeasureOptions {
145
+ fontSizePt: number;
146
+ bold?: boolean;
147
+ letterSpacingPt?: number;
148
+ }
149
+
150
+ /** 宽度测量接口:返回文本在给定字号下的宽度(mm)。实现必须无副作用、可缓存。 */
151
+ declare interface TextMeasurer {
152
+ measureMm(text: string, options: TextMeasureOptions): number;
153
+ }
154
+
155
+ export { }
package/dist/pdf.d.ts CHANGED
@@ -1,6 +1,155 @@
1
- /**
2
- * PDF 直出子路径入口(@agile-team/mach-report/pdf):
3
- * 矢量 PDF 生成 + 字体缓存。pdf-lib 为常规依赖,
4
- * 仅当导入本子路径或触发懒加载导出时才进入产物图。
5
- */
6
- export * from './pdf/index';
1
+ declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
2
+
3
+ declare interface ComponentStyle {
4
+ fontSizePx?: number;
5
+ fontSize?: number;
6
+ fontFamily?: string;
7
+ bold?: boolean;
8
+ italic?: boolean;
9
+ underline?: boolean;
10
+ color?: string;
11
+ backgroundColor?: string;
12
+ align?: "left" | "center" | "right" | "justify";
13
+ verticalAlign?: "top" | "middle" | "bottom";
14
+ lineColor?: string;
15
+ borderColor?: string;
16
+ lineWidthPt?: number;
17
+ borderTop?: boolean;
18
+ borderRight?: boolean;
19
+ borderBottom?: boolean;
20
+ borderLeft?: boolean;
21
+ lineHeight?: number;
22
+ letterSpacing?: number;
23
+ opacity?: number;
24
+ rotateDeg?: number;
25
+ }
26
+
27
+ export declare interface FontLoadOptions {
28
+ /** 校验字体格式与可解析结构,失败抛出带 cause 的诊断;默认保留旧 API 的 null 降级。 */
29
+ strict?: boolean;
30
+ }
31
+
32
+ declare interface GridCell {
33
+ text?: string;
34
+ rawText?: string;
35
+ children?: PlanComponent[];
36
+ colSpan?: number;
37
+ rowSpan?: number;
38
+ style?: ComponentStyle;
39
+ }
40
+
41
+ /** 删除已知无效的字体缓存;供字体解析失败后修正同 URL 并重试。 */
42
+ export declare function invalidateFontCache(url: string): Promise<void>;
43
+
44
+ /**
45
+ * 字体加载(浏览器:IndexedDB 持久缓存 + 内存缓存;Node/SSR:内存缓存 + fetch):
46
+ * 中文字体体积大(simhei ~9MB),首次 fetch 后缓存,后续导出零网络等待。
47
+ * 双环境兼容——同一引擎可在 Node 做无头导出(定时任务/归档)。
48
+ */
49
+ export declare function loadFontWithCache(url: string, options?: FontLoadOptions): Promise<Uint8Array | null>;
50
+
51
+ /**
52
+ * PDF 文档句柄(不透明最小面):结构化仅暴露 save(),
53
+ * 避免在公共类型面泄漏 pdf-lib 类型(引擎保持零运行时依赖声明)。
54
+ */
55
+ export declare type PdfDocumentHandle = {
56
+ save(): Promise<Uint8Array>;
57
+ };
58
+
59
+ export declare interface PdfRenderOptions {
60
+ /** 嵌入字体字节(TTF,如黑体);缺省用 Helvetica(不支持 CJK) */
61
+ customFontBytes?: Uint8Array | ArrayBuffer;
62
+ customFontName?: string;
63
+ /** 文本测量器(默认启发式;与分页/Canvas 注入同一实例可消除折行差异) */
64
+ measurer?: TextMeasurer;
65
+ }
66
+
67
+ export declare interface PdfRenderResult {
68
+ pdfDoc: PdfDocumentHandle;
69
+ bytes: Uint8Array;
70
+ pageErrors: string[];
71
+ unsupportedTextCount: number;
72
+ /** 保真度降级清单(富文本转纯文本、图片格式不支持等),供上层提示 */
73
+ fidelityWarnings: string[];
74
+ }
75
+
76
+ declare interface PlanComponent {
77
+ kind: ComponentKind;
78
+ leftMm: number;
79
+ topMm: number;
80
+ widthMm: number;
81
+ heightMm: number;
82
+ nid?: string;
83
+ rkey?: string;
84
+ text?: string;
85
+ rawText?: string;
86
+ lines?: string[];
87
+ richParagraphs?: RichParagraph[];
88
+ imageData?: string;
89
+ grid?: PlanGrid;
90
+ style?: ComponentStyle;
91
+ meta?: Record<string, unknown>;
92
+ /** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
93
+ fallbackText?: string;
94
+ }
95
+
96
+ declare interface PlanGrid {
97
+ /** 行内允许 null 空位;渲染器按空单元格处理 */
98
+ cells: (GridCell | null)[][];
99
+ colWidthsMm?: number[];
100
+ rowHeightsMm?: number[];
101
+ gapMm?: number;
102
+ }
103
+
104
+ declare interface PlanPage {
105
+ pageWidthMm: number;
106
+ pageHeightMm: number;
107
+ marginTopMm?: number;
108
+ marginBottomMm?: number;
109
+ marginLeftMm?: number;
110
+ marginRightMm?: number;
111
+ components: PlanComponent[];
112
+ }
113
+
114
+ declare interface RenderPlan {
115
+ schemaVersion: string;
116
+ pages: PlanPage[];
117
+ }
118
+
119
+ export declare function renderPlanToPdf(plan: RenderPlan, options?: PdfRenderOptions): Promise<PdfRenderResult>;
120
+
121
+ declare interface RichParagraph {
122
+ segments: RichSegment[];
123
+ align?: ComponentStyle["align"];
124
+ lineHeight?: number;
125
+ spaceBeforeMm?: number;
126
+ spaceAfterMm?: number;
127
+ indentMm?: number;
128
+ }
129
+
130
+ declare interface RichSegment {
131
+ kind?: "text" | "field";
132
+ text?: string;
133
+ field?: string;
134
+ style?: ComponentStyle;
135
+ }
136
+
137
+ /**
138
+ * 文本测量与折行(分页/Canvas/PDF 共用的唯一折行真相源)。
139
+ *
140
+ * 测量模型可注入(TextMeasurer):
141
+ * - 默认 createHeuristicMeasurer():CJK/拉丁宽度启发式(零依赖、Node 可用)
142
+ * - 浏览器端可注入 createCanvasMeasurer()(真字体 metrics,消除三端折行差异)
143
+ */
144
+ declare interface TextMeasureOptions {
145
+ fontSizePt: number;
146
+ bold?: boolean;
147
+ letterSpacingPt?: number;
148
+ }
149
+
150
+ /** 宽度测量接口:返回文本在给定字号下的宽度(mm)。实现必须无副作用、可缓存。 */
151
+ declare interface TextMeasurer {
152
+ measureMm(text: string, options: TextMeasureOptions): number;
153
+ }
154
+
155
+ export { }