@sme.up/doc-alchemist 1.4.1 → 1.5.0-20251209090900
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 +39 -48
- package/dist/converters/excel/commons.d.ts +2 -2
- package/dist/converters/excel/commons.js +19 -13
- package/dist/converters/excel/commons.js.map +1 -1
- package/dist/converters/excel/excel-converter.types.d.ts +2 -0
- package/dist/converters/excel/excel-converter.types.js +3 -1
- package/dist/converters/excel/excel-converter.types.js.map +1 -1
- package/dist/converters/excel/matrix-converter.d.ts +1 -1
- package/dist/converters/excel/matrix-converter.js +33 -11
- package/dist/converters/excel/matrix-converter.js.map +1 -1
- package/dist/converters/excel/tree-converter.d.ts +1 -1
- package/dist/converters/excel/tree-converter.js +3 -3
- package/dist/converters/excel/tree-converter.js.map +1 -1
- package/dist/converters/excel-converter.d.ts +1 -1
- package/dist/converters/excel-converter.js +2 -2
- package/dist/converters/excel-converter.js.map +1 -1
- package/dist/converters/pdf/form-filler.d.ts +24 -0
- package/dist/converters/pdf/form-filler.js +187 -0
- package/dist/converters/pdf/form-filler.js.map +1 -0
- package/dist/converters/pdf/pdfmake/adapter-processor.d.ts +12 -0
- package/dist/converters/pdf/pdfmake/adapter-processor.js +113 -0
- package/dist/converters/pdf/pdfmake/adapter-processor.js.map +1 -0
- package/dist/converters/pdf/pdfmake/adapter-registry.d.ts +22 -0
- package/dist/converters/pdf/pdfmake/adapter-registry.js +48 -0
- package/dist/converters/pdf/pdfmake/adapter-registry.js.map +1 -0
- package/dist/converters/pdf/pdfmake/image-adapter.d.ts +19 -0
- package/dist/converters/pdf/pdfmake/image-adapter.js +150 -0
- package/dist/converters/pdf/pdfmake/image-adapter.js.map +1 -0
- package/dist/converters/pdf/pdfmake/page-element-adapter.d.ts +8 -0
- package/dist/converters/pdf/pdfmake/page-element-adapter.js +83 -0
- package/dist/converters/pdf/pdfmake/page-element-adapter.js.map +1 -0
- package/dist/converters/pdf/pdfmake/pdfmake.types.d.ts +60 -0
- package/dist/converters/pdf/pdfmake/pdfmake.types.js +13 -0
- package/dist/converters/pdf/pdfmake/pdfmake.types.js.map +1 -0
- package/dist/converters/pdf/pdfmake/table-adapter.d.ts +31 -0
- package/dist/converters/pdf/pdfmake/table-adapter.js +126 -0
- package/dist/converters/pdf/pdfmake/table-adapter.js.map +1 -0
- package/dist/converters/pdf/pdfmake-renderer.d.ts +21 -0
- package/dist/converters/pdf/pdfmake-renderer.js +87 -0
- package/dist/converters/pdf/pdfmake-renderer.js.map +1 -0
- package/dist/converters/pdf-converter.d.ts +6 -0
- package/dist/converters/pdf-converter.js +24 -1
- package/dist/converters/pdf-converter.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/commons-utility.d.ts +3 -2
- package/dist/utils/commons-utility.js +23 -79
- package/dist/utils/commons-utility.js.map +1 -1
- package/dist/utils/dates-utility.d.ts +7 -0
- package/dist/utils/dates-utility.js +25 -0
- package/dist/utils/dates-utility.js.map +1 -1
- package/dist/utils/filters-utility.d.ts +6 -0
- package/dist/utils/filters-utility.js +189 -0
- package/dist/utils/filters-utility.js.map +1 -0
- package/package.json +5 -3
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFilterMatchValue = void 0;
|
|
4
|
+
const dates_utility_1 = require("./dates-utility");
|
|
5
|
+
const math_utility_1 = require("./math-utility");
|
|
6
|
+
const objects_utility_1 = require("./objects-utility");
|
|
7
|
+
const parseFilterExpression = (filter) => {
|
|
8
|
+
const regex = /^\s*(<=|>=|!|>|<)?\s*'?(%)?(.*?)(%)?'?\s*$/;
|
|
9
|
+
const match = filter.match(regex);
|
|
10
|
+
if (!match) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return {
|
|
14
|
+
operator: match[1],
|
|
15
|
+
startWildcard: match[2] === "%",
|
|
16
|
+
filterText: match[3] ?? "",
|
|
17
|
+
endWildcard: match[4] === "%",
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
const handleVoidFilter = (filterText, filterExpression, operator, value) => {
|
|
21
|
+
if (filterText === "" && filterExpression.includes("''")) {
|
|
22
|
+
if (operator === "!") {
|
|
23
|
+
return value !== "";
|
|
24
|
+
}
|
|
25
|
+
return value === "";
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
const convertToTypedValues = (value, filterText, obj, webupManagerData) => {
|
|
30
|
+
let typedValue = value;
|
|
31
|
+
let typedFilter = filterText;
|
|
32
|
+
let isTypedComparison = false;
|
|
33
|
+
if (obj &&
|
|
34
|
+
(0, objects_utility_1.objectsIsNumber)(obj) &&
|
|
35
|
+
!Number.isNaN((0, math_utility_1.mathNumberify)(filterText, webupManagerData.mathLocale))) {
|
|
36
|
+
// Convert to numbers for numeric comparison
|
|
37
|
+
typedValue = parseFloat(value);
|
|
38
|
+
typedFilter = (0, math_utility_1.mathNumberify)(filterText, webupManagerData.mathLocale, true);
|
|
39
|
+
// If parsing fails, treat as 0 for comparison
|
|
40
|
+
if (isNaN(typedValue))
|
|
41
|
+
typedValue = 0;
|
|
42
|
+
if (isNaN(typedFilter))
|
|
43
|
+
typedFilter = 0;
|
|
44
|
+
isTypedComparison = true;
|
|
45
|
+
}
|
|
46
|
+
else if (obj &&
|
|
47
|
+
(0, objects_utility_1.objectsIsDate)(obj) &&
|
|
48
|
+
(0, dates_utility_1.datesIsIsoDate)(value) &&
|
|
49
|
+
(0, dates_utility_1.parseDateByLocale)(filterText, webupManagerData.datesLocale)) {
|
|
50
|
+
// Convert to Date objects for date comparison
|
|
51
|
+
typedValue = new Date(value);
|
|
52
|
+
typedValue.setHours(0, 0, 0, 0);
|
|
53
|
+
typedFilter =
|
|
54
|
+
(0, dates_utility_1.parseDateByLocale)(filterText, webupManagerData.datesLocale) ?? filterText;
|
|
55
|
+
isTypedComparison = true;
|
|
56
|
+
}
|
|
57
|
+
// If conversion to typed comparison failed, fallback to string comparison
|
|
58
|
+
if (!isTypedComparison) {
|
|
59
|
+
typedFilter = filterText;
|
|
60
|
+
switch (true) {
|
|
61
|
+
case (0, objects_utility_1.objectsIsDate)(obj):
|
|
62
|
+
typedValue = (0, dates_utility_1.datesFormat)(value, webupManagerData.datesLocale);
|
|
63
|
+
break;
|
|
64
|
+
case (0, objects_utility_1.objectsIsNumber)(obj):
|
|
65
|
+
typedValue = (0, math_utility_1.mathFormat)(parseFloat(value), null, webupManagerData.mathLocale);
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
typedValue = value;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { typedValue, typedFilter, isTypedComparison };
|
|
72
|
+
};
|
|
73
|
+
const handleComparisonOperator = (operator, typedValue, typedFilter) => {
|
|
74
|
+
if (!operator || ![">", ">=", "<", "<="].includes(operator)) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
switch (operator) {
|
|
78
|
+
case ">":
|
|
79
|
+
return typedValue > typedFilter;
|
|
80
|
+
case ">=":
|
|
81
|
+
return typedValue >= typedFilter;
|
|
82
|
+
case "<":
|
|
83
|
+
return typedValue < typedFilter;
|
|
84
|
+
case "<=":
|
|
85
|
+
return typedValue <= typedFilter;
|
|
86
|
+
default:
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const handleNegationOperator = (value, filterText, typedValue, typedFilter, isTypedComparison, startWildcard, endWildcard) => {
|
|
91
|
+
// For numeric or date types, use typed comparison
|
|
92
|
+
if (isTypedComparison) {
|
|
93
|
+
const returnValue = typedValue.valueOf() !== typedFilter.valueOf();
|
|
94
|
+
console.log(typedValue.valueOf(), typedFilter.valueOf(), returnValue);
|
|
95
|
+
return returnValue;
|
|
96
|
+
}
|
|
97
|
+
// Match negation for strings
|
|
98
|
+
if (startWildcard && endWildcard) {
|
|
99
|
+
return !value.includes(filterText);
|
|
100
|
+
}
|
|
101
|
+
if (startWildcard) {
|
|
102
|
+
return !value.endsWith(filterText);
|
|
103
|
+
}
|
|
104
|
+
if (endWildcard) {
|
|
105
|
+
return !value.startsWith(filterText);
|
|
106
|
+
}
|
|
107
|
+
// Exact match negation
|
|
108
|
+
return value !== filterText;
|
|
109
|
+
};
|
|
110
|
+
const handleWildcardMatch = (value, filterText, startWildcard, endWildcard) => {
|
|
111
|
+
if (!startWildcard && !endWildcard) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (startWildcard && endWildcard) {
|
|
115
|
+
return value.includes(filterText);
|
|
116
|
+
}
|
|
117
|
+
if (startWildcard) {
|
|
118
|
+
return value.endsWith(filterText);
|
|
119
|
+
}
|
|
120
|
+
if (endWildcard) {
|
|
121
|
+
return value.startsWith(filterText);
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
};
|
|
125
|
+
const handleDefaultMatch = (value, filter, filterText, typedValue, typedFilter, isTypedComparison) => {
|
|
126
|
+
if (!isTypedComparison) {
|
|
127
|
+
// Non-typed exact match
|
|
128
|
+
if (filter.startsWith("'") && filter.endsWith("'")) {
|
|
129
|
+
return value === filterText;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return value.toLowerCase().includes(filterText.toLowerCase());
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return typedValue.valueOf() === typedFilter.valueOf();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const isSingleFilterMatchValue = (value, filter, obj = { t: "", p: "", k: "" }, webupManagerData) => {
|
|
140
|
+
if (value == null)
|
|
141
|
+
value = "";
|
|
142
|
+
if (filter == null)
|
|
143
|
+
filter = "";
|
|
144
|
+
value = value.trim();
|
|
145
|
+
filter = filter.trim();
|
|
146
|
+
// Parse filter expression
|
|
147
|
+
const filterParts = parseFilterExpression(filter);
|
|
148
|
+
if (!filterParts) {
|
|
149
|
+
// fallback: inclusion - Non case sensitive
|
|
150
|
+
return value.toLowerCase().includes(filter.toLowerCase());
|
|
151
|
+
}
|
|
152
|
+
const { operator, startWildcard, filterText, endWildcard } = filterParts;
|
|
153
|
+
// Handle void filter (empty string with quotes)
|
|
154
|
+
const voidResult = handleVoidFilter(filterText, filter, operator, value);
|
|
155
|
+
if (voidResult !== null) {
|
|
156
|
+
return voidResult;
|
|
157
|
+
}
|
|
158
|
+
// Convert to appropriate type based on obj.t
|
|
159
|
+
const { typedValue, typedFilter, isTypedComparison } = convertToTypedValues(value, filterText, obj, webupManagerData);
|
|
160
|
+
// Handle comparison operators (>, >=, <, <=)
|
|
161
|
+
const comparisonResult = handleComparisonOperator(operator, typedValue, typedFilter);
|
|
162
|
+
if (comparisonResult !== null) {
|
|
163
|
+
return comparisonResult;
|
|
164
|
+
}
|
|
165
|
+
// Handle negation operator (!)
|
|
166
|
+
if (operator === "!") {
|
|
167
|
+
return handleNegationOperator(value, filterText, typedValue, typedFilter, isTypedComparison, startWildcard, endWildcard);
|
|
168
|
+
}
|
|
169
|
+
// Handle wildcard matching
|
|
170
|
+
const wildcardResult = handleWildcardMatch(value, filterText, startWildcard, endWildcard);
|
|
171
|
+
if (wildcardResult !== null) {
|
|
172
|
+
return wildcardResult;
|
|
173
|
+
}
|
|
174
|
+
// Default match (exact or inclusion)
|
|
175
|
+
return handleDefaultMatch(value, filter, filterText, typedValue, typedFilter, isTypedComparison);
|
|
176
|
+
};
|
|
177
|
+
const isFilterMatchValue = (value, filter, obj = { t: "", p: "", k: "" }, webupManagerData = {
|
|
178
|
+
mathLocale: "it",
|
|
179
|
+
datesLocale: "it",
|
|
180
|
+
themeBackground: "",
|
|
181
|
+
}) => {
|
|
182
|
+
const filters = filter
|
|
183
|
+
.split(";")
|
|
184
|
+
.map(f => f.trim())
|
|
185
|
+
.filter(f => f.length > 0);
|
|
186
|
+
return filters.every(f => isSingleFilterMatchValue(value, f, obj, webupManagerData));
|
|
187
|
+
};
|
|
188
|
+
exports.isFilterMatchValue = isFilterMatchValue;
|
|
189
|
+
//# sourceMappingURL=filters-utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters-utility.js","sourceRoot":"","sources":["../../src/utils/filters-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebupManagerData } from \"../types\";\nimport {\n datesIsIsoDate,\n parseDateByLocale,\n datesFormat,\n} from \"./dates-utility\";\nimport { mathFormat, mathNumberify } from \"./math-utility\";\nimport { objectsIsDate, objectsIsNumber } from \"./objects-utility\";\n\ninterface FilterParts {\n operator: string | undefined;\n startWildcard: boolean;\n filterText: string;\n endWildcard: boolean;\n}\n\ninterface TypedValues {\n typedValue: string | Date | number;\n typedFilter: string | Date | number;\n isTypedComparison: boolean;\n}\n\nconst parseFilterExpression = (filter: string): FilterParts | null => {\n const regex = /^\\s*(<=|>=|!|>|<)?\\s*'?(%)?(.*?)(%)?'?\\s*$/;\n const match = filter.match(regex);\n\n if (!match) {\n return null;\n }\n\n return {\n operator: match[1],\n startWildcard: match[2] === \"%\",\n filterText: match[3] ?? \"\",\n endWildcard: match[4] === \"%\",\n };\n};\n\nconst handleVoidFilter = (\n filterText: string,\n filterExpression: string,\n operator: string | undefined,\n value: string,\n): boolean | null => {\n if (filterText === \"\" && filterExpression.includes(\"''\")) {\n if (operator === \"!\") {\n return value !== \"\";\n }\n return value === \"\";\n }\n return null;\n};\n\nconst convertToTypedValues = (\n value: string,\n filterText: string,\n obj: { t: string; p: string; k: string },\n webupManagerData: WebupManagerData,\n): TypedValues => {\n let typedValue: string | Date | number = value;\n let typedFilter: string | Date | number = filterText;\n let isTypedComparison = false;\n\n if (\n obj &&\n objectsIsNumber(obj) &&\n !Number.isNaN(mathNumberify(filterText, webupManagerData.mathLocale))\n ) {\n // Convert to numbers for numeric comparison\n typedValue = parseFloat(value);\n typedFilter = mathNumberify(filterText, webupManagerData.mathLocale, true);\n\n // If parsing fails, treat as 0 for comparison\n if (isNaN(typedValue)) typedValue = 0;\n if (isNaN(typedFilter)) typedFilter = 0;\n isTypedComparison = true;\n } else if (\n obj &&\n objectsIsDate(obj) &&\n datesIsIsoDate(value) &&\n parseDateByLocale(filterText, webupManagerData.datesLocale)\n ) {\n // Convert to Date objects for date comparison\n typedValue = new Date(value);\n typedValue.setHours(0, 0, 0, 0);\n typedFilter =\n parseDateByLocale(filterText, webupManagerData.datesLocale) ?? filterText;\n isTypedComparison = true;\n }\n\n // If conversion to typed comparison failed, fallback to string comparison\n if (!isTypedComparison) {\n typedFilter = filterText;\n switch (true) {\n case objectsIsDate(obj):\n typedValue = datesFormat(value, webupManagerData.datesLocale);\n break;\n case objectsIsNumber(obj):\n typedValue = mathFormat(\n parseFloat(value),\n null as unknown as string,\n webupManagerData.mathLocale,\n );\n break;\n default:\n typedValue = value;\n }\n }\n\n return { typedValue, typedFilter, isTypedComparison };\n};\n\nconst handleComparisonOperator = (\n operator: string | undefined,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n): boolean | null => {\n if (!operator || ![\">\", \">=\", \"<\", \"<=\"].includes(operator)) {\n return null;\n }\n\n switch (operator) {\n case \">\":\n return typedValue > typedFilter;\n case \">=\":\n return typedValue >= typedFilter;\n case \"<\":\n return typedValue < typedFilter;\n case \"<=\":\n return typedValue <= typedFilter;\n default:\n return null;\n }\n};\n\nconst handleNegationOperator = (\n value: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean => {\n // For numeric or date types, use typed comparison\n if (isTypedComparison) {\n const returnValue = typedValue.valueOf() !== typedFilter.valueOf();\n console.log(typedValue.valueOf(), typedFilter.valueOf(), returnValue);\n return returnValue;\n }\n\n // Match negation for strings\n if (startWildcard && endWildcard) {\n return !value.includes(filterText);\n }\n if (startWildcard) {\n return !value.endsWith(filterText);\n }\n if (endWildcard) {\n return !value.startsWith(filterText);\n }\n\n // Exact match negation\n return value !== filterText;\n};\n\nconst handleWildcardMatch = (\n value: string,\n filterText: string,\n startWildcard: boolean,\n endWildcard: boolean,\n): boolean | null => {\n if (!startWildcard && !endWildcard) {\n return null;\n }\n\n if (startWildcard && endWildcard) {\n return value.includes(filterText);\n }\n if (startWildcard) {\n return value.endsWith(filterText);\n }\n if (endWildcard) {\n return value.startsWith(filterText);\n }\n\n return null;\n};\n\nconst handleDefaultMatch = (\n value: string,\n filter: string,\n filterText: string,\n typedValue: string | Date | number,\n typedFilter: string | Date | number,\n isTypedComparison: boolean,\n): boolean => {\n if (!isTypedComparison) {\n // Non-typed exact match\n if (filter.startsWith(\"'\") && filter.endsWith(\"'\")) {\n return value === filterText;\n } else {\n return value.toLowerCase().includes(filterText.toLowerCase());\n }\n } else {\n return typedValue.valueOf() === typedFilter.valueOf();\n }\n};\n\nconst isSingleFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData,\n): boolean => {\n if (value == null) value = \"\";\n if (filter == null) filter = \"\";\n\n value = value.trim();\n filter = filter.trim();\n\n // Parse filter expression\n const filterParts = parseFilterExpression(filter);\n if (!filterParts) {\n // fallback: inclusion - Non case sensitive\n return value.toLowerCase().includes(filter.toLowerCase());\n }\n\n const { operator, startWildcard, filterText, endWildcard } = filterParts;\n\n // Handle void filter (empty string with quotes)\n const voidResult = handleVoidFilter(filterText, filter, operator, value);\n if (voidResult !== null) {\n return voidResult;\n }\n\n // Convert to appropriate type based on obj.t\n const { typedValue, typedFilter, isTypedComparison } = convertToTypedValues(\n value,\n filterText,\n obj,\n webupManagerData,\n );\n\n // Handle comparison operators (>, >=, <, <=)\n const comparisonResult = handleComparisonOperator(\n operator,\n typedValue,\n typedFilter,\n );\n if (comparisonResult !== null) {\n return comparisonResult;\n }\n\n // Handle negation operator (!)\n if (operator === \"!\") {\n return handleNegationOperator(\n value,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n startWildcard,\n endWildcard,\n );\n }\n\n // Handle wildcard matching\n const wildcardResult = handleWildcardMatch(\n value,\n filterText,\n startWildcard,\n endWildcard,\n );\n if (wildcardResult !== null) {\n return wildcardResult;\n }\n\n // Default match (exact or inclusion)\n return handleDefaultMatch(\n value,\n filter,\n filterText,\n typedValue,\n typedFilter,\n isTypedComparison,\n );\n};\n\nexport const isFilterMatchValue = (\n value: string,\n filter: string,\n obj: { t: string; p: string; k: string } = { t: \"\", p: \"\", k: \"\" },\n webupManagerData: WebupManagerData = {\n mathLocale: \"it\",\n datesLocale: \"it\",\n themeBackground: \"\",\n },\n): boolean => {\n const filters = filter\n .split(\";\")\n .map(f => f.trim())\n .filter(f => f.length > 0);\n return filters.every(f =>\n isSingleFilterMatchValue(value, f, obj, webupManagerData),\n );\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sme.up/doc-alchemist",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0-20251209090900",
|
|
4
4
|
"description": "Library for generating documents in various formats, including Excel and PDF.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Smeup LAB <info@smeup.com> (https://www.smeup.com/)",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"@eslint/js": "^9.28.0",
|
|
25
25
|
"@types/jest": "^29.5.14",
|
|
26
26
|
"@types/node": "^22.15.30",
|
|
27
|
+
"@types/pdfmake": "^0.2.12",
|
|
27
28
|
"csstype": "^3.1.3",
|
|
28
29
|
"eslint": "^9.28.0",
|
|
29
30
|
"globals": "^16.2.0",
|
|
@@ -44,6 +45,7 @@
|
|
|
44
45
|
"jspdf": "^3.0.1",
|
|
45
46
|
"jspdf-autotable": "^5.0.2",
|
|
46
47
|
"math-expression-evaluator": "^2.0.7",
|
|
47
|
-
"pdf-lib": "^1.17.1"
|
|
48
|
+
"pdf-lib": "^1.17.1",
|
|
49
|
+
"pdfmake": "^0.2.20"
|
|
48
50
|
}
|
|
49
|
-
}
|
|
51
|
+
}
|