diff --git a/.gitignore b/.gitignore index 30561e71..a445cbde 100644 --- a/.gitignore +++ b/.gitignore @@ -103,4 +103,6 @@ dist/ # Temporary folders tmp/ -temp/ \ No newline at end of file +temp/ + +example.docx diff --git a/example/example-node.js b/example/example-node.js index 5f6e4650..77b8b1b0 100644 --- a/example/example-node.js +++ b/example/example-node.js @@ -1,8 +1,8 @@ /* eslint-disable no-console */ -const fs = require('fs'); +import fs from 'fs'; // FIXME: Incase you have the npm package -// const HTMLtoDOCX = require('html-to-docx'); -const HTMLtoDOCX = require('../dist/html-to-docx.umd'); +//import HTMLtoDOCX from 'html-to-docx'; +import HTMLtoDOCX from '../index.js'; const filePath = './example.docx'; diff --git a/index.js b/index.js index fe3b490d..7ddd4fc3 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ /* eslint-disable no-useless-escape */ import JSZip from 'jszip'; -import addFilesToContainer from './src/html-to-docx'; +import addFilesToContainer from './src/html-to-docx.js'; const minifyHTMLString = (htmlString) => { try { diff --git a/package-lock.json b/package-lock.json index decf066e..0fc06333 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,6 @@ "image-size": "^1.0.0", "image-to-base64": "^2.2.0", "jszip": "^3.7.1", - "lodash": "^4.17.21", "mime-types": "^2.1.35", "nanoid": "^3.1.25", "virtual-dom": "^2.1.1", @@ -29,6 +28,7 @@ "@rollup/plugin-commonjs": "^12.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.1.1", + "@rollup/plugin-terser": "^0.4.4", "eslint": "^7.32.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-prettier": "^8.3.0", @@ -36,11 +36,11 @@ "eslint-plugin-prettier": "^4.0.0", "husky": "^7.0.0", "lint-staged": "^11.1.2", + "lodash-es": "^4.17.21", "prettier": "^2.4.1", "rollup": "^2.62.0", "rollup-plugin-cleaner": "^1.0.0", "rollup-plugin-node-builtins": "^2.1.2", - "rollup-plugin-terser": "^7.0.2", "standard-version": "^9.3.1" } }, @@ -435,9 +435,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -449,9 +449,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, "engines": { "node": ">=6.0.0" @@ -467,9 +467,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -477,19 +477,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@oozcitak/dom": { @@ -600,6 +600,37 @@ "rollup": "^2.42.0" } }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-terser/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -3894,20 +3925,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -4427,7 +4444,14 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", @@ -5619,21 +5643,6 @@ "process-es6": "^0.11.2" } }, - "node_modules/rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0" - } - }, "node_modules/rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -5703,15 +5712,6 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -5785,6 +5785,12 @@ "node": ">=8" } }, + "node_modules/smob": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", + "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==", + "dev": true + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6231,13 +6237,13 @@ } }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -6249,9 +6255,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -7001,9 +7007,9 @@ "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -7012,9 +7018,9 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true }, "@jridgewell/set-array": { @@ -7024,9 +7030,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -7034,19 +7040,19 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@oozcitak/dom": { @@ -7129,6 +7135,28 @@ "resolve": "^1.19.0" } }, + "@rollup/plugin-terser": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dev": true, + "requires": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "dependencies": { + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + } + } + }, "@rollup/pluginutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", @@ -9745,17 +9773,6 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - } - }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -10217,7 +10234,14 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true }, "lodash.get": { "version": "4.4.2", @@ -11120,18 +11144,6 @@ "process-es6": "^0.11.2" } }, - "rollup-plugin-terser": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", - "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "jest-worker": "^26.2.1", - "serialize-javascript": "^4.0.0", - "terser": "^5.0.0" - } - }, "rxjs": { "version": "7.5.7", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", @@ -11178,15 +11190,6 @@ "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", "dev": true }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -11245,6 +11248,12 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "smob": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.1.tgz", + "integrity": "sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -11608,21 +11617,21 @@ } }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.21.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.21.0.tgz", + "integrity": "sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "dependencies": { "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "commander": { diff --git a/package.json b/package.json index 8759e561..cfe96777 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,10 @@ "office", "word" ], - "main": "dist/html-to-docx.umd.js", - "module": "dist/html-to-docx.esm.js", + "type": "module", + "module": "index.js", "scripts": { - "test": "npm run build && node example/example-node.js", + "test": "node example/example-node.js", "prerelease": "rollup -c", "release": "standard-version", "lint": "eslint --fix .", @@ -52,6 +52,7 @@ "@rollup/plugin-commonjs": "^12.0.0", "@rollup/plugin-json": "^4.1.0", "@rollup/plugin-node-resolve": "^13.1.1", + "@rollup/plugin-terser": "^0.4.4", "eslint": "^7.32.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-prettier": "^8.3.0", @@ -59,23 +60,22 @@ "eslint-plugin-prettier": "^4.0.0", "husky": "^7.0.0", "lint-staged": "^11.1.2", + "lodash-es": "^4.17.21", "prettier": "^2.4.1", "rollup": "^2.62.0", "rollup-plugin-cleaner": "^1.0.0", "rollup-plugin-node-builtins": "^2.1.2", - "rollup-plugin-terser": "^7.0.2", "standard-version": "^9.3.1" }, "dependencies": { - "@oozcitak/util": "8.3.4", "@oozcitak/dom": "1.15.6", + "@oozcitak/util": "8.3.4", "color-name": "^1.1.4", "html-entities": "^2.3.3", "html-to-vdom": "^0.7.0", "image-size": "^1.0.0", "image-to-base64": "^2.2.0", "jszip": "^3.7.1", - "lodash": "^4.17.21", "mime-types": "^2.1.35", "nanoid": "^3.1.25", "virtual-dom": "^2.1.1", diff --git a/rollup.config.js b/rollup.config.js index 7bb857aa..ea819dc5 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,7 @@ import { nodeResolve as resolve } from '@rollup/plugin-node-resolve'; import json from '@rollup/plugin-json'; import commonjs from '@rollup/plugin-commonjs'; -import { terser } from 'rollup-plugin-terser'; +import terser from '@rollup/plugin-terser'; import cleaner from 'rollup-plugin-cleaner'; import builtins from 'rollup-plugin-node-builtins'; diff --git a/src/constants.js b/src/constants.js index 42c273ed..e2fc8769 100644 --- a/src/constants.js +++ b/src/constants.js @@ -1,4 +1,4 @@ -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; const applicationName = 'html-to-docx'; const defaultOrientation = 'portrait'; diff --git a/src/docx-document.js b/src/docx-document.js index a47d66e6..a6075539 100644 --- a/src/docx-document.js +++ b/src/docx-document.js @@ -13,9 +13,9 @@ import { fontTableXML as fontTableXMLString, genericRelsXML as genericRelsXMLString, generateDocumentTemplate, -} from './schemas'; -import { convertVTreeToXML } from './helpers'; -import namespaces from './namespaces'; +} from './schemas/index.js'; +import { convertVTreeToXML } from './helpers/index.js'; +import namespaces from './namespaces.js'; import { footerType as footerFileType, headerType as headerFileType, @@ -33,9 +33,9 @@ import { documentFileName, imageType, defaultDocumentOptions, -} from './constants'; -import ListStyleBuilder from './utils/list'; -import { fontFamilyToTableObject } from './utils/font-family-conversion'; +} from './constants.js'; +import ListStyleBuilder from './utils/list.js'; +import { fontFamilyToTableObject } from './utils/font-family-conversion.js'; function generateContentTypesFragments(contentTypesXML, type, objects) { if (objects && Array.isArray(objects)) { diff --git a/src/helpers/index.js b/src/helpers/index.js index a9ce16ef..f324234e 100644 --- a/src/helpers/index.js +++ b/src/helpers/index.js @@ -1,3 +1,3 @@ /* eslint-disable import/prefer-default-export */ -export { default as renderDocumentFile } from './render-document-file'; -export { convertVTreeToXML } from './render-document-file'; +export { default as renderDocumentFile } from './render-document-file.js'; +export { convertVTreeToXML } from './render-document-file.js'; diff --git a/src/helpers/render-document-file.js b/src/helpers/render-document-file.js index 1b9eea32..3a61d253 100644 --- a/src/helpers/render-document-file.js +++ b/src/helpers/render-document-file.js @@ -1,10 +1,10 @@ /* eslint-disable no-await-in-loop */ /* eslint-disable no-case-declarations */ import { fragment } from 'xmlbuilder2'; -import VNode from 'virtual-dom/vnode/vnode'; -import VText from 'virtual-dom/vnode/vtext'; -import isVNode from 'virtual-dom/vnode/is-vnode'; -import isVText from 'virtual-dom/vnode/is-vtext'; +import VNode from 'virtual-dom/vnode/vnode.js'; +import VText from 'virtual-dom/vnode/vtext.js'; +import isVNode from 'virtual-dom/vnode/is-vnode.js'; +import isVText from 'virtual-dom/vnode/is-vtext.js'; // eslint-disable-next-line import/no-named-default import { default as HTMLToVDOM } from 'html-to-vdom'; import sizeOf from 'image-size'; @@ -13,11 +13,11 @@ import mimeTypes from 'mime-types'; // FIXME: remove the cyclic dependency // eslint-disable-next-line import/no-cycle -import * as xmlBuilder from './xml-builder'; -import namespaces from '../namespaces'; -import { imageType, internalRelationship } from '../constants'; -import { vNodeHasChildren } from '../utils/vnode'; -import { isValidUrl } from '../utils/url'; +import * as xmlBuilder from './xml-builder.js'; +import namespaces from '../namespaces.js'; +import { imageType, internalRelationship } from '../constants.js'; +import { vNodeHasChildren } from '../utils/vnode.js'; +import { isValidUrl } from '../utils/url.js'; const convertHTML = HTMLToVDOM({ VNode, diff --git a/src/helpers/xml-builder.js b/src/helpers/xml-builder.js index ef4d1d69..8f44ed30 100644 --- a/src/helpers/xml-builder.js +++ b/src/helpers/xml-builder.js @@ -5,15 +5,15 @@ /* eslint-disable no-plusplus */ /* eslint-disable no-else-return */ import { fragment } from 'xmlbuilder2'; -import isVNode from 'virtual-dom/vnode/is-vnode'; -import isVText from 'virtual-dom/vnode/is-vtext'; +import isVNode from 'virtual-dom/vnode/is-vnode.js'; +import isVText from 'virtual-dom/vnode/is-vtext.js'; import colorNames from 'color-name'; -import { cloneDeep } from 'lodash'; +import { cloneDeep } from 'lodash-es'; import imageToBase64 from 'image-to-base64'; import mimeTypes from 'mime-types'; import sizeOf from 'image-size'; -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; import { rgbToHex, hslToHex, @@ -22,7 +22,7 @@ import { hexRegex, hex3Regex, hex3ToHex, -} from '../utils/color-conversion'; +} from '../utils/color-conversion.js'; import { pixelToEMU, pixelRegex, @@ -40,10 +40,10 @@ import { cmRegex, inchRegex, inchToTWIP, -} from '../utils/unit-conversion'; +} from '../utils/unit-conversion.js'; // FIXME: remove the cyclic dependency // eslint-disable-next-line import/no-cycle -import { buildImage, buildList } from './render-document-file'; +import { buildImage, buildList } from './render-document-file.js'; import { defaultFont, hyperlinkType, @@ -52,9 +52,9 @@ import { verticalAlignValues, imageType, internalRelationship, -} from '../constants'; -import { vNodeHasChildren } from '../utils/vnode'; -import { isValidUrl } from '../utils/url'; +} from '../constants.js'; +import { vNodeHasChildren } from '../utils/vnode.js'; +import { isValidUrl } from '../utils/url.js'; // eslint-disable-next-line consistent-return const fixupColorCode = (colorCodeString) => { diff --git a/src/html-to-docx.js b/src/html-to-docx.js index e311e4e7..1c2f912a 100644 --- a/src/html-to-docx.js +++ b/src/html-to-docx.js @@ -1,13 +1,13 @@ import { create } from 'xmlbuilder2'; -import VNode from 'virtual-dom/vnode/vnode'; -import VText from 'virtual-dom/vnode/vtext'; +import VNode from 'virtual-dom/vnode/vnode.js'; +import VText from 'virtual-dom/vnode/vtext.js'; // eslint-disable-next-line import/no-named-default import { default as HTMLToVDOM } from 'html-to-vdom'; import { decode } from 'html-entities'; -import { relsXML } from './schemas'; -import DocxDocument from './docx-document'; -import { renderDocumentFile } from './helpers'; +import { relsXML } from './schemas/index.js'; +import DocxDocument from './docx-document.js'; +import { renderDocumentFile } from './helpers/index.js'; import { pixelRegex, pixelToTWIP, @@ -17,7 +17,7 @@ import { inchToTWIP, pointRegex, pointToHIP, -} from './utils/unit-conversion'; +} from './utils/unit-conversion.js'; import { defaultDocumentOptions, defaultHTMLString, @@ -32,7 +32,7 @@ import { wordFolder, themeFolder, themeType, -} from './constants'; +} from './constants.js'; const convertHTML = HTMLToVDOM({ VNode, diff --git a/src/schemas/core.js b/src/schemas/core.js index 466c7a6c..ed8cb45e 100644 --- a/src/schemas/core.js +++ b/src/schemas/core.js @@ -1,5 +1,5 @@ -import namespaces from '../namespaces'; -import { applicationName } from '../constants'; +import namespaces from '../namespaces.js'; +import { applicationName } from '../constants.js'; const generateCoreXML = ( title = '', diff --git a/src/schemas/document-rels.js b/src/schemas/document-rels.js index a828c0dd..a7a9acc3 100644 --- a/src/schemas/document-rels.js +++ b/src/schemas/document-rels.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const documentRelsXML = ` diff --git a/src/schemas/document.template.js b/src/schemas/document.template.js index 9e718dd2..4b1b0e0d 100644 --- a/src/schemas/document.template.js +++ b/src/schemas/document.template.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const generateDocumentTemplate = (width, height, orientation, margins) => ` diff --git a/src/schemas/font-table.js b/src/schemas/font-table.js index 374753df..f20fe67c 100644 --- a/src/schemas/font-table.js +++ b/src/schemas/font-table.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; // Font data available here: https://fossies.org/linux/pandoc/data/docx/word/fontTable.xml const fontTableXML = ` diff --git a/src/schemas/index.js b/src/schemas/index.js index c06d8a14..6ab1f56e 100644 --- a/src/schemas/index.js +++ b/src/schemas/index.js @@ -1,12 +1,12 @@ -export { default as contentTypesXML } from './content-types'; -export { default as generateCoreXML } from './core'; -export { default as documentRelsXML } from './document-rels'; -export { default as relsXML } from './rels'; -export { default as generateNumberingXMLTemplate } from './numbering'; -export { default as generateStylesXML } from './styles'; -export { default as fontTableXML } from './font-table'; -export { default as generateThemeXML } from './theme'; -export { default as settingsXML } from './settings'; -export { default as webSettingsXML } from './web-settings'; -export { default as genericRelsXML } from './generic-rels'; -export { default as generateDocumentTemplate } from './document.template'; +export { default as contentTypesXML } from './content-types.js'; +export { default as generateCoreXML } from './core.js'; +export { default as documentRelsXML } from './document-rels.js'; +export { default as relsXML } from './rels.js'; +export { default as generateNumberingXMLTemplate } from './numbering.js'; +export { default as generateStylesXML } from './styles.js'; +export { default as fontTableXML } from './font-table.js'; +export { default as generateThemeXML } from './theme.js'; +export { default as settingsXML } from './settings.js'; +export { default as webSettingsXML } from './web-settings.js'; +export { default as genericRelsXML } from './generic-rels.js'; +export { default as generateDocumentTemplate } from './document.template.js'; diff --git a/src/schemas/numbering.js b/src/schemas/numbering.js index 87121934..46a6a63c 100644 --- a/src/schemas/numbering.js +++ b/src/schemas/numbering.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const generateNumberingXMLTemplate = () => ` diff --git a/src/schemas/rels.js b/src/schemas/rels.js index 98d16934..5692e0a3 100644 --- a/src/schemas/rels.js +++ b/src/schemas/rels.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const relsXML = ` diff --git a/src/schemas/settings.js b/src/schemas/settings.js index d527c04d..10c20207 100644 --- a/src/schemas/settings.js +++ b/src/schemas/settings.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const settingsXML = ` diff --git a/src/schemas/styles.js b/src/schemas/styles.js index eec1a444..784a98e2 100644 --- a/src/schemas/styles.js +++ b/src/schemas/styles.js @@ -1,5 +1,5 @@ -import { defaultFont, defaultFontSize, defaultLang } from '../constants'; -import namespaces from '../namespaces'; +import { defaultFont, defaultFontSize, defaultLang } from '../constants.js'; +import namespaces from '../namespaces.js'; const generateStylesXML = ( font = defaultFont, diff --git a/src/schemas/theme.js b/src/schemas/theme.js index 4263528d..2a03ed10 100644 --- a/src/schemas/theme.js +++ b/src/schemas/theme.js @@ -1,4 +1,4 @@ -import { defaultFont } from '../constants'; +import { defaultFont } from '../constants.js'; const generateThemeXML = (font = defaultFont) => ` diff --git a/src/schemas/web-settings.js b/src/schemas/web-settings.js index d2ab93ec..39a77bc8 100644 --- a/src/schemas/web-settings.js +++ b/src/schemas/web-settings.js @@ -1,4 +1,4 @@ -import namespaces from '../namespaces'; +import namespaces from '../namespaces.js'; const webSettingsXML = `