From 222a25e4e2527a29ef2bee3401f22f84b9d846b8 Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Tue, 18 Jul 2023 01:53:56 +0100 Subject: [PATCH 1/4] Compile umd version as .js format --- demo/browser-demo.html | 2 +- package-lock.json | 11 ----------- package.json | 5 ++--- vite.config.ts | 20 +++++++++++++++++++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/demo/browser-demo.html b/demo/browser-demo.html index 2c6418c424..66a7476ff4 100644 --- a/demo/browser-demo.html +++ b/demo/browser-demo.html @@ -1,7 +1,7 @@ - + diff --git a/package-lock.json b/package-lock.json index cb5b638034..457d12aebb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,6 @@ "license": "MIT", "dependencies": { "@types/node": "^20.3.1", - "fflate": "^0.8.0", "jszip": "^3.10.1", "nanoid": "^4.0.2", "xml": "^1.0.1", @@ -5975,11 +5974,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fflate": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.0.tgz", - "integrity": "sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==" - }, "node_modules/figlet": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", @@ -16784,11 +16778,6 @@ "reusify": "^1.0.4" } }, - "fflate": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.0.tgz", - "integrity": "sha512-FAdS4qMuFjsJj6XHbBaZeXOgaypXp8iw/Tpyuq/w3XA41jjLHT8NPA+n7czH/DDhdncq0nAyDZmPeWXh2qmdIg==" - }, "figlet": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.2.tgz", diff --git a/package.json b/package.json index 6f9be4d371..87b4feed65 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,13 @@ "version": "8.2.0", "description": "Easily generate .docx files with JS/TS with a nice declarative API. Works for Node and on the Browser.", "type": "module", - "main": "build/index.umd.cjs", + "main": "build/index.umd.js", "module": "./build/index.js", "types": "./build/index.d.ts", "exports": { ".": { "browser": { - "default": "./build/index.umd.cjs" + "default": "./build/index.umd.js" }, "require": "./build/index.cjs", "types": "./build/index.d.ts", @@ -58,7 +58,6 @@ ], "dependencies": { "@types/node": "^20.3.1", - "fflate": "^0.8.0", "jszip": "^3.10.1", "nanoid": "^4.0.2", "xml": "^1.0.1", diff --git a/vite.config.ts b/vite.config.ts index 84187d6a77..b1309ee96b 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -26,7 +26,25 @@ export default defineConfig({ lib: { entry: [resolve(__dirname, "src/index.ts")], name: "docx", - fileName: "index", + fileName: (d) => { + if (d === "umd") { + return "index.umd.js"; + } + + if (d === "cjs") { + return "index.cjs"; + } + + if (d === "es") { + return "index.js"; + } + + if (d === "iife") { + return "index.iife.js"; + } + + return "unknown"; + }, formats: ["iife", "es", "cjs", "umd"], }, outDir: resolve(__dirname, "build"), From d94348f5caf749290cbe86308391734d01a919cb Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Tue, 18 Jul 2023 20:49:43 +0100 Subject: [PATCH 2/4] Export correct type in patchDocument --- src/patcher/from-docx.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/patcher/from-docx.ts b/src/patcher/from-docx.ts index 3990a7b93d..becfccf381 100644 --- a/src/patcher/from-docx.ts +++ b/src/patcher/from-docx.ts @@ -53,7 +53,7 @@ export interface PatchDocumentOptions { const imageReplacer = new ImageReplacer(); -export const patchDocument = async (data: InputDataType, options: PatchDocumentOptions): Promise => { +export const patchDocument = async (data: InputDataType, options: PatchDocumentOptions): Promise => { const zipContent = await JSZip.loadAsync(data); const contexts = new Map(); const file = { @@ -213,7 +213,7 @@ export const patchDocument = async (data: InputDataType, options: PatchDocumentO } return zip.generateAsync({ - type: "nodebuffer", + type: "uint8array", mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", compression: "DEFLATE", }); From 9a9a2019f6e3584939f9052fab1c28ee7471081d Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Tue, 18 Jul 2023 21:06:35 +0100 Subject: [PATCH 3/4] Do not polyfill buffer --- vite.config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/vite.config.ts b/vite.config.ts index b1309ee96b..c40d183673 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,6 +10,9 @@ export default defineConfig({ dts(), nodePolyfills({ exclude: ["fs"], + globals: { + Buffer: false, + }, protocolImports: true, }), ], From 0c51082bb9b2b81fa89e9eb26dba8461ba54a78c Mon Sep 17 00:00:00 2001 From: Dolan Miu Date: Tue, 18 Jul 2023 21:07:19 +0100 Subject: [PATCH 4/4] Add logging output to demo --- demo/index.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/demo/index.ts b/demo/index.ts index 0f8a77e19e..e705914ffd 100644 --- a/demo/index.ts +++ b/demo/index.ts @@ -5,9 +5,9 @@ import inquirer from "inquirer"; import { $ } from "execa"; export type Answers = { - type: "list" | "number"; - demoNumber?: number; - demoFile?: number; + readonly type: "list" | "number"; + readonly demoNumber?: number; + readonly demoFile?: number; }; const dir = "./demo"; @@ -15,8 +15,7 @@ const fileNames = fs.readdirSync(dir); const keys = fileNames.map((f) => path.parse(f).name); const getFileNumber = (file: string): number => { - const nameParts = file.split("-"); - const firstPart = nameParts[0]; + const [firstPart] = file.split("-"); return Number(firstPart); }; @@ -35,15 +34,15 @@ const answers = await inquirer.prompt([ name: "demoFile", message: "What demo do you wish to run?", choices: demoFiles, - filter: (input) => parseInt(input.split("-")[0]), - when: (answers) => answers.type === "list", + filter: (input) => parseInt(input.split("-")[0], 10), + when: (a) => a.type === "list", }, { type: "number", name: "demoNumber", message: "What demo do you wish to run? (Enter a number)", default: 1, - when: (answers) => answers.type === "number", + when: (a) => a.type === "number", }, ]); @@ -56,6 +55,7 @@ if (files.length === 0) { const filePath = path.join(dir, files[0]); console.log(`Running demo ${demoNumber}: ${files[0]}`); - await $`ts-node --project demo/tsconfig.json ${filePath}`; + const { stdout } = await $`ts-node --project demo/tsconfig.json ${filePath}`; + console.log(stdout); console.log("Successfully created document!"); }