@agile-team/mach-report 0.4.0 → 0.5.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 (94) hide show
  1. package/dist/index.cjs +1663 -0
  2. package/dist/index.d.cts +344 -0
  3. package/dist/index.d.ts +344 -13
  4. package/dist/index.js +1611 -14
  5. package/dist/manager.cjs +122 -0
  6. package/dist/{manager/api.d.ts → manager.d.cts} +55 -3
  7. package/dist/manager.d.ts +97 -5
  8. package/dist/manager.js +119 -6
  9. package/dist/pdf.cjs +52530 -0
  10. package/dist/pdf.d.cts +33 -0
  11. package/dist/pdf.d.ts +31 -4
  12. package/dist/pdf.js +52527 -7
  13. package/dist/sql.cjs +45207 -0
  14. package/dist/sql.d.cts +95 -0
  15. package/dist/sql.d.ts +93 -3
  16. package/dist/sql.js +45194 -6
  17. package/dist/textwrap-DWzM7pt1.d.cts +135 -0
  18. package/dist/textwrap-DWzM7pt1.d.ts +135 -0
  19. package/package.json +44 -15
  20. package/dist/builder/template-builder.d.ts +0 -53
  21. package/dist/builder/template-builder.js +0 -153
  22. package/dist/builder/template-builder.js.map +0 -1
  23. package/dist/compat/jh4j-template.d.ts +0 -12
  24. package/dist/compat/jh4j-template.js +0 -196
  25. package/dist/compat/jh4j-template.js.map +0 -1
  26. package/dist/defaults.d.ts +0 -27
  27. package/dist/defaults.js +0 -28
  28. package/dist/defaults.js.map +0 -1
  29. package/dist/index.js.map +0 -1
  30. package/dist/layout/paginate.d.ts +0 -51
  31. package/dist/layout/paginate.js +0 -197
  32. package/dist/layout/paginate.js.map +0 -1
  33. package/dist/layout/textwrap.d.ts +0 -36
  34. package/dist/layout/textwrap.js +0 -173
  35. package/dist/layout/textwrap.js.map +0 -1
  36. package/dist/manager/api.js +0 -101
  37. package/dist/manager/api.js.map +0 -1
  38. package/dist/manager/index.d.ts +0 -2
  39. package/dist/manager/index.js +0 -3
  40. package/dist/manager/index.js.map +0 -1
  41. package/dist/manager/types.d.ts +0 -50
  42. package/dist/manager/types.js +0 -8
  43. package/dist/manager/types.js.map +0 -1
  44. package/dist/manager.js.map +0 -1
  45. package/dist/pdf/font-loader.d.ts +0 -5
  46. package/dist/pdf/font-loader.js +0 -84
  47. package/dist/pdf/font-loader.js.map +0 -1
  48. package/dist/pdf/index.d.ts +0 -2
  49. package/dist/pdf/index.js +0 -3
  50. package/dist/pdf/index.js.map +0 -1
  51. package/dist/pdf/render-pdf.d.ts +0 -19
  52. package/dist/pdf/render-pdf.js +0 -284
  53. package/dist/pdf/render-pdf.js.map +0 -1
  54. package/dist/pdf.js.map +0 -1
  55. package/dist/render/canvas.d.ts +0 -61
  56. package/dist/render/canvas.js +0 -402
  57. package/dist/render/canvas.js.map +0 -1
  58. package/dist/render/dom.d.ts +0 -10
  59. package/dist/render/dom.js +0 -311
  60. package/dist/render/dom.js.map +0 -1
  61. package/dist/render/grid-geometry.d.ts +0 -41
  62. package/dist/render/grid-geometry.js +0 -131
  63. package/dist/render/grid-geometry.js.map +0 -1
  64. package/dist/render/style.d.ts +0 -40
  65. package/dist/render/style.js +0 -39
  66. package/dist/render/style.js.map +0 -1
  67. package/dist/render/window.d.ts +0 -23
  68. package/dist/render/window.js +0 -58
  69. package/dist/render/window.js.map +0 -1
  70. package/dist/schema/render-plan.d.ts +0 -96
  71. package/dist/schema/render-plan.js +0 -25
  72. package/dist/schema/render-plan.js.map +0 -1
  73. package/dist/schema/validate.d.ts +0 -15
  74. package/dist/schema/validate.js +0 -129
  75. package/dist/schema/validate.js.map +0 -1
  76. package/dist/sql/ast-check.d.ts +0 -14
  77. package/dist/sql/ast-check.js +0 -44
  78. package/dist/sql/ast-check.js.map +0 -1
  79. package/dist/sql/compile.d.ts +0 -31
  80. package/dist/sql/compile.js +0 -145
  81. package/dist/sql/compile.js.map +0 -1
  82. package/dist/sql/expr.d.ts +0 -21
  83. package/dist/sql/expr.js +0 -123
  84. package/dist/sql/expr.js.map +0 -1
  85. package/dist/sql/index.d.ts +0 -4
  86. package/dist/sql/index.js +0 -5
  87. package/dist/sql/index.js.map +0 -1
  88. package/dist/sql/tokenizer.d.ts +0 -25
  89. package/dist/sql/tokenizer.js +0 -124
  90. package/dist/sql/tokenizer.js.map +0 -1
  91. package/dist/sql.js.map +0 -1
  92. package/dist/units.d.ts +0 -11
  93. package/dist/units.js +0 -26
  94. package/dist/units.js.map +0 -1
