@sme.up/doc-alchemist 1.2.0-SNAPSHOT-20250702130625 → 1.2.0-SNAPSHOT-20250704074443
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 +280 -28
- package/dist/converters/excel/commons.d.ts +2 -1
- package/dist/converters/excel/commons.js +54 -4
- package/dist/converters/excel/commons.js.map +1 -1
- package/dist/converters/excel/matrix-converter.js +12 -10
- package/dist/converters/excel/matrix-converter.js.map +1 -1
- package/dist/converters/pdf/autotable-renderer.d.ts +3 -0
- package/dist/converters/pdf/autotable-renderer.js +89 -0
- package/dist/converters/pdf/autotable-renderer.js.map +1 -0
- package/dist/converters/pdf/cover-renderer.d.ts +1 -0
- package/dist/converters/pdf/cover-renderer.js +26 -0
- package/dist/converters/pdf/cover-renderer.js.map +1 -0
- package/dist/converters/pdf/formulas-helper.d.ts +4 -0
- package/dist/converters/pdf/formulas-helper.js +55 -19
- package/dist/converters/pdf/formulas-helper.js.map +1 -1
- package/dist/converters/pdf/matrix-converter.d.ts +12 -0
- package/dist/converters/pdf/matrix-converter.js +36 -129
- package/dist/converters/pdf/matrix-converter.js.map +1 -1
- package/dist/converters/pdf/pdf-converter.types.d.ts +3 -2
- package/dist/converters/pdf/pdf-converter.types.js.map +1 -1
- package/dist/converters/pdf-converter.js +23 -1
- package/dist/converters/pdf-converter.js.map +1 -1
- package/dist/utils/commons-utility.d.ts +21 -1
- package/dist/utils/commons-utility.js +31 -8
- package/dist/utils/commons-utility.js.map +1 -1
- package/dist/utils/datastructure-utility.js +2 -2
- package/dist/utils/datastructure-utility.js.map +1 -1
- package/dist/utils/math-utility.d.ts +1 -0
- package/dist/utils/math-utility.js +9 -0
- package/dist/utils/math-utility.js.map +1 -1
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"math-utility.js","sourceRoot":"","sources":["../../src/utils/math-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRegExpFromString } from \"./regex-utility.js\";\n\nexport const mathCountDecimals = (value: number): number => {\n if (Math.floor(value) === value) return 0;\n const stringValue = value.toString().split(\".\")[1];\n if (stringValue) {\n return stringValue.length ?? 0;\n } else {\n return 0;\n }\n};\n\nexport const mathNumberStringToFormattedString = (\n input: string,\n decimals: number,\n type: string,\n locale: string,\n decSeparator?: string,\n): string => {\n let value = mathNumberToFormattedString(\n mathNumberifySafe(input, locale),\n decimals,\n type,\n locale,\n );\n\n if (!decSeparator) {\n return value;\n }\n const browserDecSeparator = mathDecimalSeparator(locale);\n if (browserDecSeparator == decSeparator) {\n return value;\n }\n const browserGroupSeparator = mathGroupSeparator(locale);\n value = value.replace(getRegExpFromString(browserGroupSeparator, \"g\"), \"\");\n value = value.replace(\n getRegExpFromString(browserDecSeparator, \"g\"),\n decSeparator,\n );\n\n return value;\n};\n\nexport const mathNumberToFormattedString = (\n input: number,\n decimals: number,\n type: string,\n locale: string,\n): string => {\n if (input == null || isNaN(input)) {\n return \"\";\n }\n if (decimals == null || decimals == -1) {\n decimals = mathCountDecimals(input);\n }\n let nstr = mathFormat(input, locale, mathCreateFormatPattern(true, decimals));\n nstr = nstr + mathGetNumericValueSuffix(type);\n return nstr;\n};\n\nexport const mathNumberify = (\n input: string | number,\n locale: string,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string,\n): number => {\n if (typeof input != \"number\") {\n if (type) {\n const suffix = mathGetNumericValueSuffix(type);\n if (suffix != \"\") {\n input = input\n .replace(getRegExpFromString(suffix.trim(), \"g\"), \"\")\n .trim();\n }\n }\n if (!decFmt) {\n decFmt = inputIsLocalized ? mathDecimalSeparator(locale) : \".\";\n }\n const groupSeparator = decFmt == \".\" ? \",\" : \".\";\n input = input.replace(getRegExpFromString(groupSeparator, \"g\"), \"\");\n if (decFmt != \".\") {\n input = input.replace(getRegExpFromString(decFmt, \"g\"), \".\");\n }\n\n input = Number(input);\n }\n\n const n = Number(input);\n if (isNaN(n)) {\n return NaN;\n }\n return n;\n};\n\nexport const mathNumberifySafe = (\n input: string,\n locale: string,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string,\n): number => {\n if (!input || input == null || input.trim() == \"\") {\n input = \"0\";\n }\n return mathNumberify(input, locale, inputIsLocalized, type, decFmt);\n};\n\nexport const mathDecimalSeparator = (locale: string): string => {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n const decimalPart = Intl.NumberFormat(locale)\n .formatToParts(numberWithGroupAndDecimalSeparator)\n .find(part => part.type === \"decimal\");\n return decimalPart ? decimalPart.value : \".\";\n};\n\nexport const mathGroupSeparator = (locale: string): string => {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n\n const parts = Intl.NumberFormat(locale).formatToParts(\n numberWithGroupAndDecimalSeparator,\n );\n\n const groupPart = parts.find(part => part.type === \"group\");\n\n if (!groupPart) {\n /** for some reason, today 19/03/2025 on US OS (mac and github), group is not present in parts!!! */\n const decimalPart = parts.find(part => part.type === \"decimal\");\n const decimalPartValue = decimalPart ? decimalPart.value : \".\";\n return decimalPartValue === \".\" ? \",\" : \".\";\n }\n return groupPart.value;\n};\n\nexport const mathFormat = (\n input: string | number,\n locale: string,\n format?: string,\n inputIsLocalized?: boolean,\n): string => {\n const n = mathNumberify(input, locale, inputIsLocalized);\n if (!format) {\n const positiveN = Math.abs(n);\n const decimals = positiveN - Math.floor(positiveN);\n if (decimals) {\n format = \"0,0.00\";\n } else {\n format = \"0,0\";\n }\n }\n const options = mathParseNumberFormat(format);\n return new Intl.NumberFormat(locale, options).format(n);\n};\n\nconst mathParseNumberFormat = (format: string): Intl.NumberFormatOptions => {\n // Example format strings: '0,0.00', '0,0', '0.000', ...\n // This parser is simplistic; it only checks for comma group\n // and counts how many 0's come after '.' to set decimal digits.\n const options: Intl.NumberFormatOptions = {};\n\n // If there's a comma in the integer part, enable grouping\n if (format.includes(\",\")) {\n options.useGrouping = true;\n } else {\n options.useGrouping = false;\n }\n\n // Count decimals from the part after '.'\n const decimalIndex = format.indexOf(\".\");\n if (decimalIndex > -1) {\n const decimals = format.substring(decimalIndex + 1);\n const digitCount = (decimals.match(/0/g) || []).length;\n options.minimumFractionDigits = digitCount;\n options.maximumFractionDigits = digitCount;\n } else {\n // If no dot, no decimal digits\n options.minimumFractionDigits = 0;\n options.maximumFractionDigits = 0;\n }\n\n return options;\n};\n\nexport const mathCreateFormatPattern = (\n thousandPoint?: boolean,\n decimals?: number,\n): string => {\n let format = \"0\";\n if (thousandPoint) {\n format += \",0\";\n }\n if (decimals && decimals > 0) {\n format += \".\";\n for (let i = 0; i < decimals; i++) {\n format += \"0\";\n }\n }\n return format;\n};\n\nexport const mathGetNumericValueSuffix = (type: string): string => {\n type = type.toUpperCase();\n let nstr = \"\";\n if (type == \"P\") {\n nstr = \" %\";\n } else if (type == \"VE\") {\n nstr = \" €\";\n } else if (type == \"VL\") {\n nstr = \" £\";\n } else if (type == \"VV\") {\n nstr = \" $\";\n }\n return nstr;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"math-utility.js","sourceRoot":"","sources":["../../src/utils/math-utility.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRegExpFromString } from \"./regex-utility.js\";\n\nexport const mathCountDecimals = (value: number): number => {\n if (Math.floor(value) === value) return 0;\n const stringValue = value.toString().split(\".\")[1];\n if (stringValue) {\n return stringValue.length ?? 0;\n } else {\n return 0;\n }\n};\n\nexport const mathNumberStringToFormattedString = (\n input: string,\n decimals: number,\n type: string,\n locale: string,\n decSeparator?: string,\n): string => {\n let value = mathNumberToFormattedString(\n mathNumberifySafe(input, locale),\n decimals,\n type,\n locale,\n );\n\n if (!decSeparator) {\n return value;\n }\n const browserDecSeparator = mathDecimalSeparator(locale);\n if (browserDecSeparator == decSeparator) {\n return value;\n }\n const browserGroupSeparator = mathGroupSeparator(locale);\n value = value.replace(getRegExpFromString(browserGroupSeparator, \"g\"), \"\");\n value = value.replace(\n getRegExpFromString(browserDecSeparator, \"g\"),\n decSeparator,\n );\n\n return value;\n};\n\nexport const mathNumberToFormattedString = (\n input: number,\n decimals: number,\n type: string,\n locale: string,\n): string => {\n if (input == null || isNaN(input)) {\n return \"\";\n }\n if (decimals == null || decimals == -1) {\n decimals = mathCountDecimals(input);\n }\n let nstr = mathFormat(input, locale, mathCreateFormatPattern(true, decimals));\n nstr = nstr + mathGetNumericValueSuffix(type);\n return nstr;\n};\n\nexport const mathNumberify = (\n input: string | number,\n locale: string,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string,\n): number => {\n if (typeof input != \"number\") {\n if (type) {\n const suffix = mathGetNumericValueSuffix(type);\n if (suffix != \"\") {\n input = input\n .replace(getRegExpFromString(suffix.trim(), \"g\"), \"\")\n .trim();\n }\n }\n if (!decFmt) {\n decFmt = inputIsLocalized ? mathDecimalSeparator(locale) : \".\";\n }\n const groupSeparator = decFmt == \".\" ? \",\" : \".\";\n input = input.replace(getRegExpFromString(groupSeparator, \"g\"), \"\");\n if (decFmt != \".\") {\n input = input.replace(getRegExpFromString(decFmt, \"g\"), \".\");\n }\n\n input = Number(input);\n }\n\n const n = Number(input);\n if (isNaN(n)) {\n return NaN;\n }\n return n;\n};\n\nexport const mathNumberifySafe = (\n input: string,\n locale: string,\n inputIsLocalized?: boolean,\n type?: string,\n decFmt?: string,\n): number => {\n if (!input || input == null || input.trim() == \"\") {\n input = \"0\";\n }\n return mathNumberify(input, locale, inputIsLocalized, type, decFmt);\n};\n\nexport const mathDecimalSeparator = (locale: string): string => {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n const decimalPart = Intl.NumberFormat(locale)\n .formatToParts(numberWithGroupAndDecimalSeparator)\n .find(part => part.type === \"decimal\");\n return decimalPart ? decimalPart.value : \".\";\n};\n\nexport const mathGroupSeparator = (locale: string): string => {\n const numberWithGroupAndDecimalSeparator = 1000.1;\n\n const parts = Intl.NumberFormat(locale).formatToParts(\n numberWithGroupAndDecimalSeparator,\n );\n\n const groupPart = parts.find(part => part.type === \"group\");\n\n if (!groupPart) {\n /** for some reason, today 19/03/2025 on US OS (mac and github), group is not present in parts!!! */\n const decimalPart = parts.find(part => part.type === \"decimal\");\n const decimalPartValue = decimalPart ? decimalPart.value : \".\";\n return decimalPartValue === \".\" ? \",\" : \".\";\n }\n return groupPart.value;\n};\n\nexport const mathFormat = (\n input: string | number,\n locale: string,\n format?: string,\n inputIsLocalized?: boolean,\n): string => {\n const n = mathNumberify(input, locale, inputIsLocalized);\n if (!format) {\n const positiveN = Math.abs(n);\n const decimals = positiveN - Math.floor(positiveN);\n if (decimals) {\n format = \"0,0.00\";\n } else {\n format = \"0,0\";\n }\n }\n const options = mathParseNumberFormat(format);\n return new Intl.NumberFormat(locale, options).format(n);\n};\n\nconst mathParseNumberFormat = (format: string): Intl.NumberFormatOptions => {\n // Example format strings: '0,0.00', '0,0', '0.000', ...\n // This parser is simplistic; it only checks for comma group\n // and counts how many 0's come after '.' to set decimal digits.\n const options: Intl.NumberFormatOptions = {};\n\n // If there's a comma in the integer part, enable grouping\n if (format.includes(\",\")) {\n options.useGrouping = true;\n } else {\n options.useGrouping = false;\n }\n\n // Count decimals from the part after '.'\n const decimalIndex = format.indexOf(\".\");\n if (decimalIndex > -1) {\n const decimals = format.substring(decimalIndex + 1);\n const digitCount = (decimals.match(/0/g) || []).length;\n options.minimumFractionDigits = digitCount;\n options.maximumFractionDigits = digitCount;\n } else {\n // If no dot, no decimal digits\n options.minimumFractionDigits = 0;\n options.maximumFractionDigits = 0;\n }\n\n return options;\n};\n\nexport const mathCreateFormatPattern = (\n thousandPoint?: boolean,\n decimals?: number,\n): string => {\n let format = \"0\";\n if (thousandPoint) {\n format += \",0\";\n }\n if (decimals && decimals > 0) {\n format += \".\";\n for (let i = 0; i < decimals; i++) {\n format += \"0\";\n }\n }\n return format;\n};\n\nexport const mathGetNumericValueSuffix = (type: string): string => {\n type = type.toUpperCase();\n let nstr = \"\";\n if (type == \"P\") {\n nstr = \" %\";\n } else if (type == \"VE\") {\n nstr = \" €\";\n } else if (type == \"VL\") {\n nstr = \" £\";\n } else if (type == \"VV\") {\n nstr = \" $\";\n }\n return nstr;\n};\n\nexport const calculateExpression = (expression: string): number | string => {\n try {\n const safeFormula = expression.replace(/--/g, \"- -\");\n return Function(`\"use strict\"; return (${safeFormula})`)();\n } catch {\n return expression;\n }\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sme.up/doc-alchemist",
|
|
3
|
-
"version": "1.2.0-SNAPSHOT-
|
|
3
|
+
"version": "1.2.0-SNAPSHOT-20250704074443",
|
|
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/)",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"echarts": "^5.6.0",
|
|
43
43
|
"exceljs": "^4.4.0",
|
|
44
44
|
"jspdf": "^3.0.1",
|
|
45
|
-
"jspdf-autotable": "^5.0.2"
|
|
45
|
+
"jspdf-autotable": "^5.0.2",
|
|
46
|
+
"pdf-lib": "^1.17.1"
|
|
46
47
|
}
|
|
47
48
|
}
|