diff --git a/demo/74-nodejs-stream.ts b/demo/74-nodejs-stream.ts new file mode 100644 index 0000000000..4dea1f7524 --- /dev/null +++ b/demo/74-nodejs-stream.ts @@ -0,0 +1,31 @@ +// Simple example to add text to a document +// Import from 'docx' rather than '../build' if you install from npm +import * as fs from "fs"; +import { Document, Packer, Paragraph, TextRun } from "../build"; + +const doc = new Document({ + sections: [ + { + properties: {}, + children: [ + new Paragraph({ + children: [ + new TextRun("Hello World"), + new TextRun({ + text: "Foo Bar", + bold: true, + }), + new TextRun({ + text: "\tGithub is the best", + bold: true, + }), + ], + }), + ], + }, + ], +}); + +Packer.toStream(doc).then((stream) => { + stream.pipe(fs.createWriteStream("My Document.docx")); +}); diff --git a/package-lock.json b/package-lock.json index fe80f66bca..3d65052419 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/chai": "^4.2.15", - "@types/glob": "^7.1.4", + "@types/glob": "^8.0.0", "@types/mocha": "^9.0.0", "@types/prompt": "^1.1.1", "@types/request-promise": "^4.1.42", @@ -491,19 +491,19 @@ } }, "node_modules/@cspell/cspell-bundled-dicts": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.8.1.tgz", - "integrity": "sha512-hZCAtUeEsQ16f9SvruKYB9nFDjt+VXtZ/yJHONo6+dev9A6JpsUGWGL2oja6fD4j+mvFoMc/Dm1wzhtTYeSvhA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.8.2.tgz", + "integrity": "sha512-E4sNdcG23nj0ztiI69PeU+ALL6DgL3GoqVZuLhpRwgRL4RN7n7FuUJdJ91cgpNvx50+HhdyxFqEpKRigD3yeNQ==", "dev": true, "dependencies": { "@cspell/dict-ada": "^2.0.1", "@cspell/dict-aws": "^2.0.0", "@cspell/dict-bash": "^2.0.4", - "@cspell/dict-companies": "^2.0.11", + "@cspell/dict-companies": "^2.0.13", "@cspell/dict-cpp": "^3.2.1", "@cspell/dict-cryptocurrencies": "^2.0.0", "@cspell/dict-csharp": "^3.0.1", - "@cspell/dict-css": "^2.0.1", + "@cspell/dict-css": "^2.1.0", "@cspell/dict-dart": "^1.1.1", "@cspell/dict-django": "^2.0.0", "@cspell/dict-docker": "^1.1.1", @@ -517,7 +517,7 @@ "@cspell/dict-git": "^1.0.1", "@cspell/dict-golang": "^3.0.1", "@cspell/dict-haskell": "^2.0.1", - "@cspell/dict-html": "^3.1.0", + "@cspell/dict-html": "^3.3.2", "@cspell/dict-html-symbol-entities": "^3.0.0", "@cspell/dict-java": "^3.0.7", "@cspell/dict-latex": "^2.0.9", @@ -533,7 +533,7 @@ "@cspell/dict-ruby": "^2.0.2", "@cspell/dict-rust": "^2.0.1", "@cspell/dict-scala": "^2.0.0", - "@cspell/dict-software-terms": "^2.2.3", + "@cspell/dict-software-terms": "^2.2.7", "@cspell/dict-sql": "^1.0.4", "@cspell/dict-swift": "^1.0.3", "@cspell/dict-typescript": "^2.0.1", @@ -544,27 +544,27 @@ } }, "node_modules/@cspell/cspell-pipe": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.8.1.tgz", - "integrity": "sha512-FbpYK58PlrGIOjZxu51/dFkFv7iaPhKWrkQ/q/9vW82g2ovouFeql0S7X9g4Dnn75Pd5P/pYPgFubCSawtp3pA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.8.2.tgz", + "integrity": "sha512-9GXBibZ8bcU+2KhX6WTEASPhIhsqdFYITwBJ39jfUl2MiPgpvjYxQKrAgnZOm5WpRzCUxoelU2SVaoI+rn/Stg==", "dev": true, "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-service-bus": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.8.1.tgz", - "integrity": "sha512-lpr+5TntZdneLxmhSGT3pKOsxLJ40KahJDyNqM+91ssqIczeqrm7jZ2hZCdx4XqQM2dOAMvsB0ZyZuuDjQ+ptg==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.8.2.tgz", + "integrity": "sha512-YvEauGv/QZb5xRiKKvwiXz7lj7twc5TgispnujgHYDEt6OcXiWjYj676WzKkGJ2yM+QfurGJCCvOb2L1HQ6rYg==", "dev": true, "engines": { "node": ">=14" } }, "node_modules/@cspell/cspell-types": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.8.1.tgz", - "integrity": "sha512-Yo/SJZEG3SbcIfxqdQat70LW5SwXoox2L+G8y0VCtdYu+hFr5ouSUInlfItgiFBgDKNSF0w1u2oOZeNkFZ1Aiw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.8.2.tgz", + "integrity": "sha512-jFg+D1L+MkIad2IR+qlnOYIuwqaosbTrtqhpWhbOGMvFQjxMyKg9IVxbmtjDCdRohdBUvRq96rkp0vx1FviiwQ==", "dev": true, "engines": { "node": ">=14" @@ -589,9 +589,9 @@ "dev": true }, "node_modules/@cspell/dict-companies": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.11.tgz", - "integrity": "sha512-8Fw+dviHh3nu9y0jI+7kpObY/C15s4bDzWi5ZJpkAT65z+yZiIr6rxyoCR4vHpT5/TofbaRXFKWHoc/sqUYY2g==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.13.tgz", + "integrity": "sha512-EacGH6Yjd2u+sNRLd6+3jxbzWBSsmF4g52Xfxfv2T48qzRWJ1zqpX89ijihgYTwvZbf8H/6Lu+z1VU4e1gUp0g==", "dev": true }, "node_modules/@cspell/dict-cpp": { @@ -613,9 +613,9 @@ "dev": true }, "node_modules/@cspell/dict-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-2.0.1.tgz", - "integrity": "sha512-8YjD29A8IquPdAsDNF/7KIG1FUYEs1mpKYcBrGPv/CKVlyiQskAxdFZvhWlKzsjDsWxis9+2Q5vR0VGLtgkPzQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-2.1.0.tgz", + "integrity": "sha512-glASAELcGhh4Ru0rTQ4G9mTQxSyPwsZOON/5BYflB6Kks8YC8nUvKrtMCoo5W7CPKPfSEa8zUNctFQ1+IUYDHA==", "dev": true }, "node_modules/@cspell/dict-dart": { @@ -697,9 +697,9 @@ "dev": true }, "node_modules/@cspell/dict-html": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-3.1.0.tgz", - "integrity": "sha512-HD33wqDxaBBDuBRMlXT1sS8v1Oqw3ZjJocEK8a/JQ8s75sSq4zl6iZIcbkzTHFeDfKPmObCES4z5GbgHKNaQtw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-3.3.2.tgz", + "integrity": "sha512-cM5pQSEiqjrdk6cRFLrlLdWNT/J8399f/A6DjwjfYhHrGy0e/Rsjv76HZT0GlE1OqMoq9eG9jdQsfoYYgWTIpQ==", "dev": true }, "node_modules/@cspell/dict-html-symbol-entities": { @@ -793,9 +793,9 @@ "dev": true }, "node_modules/@cspell/dict-software-terms": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.2.3.tgz", - "integrity": "sha512-hpiYrjnGcrSw2q/CiT2bzsB5/OVaK/aOgQvvI6MVnvOk3XzfpAeOr24frrnXTURbuD8pktiRPvAmrTlHrAGCXQ==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.2.7.tgz", + "integrity": "sha512-tNdgfijX4PGIzwWyRQHqEsKEWqNc92HDdURcXBZNw2po7jUh+/FgqBoUgnJXyLastJ9PGX9847j9uNBPfShTgA==", "dev": true }, "node_modules/@cspell/dict-sql": { @@ -1321,9 +1321,9 @@ "dev": true }, "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz", + "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", "dev": true, "dependencies": { "@types/minimatch": "*", @@ -1355,9 +1355,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.7.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", - "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==" + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", @@ -1372,9 +1372,9 @@ "dev": true }, "node_modules/@types/prompt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/prompt/-/prompt-1.1.2.tgz", - "integrity": "sha512-Zc9YzOvjAWxxGY7qo0Q6yINMVVspAa4p68UCzucWMU+GaPujpjwbOwzI38s7Jq01k0GztzLxXlRiFcZf/aeIWA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/prompt/-/prompt-1.1.3.tgz", + "integrity": "sha512-y1fMzb7a/mQs4tynU8agMmV8ptbT0dkgNafrdsoEyLtbCggK5COJ/r5DGcaAHB5kdXTGh+8trHlENlsZkm+tOQ==", "dev": true, "dependencies": { "@types/node": "*", @@ -3182,17 +3182,17 @@ } }, "node_modules/cspell": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.8.1.tgz", - "integrity": "sha512-w+MCy9a7uMu0bwwDuFJy85SbF6pikCc6fzQo3B/hXuu+xrz12TCbjsXsdezTXl9YqPsUDN0A8A6AwHEN7t7GFw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.8.2.tgz", + "integrity": "sha512-WHF8tQXetHgAjyG6f0rDhWXRQllSpZULOIuDZj6PeZyHubuObzsMsW0asDvL8j+EGKXr8NPo4J3vjxahYmSJ+w==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "^6.8.1", + "@cspell/cspell-pipe": "^6.8.2", "chalk": "^4.1.2", "commander": "^9.4.0", - "cspell-gitignore": "^6.8.1", - "cspell-glob": "^6.8.1", - "cspell-lib": "^6.8.1", + "cspell-gitignore": "^6.8.2", + "cspell-glob": "^6.8.2", + "cspell-lib": "^6.8.2", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^6.0.1", "fs-extra": "^10.1.0", @@ -3214,12 +3214,12 @@ } }, "node_modules/cspell-gitignore": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.8.1.tgz", - "integrity": "sha512-GpLr0xoQQHk8IpDGhMY76EyThwSwfAOe5er5iDYlEFRsCp0sUnllXVSJunb4QZIcMl2zbj5lGgPuCvzKcjy3SQ==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.8.2.tgz", + "integrity": "sha512-JoU/rGeGrjSqOMvY5q+bloxtO5Y8QLpJEEIAvHHZ+oTOlExZ/CIAYnO6X3lC6ylNRYc1+I2KEOFa6R0+0OSdVQ==", "dev": true, "dependencies": { - "cspell-glob": "^6.8.1", + "cspell-glob": "^6.8.2", "find-up": "^5.0.0" }, "bin": { @@ -3230,9 +3230,9 @@ } }, "node_modules/cspell-glob": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.8.1.tgz", - "integrity": "sha512-LSiGN9ht4cJdr/zIuh6GlV0soYKPBNvQovhjYPFZZjvCbH7iIkTNxCuXBKylF1iorsH1jrTY88fmNBeYqkwuFA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.8.2.tgz", + "integrity": "sha512-FKy2EIdQKO9b/vP0r8yqxtGQNA8M48DkwMSjW2mN1Qku5wRT8SPByKg87BjK4oztlIiQJoJ6+8OTrWnJwdbpQw==", "dev": true, "dependencies": { "micromatch": "^4.0.5" @@ -3242,13 +3242,13 @@ } }, "node_modules/cspell-grammar": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.8.1.tgz", - "integrity": "sha512-VudDZLEplSlJeQwOtznfhj4gdVpKsQ2+I7zMMx9w4t6newDD8Ts6nUMg9BFC1j5LggBzuKAgo/QNMo5vU9MhGA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.8.2.tgz", + "integrity": "sha512-RHvIsNRDlBYKddKAdob5XT2+odOiO3eJVaw/vt5+CRx1cJSjuaIOyHwXKH2Xl1ioUUhEb9Ew3pg7JktRdzKn5w==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1" + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2" }, "bin": { "cspell-grammar": "bin.js" @@ -3258,12 +3258,12 @@ } }, "node_modules/cspell-io": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.8.1.tgz", - "integrity": "sha512-rk6FOmehbeX4xE3uKNMTl0bZJkcuL17sB807uQCxp5CRfKvdv51nV1Sz7u1gVYiNy6UYBj7VO0V2w7TftqR24A==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.8.2.tgz", + "integrity": "sha512-QpdePUXD8fTM2XuZdeS5ygTeIW9pnaQhTVWBWGbnrYlMn5iV9Jo81dHheHw4InxQJUjhyS/CuxdNGfYZXGJuaQ==", "dev": true, "dependencies": { - "@cspell/cspell-service-bus": "^6.8.1", + "@cspell/cspell-service-bus": "^6.8.2", "node-fetch": "^2.6.7" }, "engines": { @@ -3271,30 +3271,30 @@ } }, "node_modules/cspell-lib": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.8.1.tgz", - "integrity": "sha512-FzLSOg/IRClx9JfN2STg9KaoNwQsvKICviKjk0kdrRJywDUUA/uNL7KqI0khSWGPRVjPK2Itu9NpgB66Ux4xEA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.8.2.tgz", + "integrity": "sha512-K7UoaKB3qzq5KVnKynQM0+v8+4aXAA0coBKA6tH5czY2KDeuJSUu14b9WM+nxrUbMOOvNuSv+NaYw5lryaMFsg==", "dev": true, "dependencies": { - "@cspell/cspell-bundled-dicts": "^6.8.1", - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1", + "@cspell/cspell-bundled-dicts": "^6.8.2", + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2", "clear-module": "^4.1.2", "comment-json": "^4.2.3", "configstore": "^5.0.1", "cosmiconfig": "^7.0.1", - "cspell-glob": "^6.8.1", - "cspell-grammar": "^6.8.1", - "cspell-io": "^6.8.1", - "cspell-trie-lib": "^6.8.1", + "cspell-glob": "^6.8.2", + "cspell-grammar": "^6.8.2", + "cspell-io": "^6.8.2", + "cspell-trie-lib": "^6.8.2", "fast-equals": "^4.0.3", "find-up": "^5.0.0", "fs-extra": "^10.1.0", - "gensequence": "^3.1.1", + "gensequence": "^4.0.2", "import-fresh": "^3.3.0", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0", - "vscode-languageserver-textdocument": "^1.0.5", + "vscode-languageserver-textdocument": "^1.0.7", "vscode-uri": "^3.0.3" }, "engines": { @@ -3337,15 +3337,15 @@ } }, "node_modules/cspell-trie-lib": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.8.1.tgz", - "integrity": "sha512-mCxs99615eGXc306M0ocWI+h74MKdr0rdZawNGg8k8r7K14dQAur79FBDWGgTR4ThlZ1KLV3p/5tulxP89nJSA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.8.2.tgz", + "integrity": "sha512-jaNszLtSQglpz1BKejQ4RBFyJVSsYHQGW+1Rj4Zm103OcL+g6r/E1lm/dIbX/1UC4pBrNamjcGzXtPOBZJtUeQ==", "dev": true, "dependencies": { - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1", + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2", "fs-extra": "^10.1.0", - "gensequence": "^3.1.1" + "gensequence": "^4.0.2" }, "engines": { "node": ">=14" @@ -5428,12 +5428,12 @@ } }, "node_modules/gensequence": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz", - "integrity": "sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-4.0.2.tgz", + "integrity": "sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=14" } }, "node_modules/gensync": { @@ -6796,9 +6796,9 @@ "dev": true }, "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "node_modules/json-schema-traverse": { @@ -6847,18 +6847,18 @@ } }, "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, - "engines": [ - "node >=0.6.0" - ], "dependencies": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" } }, "node_modules/jszip": { @@ -10484,9 +10484,9 @@ } }, "node_modules/typedoc": { - "version": "0.23.11", - "resolved": "http://registry.npmjs.org/typedoc/-/typedoc-0.23.11.tgz", - "integrity": "sha512-FhZ2HfqlS++53UwHk4txCsTrTlpYR0So/0osMyBeP1E7llRNRqycJGfYK1qx9Wvvv5VO8tGdpwzOwDW5FrTi7A==", + "version": "0.23.14", + "resolved": "http://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", + "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", "dev": true, "dependencies": { "lunr": "^2.3.9", @@ -10778,9 +10778,9 @@ } }, "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.5.tgz", - "integrity": "sha512-1ah7zyQjKBudnMiHbZmxz5bYNM9KKZYz+5VQLj+yr8l+9w3g+WAhCkUkWbhMEdC5u0ub4Ndiye/fDyS8ghIKQg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", + "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", "dev": true }, "node_modules/vscode-oniguruma": { @@ -11848,19 +11848,19 @@ "dev": true }, "@cspell/cspell-bundled-dicts": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.8.1.tgz", - "integrity": "sha512-hZCAtUeEsQ16f9SvruKYB9nFDjt+VXtZ/yJHONo6+dev9A6JpsUGWGL2oja6fD4j+mvFoMc/Dm1wzhtTYeSvhA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-6.8.2.tgz", + "integrity": "sha512-E4sNdcG23nj0ztiI69PeU+ALL6DgL3GoqVZuLhpRwgRL4RN7n7FuUJdJ91cgpNvx50+HhdyxFqEpKRigD3yeNQ==", "dev": true, "requires": { "@cspell/dict-ada": "^2.0.1", "@cspell/dict-aws": "^2.0.0", "@cspell/dict-bash": "^2.0.4", - "@cspell/dict-companies": "^2.0.11", + "@cspell/dict-companies": "^2.0.13", "@cspell/dict-cpp": "^3.2.1", "@cspell/dict-cryptocurrencies": "^2.0.0", "@cspell/dict-csharp": "^3.0.1", - "@cspell/dict-css": "^2.0.1", + "@cspell/dict-css": "^2.1.0", "@cspell/dict-dart": "^1.1.1", "@cspell/dict-django": "^2.0.0", "@cspell/dict-docker": "^1.1.1", @@ -11874,7 +11874,7 @@ "@cspell/dict-git": "^1.0.1", "@cspell/dict-golang": "^3.0.1", "@cspell/dict-haskell": "^2.0.1", - "@cspell/dict-html": "^3.1.0", + "@cspell/dict-html": "^3.3.2", "@cspell/dict-html-symbol-entities": "^3.0.0", "@cspell/dict-java": "^3.0.7", "@cspell/dict-latex": "^2.0.9", @@ -11890,7 +11890,7 @@ "@cspell/dict-ruby": "^2.0.2", "@cspell/dict-rust": "^2.0.1", "@cspell/dict-scala": "^2.0.0", - "@cspell/dict-software-terms": "^2.2.3", + "@cspell/dict-software-terms": "^2.2.7", "@cspell/dict-sql": "^1.0.4", "@cspell/dict-swift": "^1.0.3", "@cspell/dict-typescript": "^2.0.1", @@ -11898,21 +11898,21 @@ } }, "@cspell/cspell-pipe": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.8.1.tgz", - "integrity": "sha512-FbpYK58PlrGIOjZxu51/dFkFv7iaPhKWrkQ/q/9vW82g2ovouFeql0S7X9g4Dnn75Pd5P/pYPgFubCSawtp3pA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-6.8.2.tgz", + "integrity": "sha512-9GXBibZ8bcU+2KhX6WTEASPhIhsqdFYITwBJ39jfUl2MiPgpvjYxQKrAgnZOm5WpRzCUxoelU2SVaoI+rn/Stg==", "dev": true }, "@cspell/cspell-service-bus": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.8.1.tgz", - "integrity": "sha512-lpr+5TntZdneLxmhSGT3pKOsxLJ40KahJDyNqM+91ssqIczeqrm7jZ2hZCdx4XqQM2dOAMvsB0ZyZuuDjQ+ptg==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-6.8.2.tgz", + "integrity": "sha512-YvEauGv/QZb5xRiKKvwiXz7lj7twc5TgispnujgHYDEt6OcXiWjYj676WzKkGJ2yM+QfurGJCCvOb2L1HQ6rYg==", "dev": true }, "@cspell/cspell-types": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.8.1.tgz", - "integrity": "sha512-Yo/SJZEG3SbcIfxqdQat70LW5SwXoox2L+G8y0VCtdYu+hFr5ouSUInlfItgiFBgDKNSF0w1u2oOZeNkFZ1Aiw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-6.8.2.tgz", + "integrity": "sha512-jFg+D1L+MkIad2IR+qlnOYIuwqaosbTrtqhpWhbOGMvFQjxMyKg9IVxbmtjDCdRohdBUvRq96rkp0vx1FviiwQ==", "dev": true }, "@cspell/dict-ada": { @@ -11934,9 +11934,9 @@ "dev": true }, "@cspell/dict-companies": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.11.tgz", - "integrity": "sha512-8Fw+dviHh3nu9y0jI+7kpObY/C15s4bDzWi5ZJpkAT65z+yZiIr6rxyoCR4vHpT5/TofbaRXFKWHoc/sqUYY2g==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-2.0.13.tgz", + "integrity": "sha512-EacGH6Yjd2u+sNRLd6+3jxbzWBSsmF4g52Xfxfv2T48qzRWJ1zqpX89ijihgYTwvZbf8H/6Lu+z1VU4e1gUp0g==", "dev": true }, "@cspell/dict-cpp": { @@ -11958,9 +11958,9 @@ "dev": true }, "@cspell/dict-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-2.0.1.tgz", - "integrity": "sha512-8YjD29A8IquPdAsDNF/7KIG1FUYEs1mpKYcBrGPv/CKVlyiQskAxdFZvhWlKzsjDsWxis9+2Q5vR0VGLtgkPzQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-2.1.0.tgz", + "integrity": "sha512-glASAELcGhh4Ru0rTQ4G9mTQxSyPwsZOON/5BYflB6Kks8YC8nUvKrtMCoo5W7CPKPfSEa8zUNctFQ1+IUYDHA==", "dev": true }, "@cspell/dict-dart": { @@ -12042,9 +12042,9 @@ "dev": true }, "@cspell/dict-html": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-3.1.0.tgz", - "integrity": "sha512-HD33wqDxaBBDuBRMlXT1sS8v1Oqw3ZjJocEK8a/JQ8s75sSq4zl6iZIcbkzTHFeDfKPmObCES4z5GbgHKNaQtw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-3.3.2.tgz", + "integrity": "sha512-cM5pQSEiqjrdk6cRFLrlLdWNT/J8399f/A6DjwjfYhHrGy0e/Rsjv76HZT0GlE1OqMoq9eG9jdQsfoYYgWTIpQ==", "dev": true }, "@cspell/dict-html-symbol-entities": { @@ -12138,9 +12138,9 @@ "dev": true }, "@cspell/dict-software-terms": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.2.3.tgz", - "integrity": "sha512-hpiYrjnGcrSw2q/CiT2bzsB5/OVaK/aOgQvvI6MVnvOk3XzfpAeOr24frrnXTURbuD8pktiRPvAmrTlHrAGCXQ==", + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-2.2.7.tgz", + "integrity": "sha512-tNdgfijX4PGIzwWyRQHqEsKEWqNc92HDdURcXBZNw2po7jUh+/FgqBoUgnJXyLastJ9PGX9847j9uNBPfShTgA==", "dev": true }, "@cspell/dict-sql": { @@ -12571,9 +12571,9 @@ "dev": true }, "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.0.0.tgz", + "integrity": "sha512-l6NQsDDyQUVeoTynNpC9uRvCUint/gSUXQA2euwmTuWGvPY5LSDUu6tkCtJB2SvGQlJQzLaKqcGZP4//7EDveA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -12605,9 +12605,9 @@ "dev": true }, "@types/node": { - "version": "18.7.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.13.tgz", - "integrity": "sha512-46yIhxSe5xEaJZXWdIBP7GU4HDTG8/eo0qd9atdiL+lFpA03y8KS+lkTN834TWJj5767GbWv4n/P6efyTFt1Dw==" + "version": "18.7.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.18.tgz", + "integrity": "sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==" }, "@types/normalize-package-data": { "version": "2.4.1", @@ -12622,9 +12622,9 @@ "dev": true }, "@types/prompt": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/prompt/-/prompt-1.1.2.tgz", - "integrity": "sha512-Zc9YzOvjAWxxGY7qo0Q6yINMVVspAa4p68UCzucWMU+GaPujpjwbOwzI38s7Jq01k0GztzLxXlRiFcZf/aeIWA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/prompt/-/prompt-1.1.3.tgz", + "integrity": "sha512-y1fMzb7a/mQs4tynU8agMmV8ptbT0dkgNafrdsoEyLtbCggK5COJ/r5DGcaAHB5kdXTGh+8trHlENlsZkm+tOQ==", "dev": true, "requires": { "@types/node": "*", @@ -13995,17 +13995,17 @@ "dev": true }, "cspell": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.8.1.tgz", - "integrity": "sha512-w+MCy9a7uMu0bwwDuFJy85SbF6pikCc6fzQo3B/hXuu+xrz12TCbjsXsdezTXl9YqPsUDN0A8A6AwHEN7t7GFw==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-6.8.2.tgz", + "integrity": "sha512-WHF8tQXetHgAjyG6f0rDhWXRQllSpZULOIuDZj6PeZyHubuObzsMsW0asDvL8j+EGKXr8NPo4J3vjxahYmSJ+w==", "dev": true, "requires": { - "@cspell/cspell-pipe": "^6.8.1", + "@cspell/cspell-pipe": "^6.8.2", "chalk": "^4.1.2", "commander": "^9.4.0", - "cspell-gitignore": "^6.8.1", - "cspell-glob": "^6.8.1", - "cspell-lib": "^6.8.1", + "cspell-gitignore": "^6.8.2", + "cspell-glob": "^6.8.2", + "cspell-lib": "^6.8.2", "fast-json-stable-stringify": "^2.1.0", "file-entry-cache": "^6.0.1", "fs-extra": "^10.1.0", @@ -14141,69 +14141,69 @@ } }, "cspell-gitignore": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.8.1.tgz", - "integrity": "sha512-GpLr0xoQQHk8IpDGhMY76EyThwSwfAOe5er5iDYlEFRsCp0sUnllXVSJunb4QZIcMl2zbj5lGgPuCvzKcjy3SQ==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-6.8.2.tgz", + "integrity": "sha512-JoU/rGeGrjSqOMvY5q+bloxtO5Y8QLpJEEIAvHHZ+oTOlExZ/CIAYnO6X3lC6ylNRYc1+I2KEOFa6R0+0OSdVQ==", "dev": true, "requires": { - "cspell-glob": "^6.8.1", + "cspell-glob": "^6.8.2", "find-up": "^5.0.0" } }, "cspell-glob": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.8.1.tgz", - "integrity": "sha512-LSiGN9ht4cJdr/zIuh6GlV0soYKPBNvQovhjYPFZZjvCbH7iIkTNxCuXBKylF1iorsH1jrTY88fmNBeYqkwuFA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-6.8.2.tgz", + "integrity": "sha512-FKy2EIdQKO9b/vP0r8yqxtGQNA8M48DkwMSjW2mN1Qku5wRT8SPByKg87BjK4oztlIiQJoJ6+8OTrWnJwdbpQw==", "dev": true, "requires": { "micromatch": "^4.0.5" } }, "cspell-grammar": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.8.1.tgz", - "integrity": "sha512-VudDZLEplSlJeQwOtznfhj4gdVpKsQ2+I7zMMx9w4t6newDD8Ts6nUMg9BFC1j5LggBzuKAgo/QNMo5vU9MhGA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-6.8.2.tgz", + "integrity": "sha512-RHvIsNRDlBYKddKAdob5XT2+odOiO3eJVaw/vt5+CRx1cJSjuaIOyHwXKH2Xl1ioUUhEb9Ew3pg7JktRdzKn5w==", "dev": true, "requires": { - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1" + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2" } }, "cspell-io": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.8.1.tgz", - "integrity": "sha512-rk6FOmehbeX4xE3uKNMTl0bZJkcuL17sB807uQCxp5CRfKvdv51nV1Sz7u1gVYiNy6UYBj7VO0V2w7TftqR24A==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-6.8.2.tgz", + "integrity": "sha512-QpdePUXD8fTM2XuZdeS5ygTeIW9pnaQhTVWBWGbnrYlMn5iV9Jo81dHheHw4InxQJUjhyS/CuxdNGfYZXGJuaQ==", "dev": true, "requires": { - "@cspell/cspell-service-bus": "^6.8.1", + "@cspell/cspell-service-bus": "^6.8.2", "node-fetch": "^2.6.7" } }, "cspell-lib": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.8.1.tgz", - "integrity": "sha512-FzLSOg/IRClx9JfN2STg9KaoNwQsvKICviKjk0kdrRJywDUUA/uNL7KqI0khSWGPRVjPK2Itu9NpgB66Ux4xEA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-6.8.2.tgz", + "integrity": "sha512-K7UoaKB3qzq5KVnKynQM0+v8+4aXAA0coBKA6tH5czY2KDeuJSUu14b9WM+nxrUbMOOvNuSv+NaYw5lryaMFsg==", "dev": true, "requires": { - "@cspell/cspell-bundled-dicts": "^6.8.1", - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1", + "@cspell/cspell-bundled-dicts": "^6.8.2", + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2", "clear-module": "^4.1.2", "comment-json": "^4.2.3", "configstore": "^5.0.1", "cosmiconfig": "^7.0.1", - "cspell-glob": "^6.8.1", - "cspell-grammar": "^6.8.1", - "cspell-io": "^6.8.1", - "cspell-trie-lib": "^6.8.1", + "cspell-glob": "^6.8.2", + "cspell-grammar": "^6.8.2", + "cspell-io": "^6.8.2", + "cspell-trie-lib": "^6.8.2", "fast-equals": "^4.0.3", "find-up": "^5.0.0", "fs-extra": "^10.1.0", - "gensequence": "^3.1.1", + "gensequence": "^4.0.2", "import-fresh": "^3.3.0", "resolve-from": "^5.0.0", "resolve-global": "^1.0.0", - "vscode-languageserver-textdocument": "^1.0.5", + "vscode-languageserver-textdocument": "^1.0.7", "vscode-uri": "^3.0.3" }, "dependencies": { @@ -14237,15 +14237,15 @@ } }, "cspell-trie-lib": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.8.1.tgz", - "integrity": "sha512-mCxs99615eGXc306M0ocWI+h74MKdr0rdZawNGg8k8r7K14dQAur79FBDWGgTR4ThlZ1KLV3p/5tulxP89nJSA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-6.8.2.tgz", + "integrity": "sha512-jaNszLtSQglpz1BKejQ4RBFyJVSsYHQGW+1Rj4Zm103OcL+g6r/E1lm/dIbX/1UC4pBrNamjcGzXtPOBZJtUeQ==", "dev": true, "requires": { - "@cspell/cspell-pipe": "^6.8.1", - "@cspell/cspell-types": "^6.8.1", + "@cspell/cspell-pipe": "^6.8.2", + "@cspell/cspell-types": "^6.8.2", "fs-extra": "^10.1.0", - "gensequence": "^3.1.1" + "gensequence": "^4.0.2" }, "dependencies": { "fs-extra": { @@ -15710,9 +15710,9 @@ "dev": true }, "gensequence": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-3.1.1.tgz", - "integrity": "sha512-ys3h0hiteRwmY6BsvSttPmkhC0vEQHPJduANBRtH/dlDPZ0UBIb/dXy80IcckXyuQ6LKg+PloRqvGER9IS7F7g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-4.0.2.tgz", + "integrity": "sha512-mQiFskYFPFDSUpBJ/n3ebAV2Ufu6DZGvUPXzyWYzFfJr6/DyOOZVnjx6VTWE4y0RLvYWnc5tZq5sCjzEWhRjqQ==", "dev": true }, "gensync": { @@ -16705,9 +16705,9 @@ "dev": true }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", "dev": true }, "json-schema-traverse": { @@ -16750,14 +16750,14 @@ } }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", - "json-schema": "0.2.3", + "json-schema": "0.4.0", "verror": "1.10.0" } }, @@ -19506,9 +19506,9 @@ } }, "typedoc": { - "version": "0.23.11", - "resolved": "http://registry.npmjs.org/typedoc/-/typedoc-0.23.11.tgz", - "integrity": "sha512-FhZ2HfqlS++53UwHk4txCsTrTlpYR0So/0osMyBeP1E7llRNRqycJGfYK1qx9Wvvv5VO8tGdpwzOwDW5FrTi7A==", + "version": "0.23.14", + "resolved": "http://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", + "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", "dev": true, "requires": { "lunr": "^2.3.9", @@ -19738,9 +19738,9 @@ } }, "vscode-languageserver-textdocument": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.5.tgz", - "integrity": "sha512-1ah7zyQjKBudnMiHbZmxz5bYNM9KKZYz+5VQLj+yr8l+9w3g+WAhCkUkWbhMEdC5u0ub4Ndiye/fDyS8ghIKQg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.7.tgz", + "integrity": "sha512-bFJH7UQxlXT8kKeyiyu41r22jCZXG8kuuVVA33OEJn1diWOZK5n8zBSPZFHVBOu8kXZ6h0LIRhf5UnCo61J4Hg==", "dev": true }, "vscode-oniguruma": { diff --git a/package.json b/package.json index 93a82233ce..7563d65e5e 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "homepage": "https://github.com/dolanmiu/docx#readme", "devDependencies": { "@types/chai": "^4.2.15", - "@types/glob": "^7.1.4", + "@types/glob": "^8.0.0", "@types/mocha": "^9.0.0", "@types/prompt": "^1.1.1", "@types/request-promise": "^4.1.42", diff --git a/src/export/packer/packer.spec.ts b/src/export/packer/packer.spec.ts index b2c3e21836..f0ed3d8b94 100644 --- a/src/export/packer/packer.spec.ts +++ b/src/export/packer/packer.spec.ts @@ -122,4 +122,52 @@ describe("Packer", () => { (Packer as any).compiler.compile.restore(); }); }); + + describe("#toStream()", () => { + it("should create a standard docx file", async () => { + // tslint:disable-next-line: no-any + stub((Packer as any).compiler, "compile").callsFake(() => ({ + // tslint:disable-next-line: no-empty + generateNodeStream: () => ({ + on: (event: string, cb: () => void) => { + if (event === "end") { + cb(); + } + }, + }), + })); + const stream = await Packer.toStream(file); + return new Promise((resolve, reject) => { + stream.on("error", () => { + reject(); + }); + + stream.on("end", () => { + resolve(); + }); + }); + }); + + it("should handle exception if it throws any", async () => { + // tslint:disable-next-line:no-any + const compiler = stub((Packer as any).compiler, "compile").callsFake(() => ({ + // tslint:disable-next-line: no-empty + on: (event: string, cb: () => void) => { + if (event === "error") { + cb(); + } + }, + })); + + compiler.throwsException(); + return Packer.toStream(file).catch((error) => { + assert.isDefined(error); + }); + }); + + afterEach(() => { + // tslint:disable-next-line:no-any + (Packer as any).compiler.compile.restore(); + }); + }); }); diff --git a/src/export/packer/packer.ts b/src/export/packer/packer.ts index 4d047f7381..5d233ec0ef 100644 --- a/src/export/packer/packer.ts +++ b/src/export/packer/packer.ts @@ -1,4 +1,5 @@ import { File } from "@file/file"; +import { Stream } from "stream"; import { Compiler } from "./next-compiler"; @@ -57,5 +58,17 @@ export class Packer { return zipData; } + public static async toStream(file: File, prettify?: boolean | PrettifyType): Promise { + const zip = this.compiler.compile(file, prettify); + const zipData = zip.generateNodeStream({ + type: "nodebuffer", + streamFiles: true, + mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + compression: "DEFLATE", + }); + + return zipData; + } + private static readonly compiler = new Compiler(); } diff --git a/src/file/numbering/level.spec.ts b/src/file/numbering/level.spec.ts index e51480bb6a..9cf033eb28 100644 --- a/src/file/numbering/level.spec.ts +++ b/src/file/numbering/level.spec.ts @@ -1,8 +1,9 @@ import { expect } from "chai"; -import { AlignmentType } from ".."; +import { Formatter } from "@export/formatter"; import { Level, LevelFormat, LevelSuffix } from "./level"; +import { AlignmentType } from ".."; describe("Level", () => { describe("#constructor", () => { @@ -21,4 +22,41 @@ describe("Level", () => { ).to.throw(); }); }); + + describe("isLegalNumberingStyle", () => { + it("should work", () => { + const concreteNumbering = new Level({ + level: 9, + isLegalNumberingStyle: true, + }); + const tree = new Formatter().format(concreteNumbering); + expect(tree).to.deep.equal({ + "w:lvl": [ + { + "w:start": { + _attr: { + "w:val": 1, + }, + }, + }, + { + "w:isLgl": {}, + }, + { + "w:lvlJc": { + _attr: { + "w:val": "start", + }, + }, + }, + { + _attr: { + "w15:tentative": 1, + "w:ilvl": 9, + }, + }, + ], + }); + }); + }); }); diff --git a/src/file/numbering/level.ts b/src/file/numbering/level.ts index c307fb4f35..c1f7a5d805 100644 --- a/src/file/numbering/level.ts +++ b/src/file/numbering/level.ts @@ -87,6 +87,7 @@ export interface ILevelsOptions { readonly alignment?: AlignmentType; readonly start?: number; readonly suffix?: LevelSuffix; + readonly isLegalNumberingStyle?: boolean; readonly style?: { readonly run?: IRunStylePropertiesOptions; readonly paragraph?: ILevelParagraphStylePropertiesOptions; @@ -114,6 +115,14 @@ class Suffix extends XmlComponent { } } +// http://officeopenxml.com/WPnumbering-isLgl.php +// https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.islegalnumberingstyle?view=openxml-2.8.1 +class IsLegalNumberingStyle extends XmlComponent { + constructor() { + super("w:isLgl"); + } +} + // // // @@ -137,7 +146,16 @@ export class LevelBase extends XmlComponent { private readonly paragraphProperties: ParagraphProperties; private readonly runProperties: RunProperties; - public constructor({ level, format, text, alignment = AlignmentType.START, start = 1, style, suffix }: ILevelsOptions) { + public constructor({ + level, + format, + text, + alignment = AlignmentType.START, + start = 1, + style, + suffix, + isLegalNumberingStyle, + }: ILevelsOptions) { super("w:lvl"); this.root.push(new NumberValueElement("w:start", decimalNumber(start))); @@ -150,6 +168,10 @@ export class LevelBase extends XmlComponent { this.root.push(new Suffix(suffix)); } + if (isLegalNumberingStyle) { + this.root.push(new IsLegalNumberingStyle()); + } + if (text) { this.root.push(new LevelText(text)); } diff --git a/src/file/styles/style/default-styles.spec.ts b/src/file/styles/style/default-styles.spec.ts index 28038ea9d6..5a3844a892 100644 --- a/src/file/styles/style/default-styles.spec.ts +++ b/src/file/styles/style/default-styles.spec.ts @@ -5,7 +5,6 @@ import { EMPTY_OBJECT } from "@file/xml-components"; import * as defaultStyles from "./default-styles"; - describe("Default Styles", () => { it("HeadingStyle#constructor", () => { const style = new defaultStyles.HeadingStyle({ diff --git a/src/file/table/grid.spec.ts b/src/file/table/grid.spec.ts index c846991878..f0dacac9c8 100644 --- a/src/file/table/grid.spec.ts +++ b/src/file/table/grid.spec.ts @@ -5,7 +5,6 @@ import { Formatter } from "@export/formatter"; import { GridCol, TableGrid } from "./grid"; - describe("GridCol", () => { describe("#constructor", () => { it("sets the width attribute to the value given", () => { diff --git a/src/file/table/table-properties/table-cell-margin.ts b/src/file/table/table-properties/table-cell-margin.ts index 2556e0661c..01e29a3770 100644 --- a/src/file/table/table-properties/table-cell-margin.ts +++ b/src/file/table/table-properties/table-cell-margin.ts @@ -39,7 +39,10 @@ export enum TableCellMarginElementType { } export class TableCellMargin extends IgnoreIfEmptyXmlComponent { - public constructor(type: TableCellMarginElementType, { marginUnitType = WidthType.DXA, top, left, bottom, right }: ITableCellMarginOptions) { + public constructor( + type: TableCellMarginElementType, + { marginUnitType = WidthType.DXA, top, left, bottom, right }: ITableCellMarginOptions, + ) { super(type); if (top !== undefined) { diff --git a/webpack.config.ts b/webpack.config.ts index 0f03537add..5871440f3f 100644 --- a/webpack.config.ts +++ b/webpack.config.ts @@ -23,6 +23,9 @@ const configuration = { stream: require.resolve("stream-browserify"), }, plugins: [new TsconfigPathsPlugin()], + alias: { + jszip: require.resolve('jszip/lib/index.js'), + }, }, module: {