package/dist/sql/expr.js DELETED
@@ -1,123 +0,0 @@
1
- import { splitTopLevel } from "./tokenizer";
2
- export class ExprError extends Error {
3
- constructor(message) {
4
- super(`公式表达式错误: ${message}`);
5
- this.name = "ExprError";
6
- }
7
- }
8
- /**
9
- * 求值 jh4j 公式表达式(用于 {if(cond, a, b)} 的 cond 与操作数):
10
- * - #param 引用(渲染时被替换为参数值;此实现按值求值)
11
- * - "..." 字符串字面量(仅双引号,与 jh4j 一致)
12
- * - isEmpty(x)、isNotEmpty(x)
13
- * - == / != 比较
14
- * - + 拼接
15
- */
16
- export function evalExpr(input, ctx) {
17
- const trimmed = input.trim();
18
- const literalMatch = trimmed.startsWith(`"`) ? /^"([^"]*)"$/.exec(trimmed) : null;
19
- if (literalMatch)
20
- return literalMatch[1];
21
- const call = /^(isEmpty|isNotEmpty)\((.*)\)$/s.exec(trimmed);
22
- if (call) {
23
- const inner = evalExpr(call[2], ctx);
24
- const empty = inner == null || inner === "";
25
- return call[1] === "isEmpty" ? empty : !empty;
26
- }
27
- const paren = /^\((.*)\)$/s.exec(trimmed);
28
- if (paren) {
29
- return evalExpr(paren[1], ctx);
30
- }
31
- const cmp = splitByOperator(trimmed, ["==", "!="]);
32
- if (cmp) {
33
- const left = evalExpr(cmp.left, ctx);
34
- const right = evalExpr(cmp.right, ctx);
35
- return cmp.op === "==" ? String(left) === String(right) : String(left) !== String(right);
36
- }
37
- const concatIdx = findTopLevelPlus(trimmed);
38
- if (concatIdx >= 0) {
39
- const left = evalExpr(trimmed.slice(0, concatIdx), ctx);
40
- const right = evalExpr(trimmed.slice(concatIdx + 1), ctx);
41
- return `${stringify(left)}${stringify(right)}`;
42
- }
43
- if (trimmed.startsWith("#")) {
44
- const name = trimmed.slice(1).trim();
45
- return name in ctx.params ? ctx.params[name] : "";
46
- }
47
- if (trimmed === "true")
48
- return true;
49
- if (trimmed === "false")
50
- return false;
51
- if (/^-?\d+(\.\d+)?$/.test(trimmed))
52
- return Number(trimmed);
53
- if (trimmed.startsWith(`"`)) {
54
- throw new ExprError(`字符串未闭合: ${trimmed}`);
55
- }
56
- throw new ExprError(`无法识别的表达式: ${trimmed}`);
57
- }
58
- function stringify(v) {
59
- if (v == null)
60
- return "";
61
- if (typeof v === "string")
62
- return v;
63
- return String(v);
64
- }
65
- function splitByOperator(input, ops) {
66
- let depth = 0;
67
- let inString = false;
68
- for (let i = 0; i < input.length; i++) {
69
- const ch = input[i];
70
- if (inString) {
71
- if (ch === `"`)
72
- inString = false;
73
- continue;
74
- }
75
- if (ch === `"`)
76
- inString = true;
77
- else if (ch === "(" || ch === "{")
78
- depth++;
79
- else if (ch === ")" || ch === "}")
80
- depth--;
81
- else if (depth === 0) {
82
- for (const op of ops) {
83
- if (input.startsWith(op, i)) {
84
- return { op, left: input.slice(0, i), right: input.slice(i + op.length) };
85
- }
86
- }
87
- }
88
- }
89
- return null;
90
- }
91
- function findTopLevelPlus(input) {
92
- let depth = 0;
93
- let inString = false;
94
- for (let i = 0; i < input.length; i++) {
95
- const ch = input[i];
96
- if (inString) {
97
- if (ch === `"`)
98
- inString = false;
99
- continue;
100
- }
101
- if (ch === `"`)
102
- inString = true;
103
- else if (ch === "(" || ch === "{")
104
- depth++;
105
- else if (ch === ")" || ch === "}")
106
- depth--;
107
- else if (ch === "+" && depth === 0)
108
- return i;
109
- }
110
- return -1;
111
- }
112
- /** {if(cond, whenTrue, whenFalse)} 的参数拆分(2 或 3 段,兼容 jh4j 三段式) */
113
- export function parseIfArgs(inner) {
114
- const parts = splitTopLevel(inner);
115
- if (parts.length === 2) {
116
- return { cond: parts[0], whenTrue: parts[1], whenFalse: "" };
117
- }
118
- if (parts.length === 3) {
119
- return { cond: parts[0], whenTrue: parts[1], whenFalse: parts[2] };
120
- }
121
- throw new ExprError(`if() 需要 2~3 个参数,实际 ${parts.length} 段: ${inner}`);
122
- }
123
- //# sourceMappingURL=expr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"expr.js","sourceRoot":"","sources":["../../src/sql/expr.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from "./tokenizer";
2
- export * from "./expr";
3
- export * from "./compile";
4
- export * from "./ast-check";
package/dist/sql/index.js DELETED
@@ -1,5 +0,0 @@
1
- export * from "./tokenizer";
2
- export * from "./expr";
3
- export * from "./compile";
4
- export * from "./ast-check";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sql/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -1,25 +0,0 @@
1
- export type TokenType = "literal" | "bind" | "subst" | "if" | "escape";
2
- export interface Token {
3
- type: TokenType;
4
- text: string;
5
- /** bind/subst 参数名;if 表达式源码 */
6
- value?: string;
7
- start: number;
8
- end: number;
9
- }
10
- export declare class SqlSyntaxError extends Error {
11
- readonly position: number;
12
- readonly source: string;
13
- constructor(message: string, position: number, source: string);
14
- }
15
- /**
16
- * 扫描动态 SQL,产出 token 流:
17
- * - literal: 纯 SQL 文本(已反转义 \{ \})
18
- * - bind: #{name}
19
- * - subst: ${name}
20
- * - if: {if(expr, a, b)} —— value 为去壳后的参数串
21
- * - escape: \{ 或 \}
22
- */
23
- export declare function tokenize(sql: string): Token[];
24
- /** 按顶层逗号拆分(忽略双引号内与括号/花括号内) */
25
- export declare function splitTopLevel(input: string): string[];
@@ -1,124 +0,0 @@
1
- export class SqlSyntaxError extends Error {
2
- constructor(message, position, source) {
3
- super(`${message} (at ${position})`);
4
- this.position = position;
5
- this.source = source;
6
- this.name = "SqlSyntaxError";
7
- }
8
- }
9
- /**
10
- * 扫描动态 SQL,产出 token 流:
11
- * - literal: 纯 SQL 文本(已反转义 \{ \})
12
- * - bind: #{name}
13
- * - subst: ${name}
14
- * - if: {if(expr, a, b)} —— value 为去壳后的参数串
15
- * - escape: \{ 或 \}
16
- */
17
- export function tokenize(sql) {
18
- const tokens = [];
19
- let buf = "";
20
- let i = 0;
21
- const pushLiteral = (start, end) => {
22
- if (buf) {
23
- tokens.push({ type: "literal", text: buf, start, end });
24
- buf = "";
25
- }
26
- };
27
- while (i < sql.length) {
28
- const ch = sql[i];
29
- if (ch === "\\" && (sql[i + 1] === "{" || sql[i + 1] === "}")) {
30
- buf += sql[i + 1];
31
- i += 2;
32
- continue;
33
- }
34
- if (ch === "#" && sql[i + 1] === "{") {
35
- const close = findClose(sql, i + 1);
36
- const name = sql.slice(i + 2, close).trim();
37
- if (!name)
38
- throw new SqlSyntaxError("空参数名 #{}}", i, sql);
39
- pushLiteral(i, i);
40
- tokens.push({ type: "bind", text: sql.slice(i, close + 1), value: name, start: i, end: close + 1 });
41
- i = close + 1;
42
- continue;
43
- }
44
- if (ch === "$" && sql[i + 1] === "{") {
45
- const close = findClose(sql, i + 1);
46
- const name = sql.slice(i + 2, close).trim();
47
- if (!name)
48
- throw new SqlSyntaxError("空参数名 ${}}", i, sql);
49
- pushLiteral(i, i);
50
- tokens.push({ type: "subst", text: sql.slice(i, close + 1), value: name, start: i, end: close + 1 });
51
- i = close + 1;
52
- continue;
53
- }
54
- if (ch === "{" && sql.slice(i, i + 4) === "{if(") {
55
- const close = findClose(sql, i);
56
- const innerEnd = sql[close - 1] === ")" ? close - 1 : close;
57
- const inner = sql.slice(i + 4, innerEnd);
58
- pushLiteral(i, i);
59
- tokens.push({ type: "if", text: sql.slice(i, close + 1), value: inner, start: i, end: close + 1 });
60
- i = close + 1;
61
- continue;
62
- }
63
- buf += ch;
64
- i += 1;
65
- }
66
- pushLiteral(sql.length, sql.length);
67
- return tokens;
68
- }
69
- /** 从 { 或 #{ / ${ 的 { 开始,找到配对的 }(考虑嵌套与字符串) */
70
- function findClose(sql, openBrace) {
71
- let depth = 0;
72
- let inString = false;
73
- for (let i = openBrace; i < sql.length; i++) {
74
- const ch = sql[i];
75
- if (inString) {
76
- if (ch === `"`)
77
- inString = false;
78
- continue;
79
- }
80
- if (ch === `"`)
81
- inString = true;
82
- else if (ch === "{")
83
- depth++;
84
- else if (ch === "}") {
85
- depth--;
86
- if (depth === 0)
87
- return i;
88
- }
89
- }
90
- throw new SqlSyntaxError("未闭合的 {", openBrace, sql);
91
- }
92
- /** 按顶层逗号拆分(忽略双引号内与括号/花括号内) */
93
- export function splitTopLevel(input) {
94
- const parts = [];
95
- let depth = 0;
96
- let inString = false;
97
- let buf = "";
98
- for (const ch of input) {
99
- if (inString) {
100
- buf += ch;
101
- if (ch === `"`)
102
- inString = false;
103
- continue;
104
- }
105
- if (ch === `"`) {
106
- inString = true;
107
- buf += ch;
108
- continue;
109
- }
110
- if (ch === "(" || ch === "{")
111
- depth++;
112
- if (ch === ")" || ch === "}")
113
- depth--;
114
- if (ch === "," && depth === 0) {
115
- parts.push(buf);
116
- buf = "";
117
- continue;
118
- }
119
- buf += ch;
120
- }
121
- parts.push(buf);
122
- return parts.map((p) => p.trim()).filter((p) => p.length > 0 || parts.length === 1);
123
- }
124
- //# sourceMappingURL=tokenizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/sql/tokenizer.ts"],"names":[],"mappings":"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"}
package/dist/sql.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,aAAa,CAAC"}
package/dist/units.d.ts DELETED
@@ -1,11 +0,0 @@
1
- export declare const MM_PER_INCH = 25.4;
2
- export declare const CSS_DPI = 96;
3
- export declare function mmToPxFactor(dpi?: number): number;
4
- export declare function mmToPx(value: number, dpi?: number): number;
5
- export declare function pxToMm(value: number, dpi?: number): number;
6
- export declare function ptToPx(pt: number, dpi?: number): number;
7
- export declare function round(value: number, digits: number): number;
8
- export declare const PAPER_SIZES: Record<string, {
9
- widthMm: number;
10
- heightMm: number;
11
- }>;
package/dist/units.js DELETED
@@ -1,26 +0,0 @@
1
- export const MM_PER_INCH = 25.4;
2
- export const CSS_DPI = 96;
3
- export function mmToPxFactor(dpi = CSS_DPI) {
4
- return dpi / MM_PER_INCH;
5
- }
6
- export function mmToPx(value, dpi = CSS_DPI) {
7
- return (value || 0) * mmToPxFactor(dpi);
8
- }
9
- export function pxToMm(value, dpi = CSS_DPI) {
10
- return value / mmToPxFactor(dpi);
11
- }
12
- export function ptToPx(pt, dpi = CSS_DPI) {
13
- return (pt * dpi) / 72;
14
- }
15
- export function round(value, digits) {
16
- const f = 10 ** digits;
17
- return Math.round(value * f) / f;
18
- }
19
- export const PAPER_SIZES = {
20
- a3: { widthMm: 297, heightMm: 420 },
21
- a4: { widthMm: 210, heightMm: 297 },
22
- a5: { widthMm: 148, heightMm: 210 },
23
- b4: { widthMm: 250, heightMm: 353 },
24
- b5: { widthMm: 176, heightMm: 250 },
25
- };
26
- //# sourceMappingURL=units.js.map
package/dist/units.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"units.js","sourceRoot":"","sources":["../src/units.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC;AAChC,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AAE1B,MAAM,UAAU,YAAY,CAAC,MAAc,OAAO;IAChD,OAAO,GAAG,GAAG,WAAW,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,MAAc,OAAO;IACzD,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,MAAc,OAAO;IACzD,OAAO,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAU,EAAE,MAAc,OAAO;IACtD,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,MAAc;IACjD,MAAM,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;IACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAA0D;IAChF,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;IACnC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;IACnC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;IACnC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;IACnC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE;CACpC,CAAC"}