Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deps): update dependency docxtemplater to v3.47.4 #192

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Mar 20, 2020

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
docxtemplater 3.17.9 -> 3.47.4 age adoption passing confidence

Release Notes

open-xml-templating/docxtemplater (docxtemplater)

v3.47.4

Compare Source

Add correct typescript typings for isIdentifierStart and isIdentifierContinue.

v3.47.3

Compare Source

Improve getStructuredTags and getTags of the inspectModule to allow to get tags present in image attributes.

(This is to work together with the image-module 3.28.0)

v3.47.2

Compare Source

Bugfix internal api mechanism :

It internally allows to have multiple traits.expandToOne().

Fixes bugs with the subtemplate and subsection module.

Update moduleApiVersion to 3.40.0.

v3.47.1

Compare Source

If zip file is not a docx file, show the following error message now :

The filetype for this file could not be identified, is this file corrupted ? Zip file contains : world.txt,xxx.log

In previous versions, the following message was shown :

The filetype for this file could not be identified, is this file corrupted ?

v3.47.0

Compare Source

Make it possible to dynamically allow to use a given tag for a module.

For example, you can write :

const doc = new Docxtemplater(zip, {
  modules: [
    {
      optionsTransformer(options, doc) {
        doc.modules.forEach(function (module) {
          if (module.name === "RawXmlModule") {
            module.prefix = function (placeholderContent) {
              if (placeholderContent === "raw") {
                return "raw";
              }
              if (placeholderContent[0] === "@​") {
                return placeholderContent.substr(1);
              }
            };
          }
        });
        return options;
      },
    },
  ],
});

This code means that if you write : {raw} in your document (without the "@​" prefix), that tag will be used as a rawxml tag.

v3.46.2

Compare Source

Add "synced-zip" event that is run right after the zip is prepared.

Update moduleApiVersion to version 3.39.0, which is used by the latest subtemplate module.

v3.46.1

Compare Source

Fix typescript issue with TxtTemplater

v3.46.0

Compare Source

When using a loop inside a powerpoint table, if the result is an empty table, correctly drop the table from the presentation.

v3.45.1

Compare Source

Add getObjectIdentifiers to expressionParser, which can be used like this :

const expressionParser = require("docxtemplater/expressions.js");
expressionParser("a.b.c").getObjectIdentifiers();
// returns { a: { b: { c: {} } } }

v3.45.0

Compare Source

Bugfix for proofstate module : Following error was thrown when using this module :

Unnamed module

Now the module should work correctly

v3.44.0

Compare Source

Make it possible to configure the angular parser for just one docxtemplater instance.

(This needs angular-expressions version 1.2.0)

Use following code :

const expressionParser = require("docxtemplater/expressions.js");
new Docxtemplater(zip, {
  parser: expressionParser.configure({
    csp: true, // this disables the use of "new Function", useful for Vercel, Deno, ...
    filters: {
      uppercase: (input) => {
        if (typeof input === "string") {
          return input.toUpperCase();
        }
        return input;
      },
    },
  }),
});

v3.43.1

Compare Source

Improve Typescript support to use the NodeNext moduleResolution setting.

See the explanation here.

Fixed in this pull request thanks to @​benasher44.

v3.43.0

Compare Source

Add getResolvedId calculation in docxtemplater to all template parts so that
all modules can store a value for each templated part. This value is guaranteed
to be the same for a given {placeholder} and data attribute between resolve
and render.

v3.42.7

Compare Source

Throw specific error if two modules with the same name are attached.

Bugfix issue on TxtTemplater when using {paragraphLoop: true}.

v3.42.6

Compare Source

Bugfix of internal API change, which was published in v3.42.5

v3.42.5

Compare Source

Bugfix for TxtTemplating :

const TxtTemplater = require("docxtemplater/text.js");

The following template :

<p>Foobar</p>

Would be rendered as :

<p&gt;Foobar</p&gt;

Also, errors such as unclosed loops, like in :

{#users}Foo

would produce an internal stacktrace.

Now, a MultiError is thrown which contains the list of all errors inside error.properties.errors

v3.42.4

Compare Source

Avoid issue Cannot read properties of undefined (reading 'length') when using renderAsync.

Now, the correct error message should be shown.

v3.42.3

Compare Source

Bugfix to avoid following error when runnig iModule.getStructuredTags() :

TypeError: Cannot read properties of undefined (reading 'replace')

Now, the tags are correctly returned.

v3.42.2

Compare Source

Bugfix to add clone method to the assertion module and to the inspect module

v3.42.1

Compare Source

Bugfix for inspect module when used together with qrcode/xlsx or table module, in some specific cases, the getTags function would return values correctly, but also return a key named "undefined", like this :

const tags = iModule.getAllTags();
console.log(tags); // would return : { name: {}, undefined: {}}

In order to apply the fix, you have to update the following modules (if you use them) :

  • qrcode module to 3.4.7
  • table module to 3.19.9
  • xlsx module to 3.14.2

v3.42.0

Compare Source

[Internal] Add filePath to each "inspect" call, which fixes a bug with the chart module when used together with the "getTags" feature of the inspect module.

If you update to this version, it is important that you also upgrade following modules if you use them :

  • slides module to version 3.5.3
  • pptx-sub module to version 3.1.4

v3.41.0

Compare Source

Correctly show error in a multi error if the scope parser execution fails inside the render function

Previously, following error was thrown :

Error: Scope parser execution failed
   at new XTScopeParserError (....)

with following template :

{#users | sortBy:'foo'}
Foo
{/}
expressionParser.filters.sortBy = function (input, ...fields) {
    if (!input) return input;
    return sortBy(input, fields);
};

(when sortBy is not imported correctly).

Now, the error will show a multierror with the list of errors that are happening + the tags that are causing the error.

Add support for angularExpressions.compile(), angularExpressions.Parser, and angularParser.Lexer

v3.40.3

Compare Source

Fix issue when having {tag} inside title in pptx (or docx) and using the linebreak option.

v3.40.2

Compare Source

Bugfix to not add "w:sdt" inside "w:sdtContent".

Fixes a corruption on a particular type of document.

v3.40.1

Compare Source

Bugfix when using docxtemplater asynchronously, and having some module inside a loop.

The "contentType" and some other properties were not transfered correctly to the elements inside the loop.

This specifically caused an issue in the HTML module to return the correct pageHeight inside the getSize and getImage function.

This could also lead to some other bugs that were happening only when having some specific tag present in the loop.

v3.40.0

Compare Source

  • In previous versions the following code will throw an error:

    new Docxtemplater(zip, {
      paragraphLoop: true,
      linebreaks: true,
      delimiters: {
        start: "$(",
        end: ")",
      },
    });
    $(last_name) $(first_name)
    
    Some text (Some text)  Some text
    
    $(last_name) $(first_name)
    
    
    MultiError
    {
      name: "TemplateError",
      id: "unopened_tag",
      explanation: "The tag beginning with \") Some text\" is unopened"
    }

    The syntax can now be made more lenient to permit closing tags even when there are no corresponding opening tags. In your code, write :

    new Docxtemplater(zip, {
      paragraphLoop: true,
      linebreaks: true,
    
      syntax: {
        allowUnopenedTag: true,
      },
    });

    For now, the only available property for syntax object is allowUnopenedTag (it makes it possible to use the end delimiter tag as a text and not to parse it as a closing tag and cause syntax error). Fixes https://github.com/open-xml-templating/docxtemplater/issues/726.

    The default behavior for the parser without setting the syntax option is the same as in 3.39.2, meaning without the syntax.allowUnopenedTag: true option, placeholders that are closed but not opened will throw an error.

  • Internal: Refactor getDelimiterErrors function to be cleaner and more performant

  • Internal: Add tests for new functionality

v3.39.2

Compare Source

  • Internal: Remove mergeObjects from doc-utils.js
  • Internal: Small refactoring in regex
  • Internal: Avoid calling dropUnsupportedFileTypesModules too many times

v3.39.1

Compare Source

Always add {tag} in second argument to parser, like this :

parser(tag, options) {
    console.log(options.tag.module); // for image tag, it will log "open-xml-templating/docxtemplater-image-module"
}

v3.39.0

Compare Source

Add preResolve API for modules that allows to run some code before the calls to resolve.

Update moduleApiVersion to version 3.37.0

v3.38.0

Compare Source

Add support for templating content which is in comments.

v3.37.14

Compare Source

Bugfix following error, when calling setOptions and then getFullText :

Cannot read properties of null (reading 'tagsXmlTextArray')
    at XmlTemplater.getFullText (es6/xml-templater.js:53:56)
    at Docxtemplater.getFullText (es6/docxtemplater.js:484:5)

v3.37.13

Compare Source

In powerpoint, the inspect module will now return correctly for the getAllTags and getStructuredTags methods :

For this to work, you need to install version 3.4.10 of slides module or above.

For following template with the slides module attached :

{:loop}
{$index}{name}

The output of inspectModule.getAllTags() will now be :

{
    loop: {
        $index: {},
        name: {},
    },
}

v3.37.12

Compare Source

For the following template

Hi {#products}{# .  }-{ . }-{/}{/}

This did not work correctly with following data with expressions parser :

doc.render({
  products: [
    [1, 2, 3, 4],
    [4, 5, 6, 7],
  ],
});

It rendered :

Hi -1,2,3,4--4,5,6,7-

(which is incorrect)

This is because the docxtemplater/expressions.js parser was returning an object instead of the array in this case.

v3.37.11

Compare Source

Update handling of "." in angular parser.

Docxtemplater now supports the following expression :

{ . | myFilter }

This is the same as :

{ this | myFilter }

Also, the following will also work now to access the "user-name" property of the root object (synonym of this["user-name"] :

{.["user-name"]}

v3.37.10

Compare Source

Important bugfix for modules, if you are still using the legacy constructor (eg if you still have attachModule somewhere in your code.

For example, one issue that could happen is with the HTML module, you could have following stacktrace :

Cannot read property 'getElementsByTagName' of undefined` error

This would happen when adding lists, and only if you're using one of following methods : attachModule, setOptions, or loadZip.

v3.37.9

Compare Source

Update to render parts of the documents in the most natural order :

First all header parts, than the main document body, than the footer part.

v3.37.8

Compare Source

When using the following code :

const expressionParser = require("docxtemplater/expressions.js");
const doc = new Docxtemplater(zip, { parser: expressionParser });
doc.render();

This would always fail (when the scope was not set), but this should be allowed.

This will now work correctly.

v3.37.7

Compare Source

Correctly calculate the endLindex for loop module.

This fixes a bug of the Segmentmodule (part of the subtemplate module) where the segment would show wrongly an error of "Unclosed loop" when using the segment module with following template :

{:segment s}
{#loop}{#loop}{value} {/}{/}
{:segment/}
{#loop}
{:includesegment s}
{/}

This fix also needs the latest subtemplate module : version 3.12.3

v3.37.6

Compare Source

Template docProps/app.xml before word/document.xml.

This way, users can write assignments in the word/settings.xml, and
use the exposed variables in the word/document.xml

With 3.37.5, require("docxtemplater/text") would throw the following error :

Cannot find module './lexer.js' from 'node_modules/docxtemplater/text.js'

This is now fixed in version 3.37.6

v3.37.5

Compare Source

The TxtTemplater feature is now available using require("docxtemplater/text")

const TxtTemplater = require("docxtemplater/text.js");
const doc = new TxtTemplater("Hello {user}, how are you ?");
const result = doc.render({ user: "John" });
console.log(result); // Shows : "Hello John, how are you ?"

Previously this was only available at "docxtemplater/js/text.js", but now both are supported.

v3.37.4

Compare Source

Add typings definitions for docxtemplater/js/text.js (Fixes #​715)

v3.37.3

Compare Source

Add better typings to expressions.js (including typings for filters).

v3.37.2

Compare Source

Add support to get identifiers when using the docxtemplater/expressions.js package :

const expressionParser = require("docxtemplater/expressions.js");
const identifiers = expressionParser("x+0+users").getIdentifiers();
// identifiers will be : ["x", "users"]

v3.37.1

Compare Source

Bugfix following error, when calling setOptions and then getFullText :

Cannot read properties of null (reading 'tagsXmlTextArray')
    at XmlTemplater.getFullText (es6/xml-templater.js:53:56)
    at Docxtemplater.getFullText (es6/docxtemplater.js:484:5)

v3.37.0

Compare Source

Improve the way {$index} is handled with the expressions parser.

Previously, if you wrote the following :

{#todos}
{#important}{$index}.! {text}{/}
{^important}{$index}. ({text}){/}
{/}

The $index value would always be equal to 0.

This was because the $index would use the closest condition or loop.

Now, the library will look whether the {#important} is using an array or a boolean. Only for arrays will it calculate the {$index}, it will ignore any section that is a condition.

This means that the output of the following will correctly be :

0.! Do the dishes
1.! Invite XYZ 2. (Other thing)

Previously, the same template would show just 0 for the index.

v3.36.1

Compare Source

Bugfix when using following in the template :

{this["first name"]}

With following file :

doc.render({
  "first name": "John",
});

This was incorrectly rendering undefined.

The bug was present since version 3.32.0

Version 3.31.6 and before were not affected by this bug.

Now, the code will correctly render : "John" in this case

v3.36.0

Compare Source

Bugfix issue #​707 : Correctly handle usage of {#.}{.}{/} with angular parser

v3.35.1

Compare Source

v3.35.0

Compare Source

Update moduleApiVersion to version 3.36.0

  • Now the modules that define their supportedFileTypes will correctly be removed if the filetype does'nt match even when using the attachModule API.

  • Bugfix in FixDocPRCorruptionModule : when using the following code :

    const fixDocPrCorruption = require("docxtemplater/js/modules/fix-doc-pr-corruption.js");
    const doc = new Docxtemplater(zip, { modules: [fixDocPrCorruption] });

    The issue was that if you attached the same module to multiple docxtemplater instances in parallel, because of badly handled state, the state for the fixDocPrCorruption was overwritten

    const doc1 = new Docxtemplater(zip, { modules: [fixDocPrCorruption] });
    const doc2 = new Docxtemplater(zip, { modules: [fixDocPrCorruption] });
    doc1.render(); // In this situation, the fixDocPrCorruption would use data from the doc2, which is incorrect, and could result in a corrupt document

    Now, the fixDocPrCorruption can be used on multiple docxtemplater instances without causing any issue.

v3.34.3

Compare Source

Fix typescript definition for constructor / zip instance.

Allows to correctly autocomplete after doing doc.getZip().generate()

Thanks to @​oleksandr-danylchenko https://github.com/open-xml-templating/docxtemplater/pull/704

v3.34.2

Compare Source

Fix typescript definition for getAllStructuredTags : remove file argument.

Fixed in #​702 thanks to @​oleksandr-danylchenko

v3.34.1

Compare Source

Bugfix in require("docxtemplater/expressions.js") :

Avoid error const expressionParser = require("docxtemplater/expressions.js");

TypeError: 'set' on proxy: trap returned falsish for property 'x'

This will no more happen now, in the case where for example you wanted to set a property to any falsy value, like this :

{x=0}

v3.34.0

Compare Source

Add support to reorder modules automatically using module.priority.

Fetch data from _rels/.rels and pass it to each module function using the relType attribute.

Fixes issue in HTML module for some particular input that contains some tp/document-orig.xml file.

v3.33.0

Compare Source

Add support for templating text files (or simple strings).

Usage is like this :

const TxtTemplater = require("docxtemplater/js/text.js");
const doc = new TxtTemplater("Hello {user}, how are you ?");
const result = doc.render({ user: "John" });
console.log(result); // Shows : "Hello John, how are you ?"

This also works with loops and options can be set (parser for angular expressions)

v3.32.6

Compare Source

Automatically template footnotes

v3.32.5

Compare Source

When having a comment inside a placeholder, the document could get corrupt.

This is now fixed.

v3.32.4

Compare Source

Update resolveOffset algorithm to improve slides module compatibility.
Internal update of moduleApiVersion to 3.34.0

v3.32.3

Compare Source

Bugfix of version 3.32.2, 3.32.1, 3.32.0

When using this document :

Hello {name}!

if the data is { name: "" } with the "docxtemplater/expresssions.js" option, the tag will render the following :

Hello !

In version 3.32.2, this would have rendered Hello undefined! which is incorrect.

v3.32.2

Compare Source

Bugfix of version 3.32.1 and 3.32.0.

Correctly expose require("docxtemplater/expressions.js").

v3.32.1

Compare Source

Add support to accented characters in tags when using the "docxtemplater/expressions.js" parser.

Tags such as {être} will not throw an error.

v3.32.0

Compare Source

Expose "docxtemplater/expressions.js" to simplify the parser option for angular parser.

You now can replace your angularParser code with the following :

const expressionParser = require("docxtemplater/expressions.js");
new Docxtemplater(zip, { parser: expressionParser });

For IE11 or other runtimes that do not support "Proxy", you can use instead :

const expressionParser = require("docxtemplater/expressions.js");
new Docxtemplater(zip, { parser: expressionParser });

Both examples require the angular-expressions package which is an external dependency :

npm install --save angular-expressions

v3.31.6

Compare Source

Add replaceFirstSection and replaceLastSection booleans types for typescript and the subsection module.

v3.31.5

Compare Source

Bugfix for pptx files not keeping correct font properties (font-size) when using {linebreak: true} option.

v3.31.4

Compare Source

Bugfix to correctly handle empty loops.

Fixes https://github.com/open-xml-templating/docxtemplater/issues/680

Previously the following stack trace would be shown :

TypeError: Cannot read properties of undefined (reading 'lIndex')
    at .../docxtemplater/js/modules/loop.js:331:42
    at Array.some (<anonymous>)
    at LoopModule.postparse (.../docxtemplater/js/modules/loop.js:322:15)
    at .../docxtemplater/js/parser.js:226:24
    at Array.reduce (<anonymous>)
    at _postparse (.../docxtemplater/js/parser.js:225:22)
    at postparse (.../docxtemplater/js/parser.js:228:20)
    at .../docxtemplater/js/modules/expand-pair-trait.js:268:30
    at Array.reduce (<anonymous>)
    at Object.postparse (.../docxtemplater/js/modules/expand-pair-trait.js:248:32)

Now the template is rendered correctly.

v3.31.3

Compare Source

Bugfix for table module : merge-cells-col did not work correctly when placed inside a loop.

Fixes : https://github.com/open-xml-templating/docxtemplater/issues/671

v3.31.2

Compare Source

Bugfix to avoid throwing following error :

New Delimiters cannot be parsed

When the template contains an equal sign right after a closing tag.

For example, the following template would throw that error in previous versions :

Hello {name}===

Now, no error is thrown.

v3.31.1

Compare Source

Correctly handle case when having a manual section break of type "nextPage", that is within a loop.

Add "cp:contentStatus" to templated tags

v3.31.0

Compare Source

When having a table, that after the generation, has no table rows (<w:tr> elements), the whole <w:tbl> element is dropped.

This automatically fixes a corruption that would happen when using a loop within table rows.

If you are using the subtemplate module, you have to update to subtemplate module 3.11.3

v3.30.3

Compare Source

Throw an error when calling doc.render() twice on the same instance.

v3.30.2

Compare Source

Bugfix in fix-doc-pr-corruption module to work with xmlDocuments too.

v3.30.1

Compare Source

Bugfix to correctly add xml:space="preserve" for each type of placeholder, not just for the loop module.
This fixes spacing issues that happened rarely in many modules that have an "inline mode" (word-run, image, html, styling, paragraph-placeholder).

v3.30.0

Compare Source

Make it possible to have a tag that contains multiple lines, like this :

Hello {
    name = "John";
	name;
}, how are you ?

And remove the paragraphs correctly.

Internal update of moduleApiVersion to 3.33.0

After upgrading this, you will need to upgrade :

  • image-module to 3.14.2 or higher
  • xlsx-module to 3.10.2 or higher
  • styling-module to 3.6.14 or higher

v3.29.5

Compare Source

Bugfix to make loop module work well even on dotx files.

Internal update of moduleApiVersion to 3.32.0

v3.29.4

Compare Source

Improve corruption handling of adding <w:p/> after some tables, even when the table is added inside a loop.

v3.29.3

Compare Source

Avoid corruption when having a table without a <w:p/>. This corruption only happens on very rare cases, for example when having a table containing a table that has no paragraph after it.

v3.29.2

Compare Source

With the paragraphLoop option turned on, when using a loop that was containing a selfclosing paragraph : <w:p/>, the generated output could become corrupt.

Now the output is valid.

v3.29.1

Compare Source

Handle following input when using loops with array :

{#users}
Hello {name}
{/users}
doc.renderAsync({
  users: [
    new Promise((resolve, reject) => {
      resolve({ name: "John" });
    }),
    new Promise((resolve, reject) => {
      resolve({ name: "Mary" });
    }),
  ],
});

v3.29.0

Compare Source

Log errors on multiple lines instead of on one line.

Previously, error messages were shown in one line only, making the output hard to read.

Now, error messages are shown on multiple lines, using normal JSON indentation.

You can use the previous behavior (one big JSON line) by writing the following :

var doc = new Docxtemplater(zip, {
  paragraphLoop: true,
  linebreaks: true,
  errorLogging: "jsonl", // JSONL stands for JSON Line, one big JSON entry on a single line
  // Other options for errorLogging are false which means do not log anything, or "json" (which is now the default)
});

v3.28.6

Compare Source

Template document properties that are set inside <vt:lpwstr> in docProps/custom.xml

v3.28.5

Compare Source

Add slideLayout files to list of templated files

Internal update of moduleApiVersion to 3.31.0

v3.28.4

Compare Source

Bugfix issue introduced in 3.28.3 when using expandOne trait

v3.28.3

Compare Source

Update expandOne trait to work even when having nested <w:p> and <w:txbxContent> tags

Fixes issue in the styling module in particular.

This release might slow down documents having many rawxml tags

v3.28.2

Compare Source

Throw specific error when using rawxml tag and the type of the output is not a string.

For example, if you do the following :

{@&#8203;raw}
doc.render({
  raw: 42,
});

This will throw the following error :

Non string values are not allowed for rawXML tags

v3.28.1

Compare Source

Typing files : make them Typescript 3.x compatible (a change in 3.28.0 of docxtemplater made the typings only work with typescript 4+)

Add type for "errorLogging" parameter

v3.28.0

Compare Source

Internal update of moduleApiVersion to 3.30.0

Add matchers API for modules, to replace the internal parse function.

This internal change fixes bugs that can be triggered between for example the SlidesModule and the TableGridPptxModule.

When two modules have two prefixes that contain each other, for example the SlidesModule has a prefix of : as in {:users}, and the TableGridPptxModule is :# as in {:#&#8203;1}.

In versions before this version, the tag {:#&#8203;1} would be Interpreted as a SlidesModule tag depending on the order of the modules.

Since this version, the matchers API makes it possible for docxtemplater to intelligently decide that the tag belongs to the TableGridPptxModule.
The algorithm used is to use a "priority" integer if present, or to use the tag that has the longest prefix.

This change requires updates in following modules :

  • chart 3.4.0 or higher
  • footnotes 3.3.0 or higher
  • html-pptx 3.3.0 or higher
  • html 3.29.0 or higher
  • image 3.12.0 or higher
  • paragraph-placeholder 3.3.0 or higher
  • pptx-sub 3.1.0 or higher
  • slides 3.4.0 or higher
  • styling 3.5.0 or higher
  • subsection 3.5.0 or higher
  • subtemplate 3.9.0 or higher
  • table 3.15.0 or higher
  • word-run 3.2.0 or higher
  • xlsx 3.8.0 or higher

v3.27.2

Compare Source

Internal bugfix that would show a stacktrace instead of the real underlying RenderingError.

The stacktrace was "Cannot read property indexOf of undefined" in the isStarting function

Tag names containing "non-breaking-spaces" (Ascii code 160) will be converted to normal spaces.

v3.27.1

Compare Source

Bugfix issue introduced in 3.27.0

When using the option {linebreaks: true}, documents could be made corrupt on version 3.27.0

This version fixes the corruption

v3.27.0

Compare Source

Internal update of moduleApiVersion to 3.29.0

Add support to output docx files that are bigger than 500MB.

Please make sure to update the following modules if you use them :

  • chart 3.3.0 or higher
  • error-location 3.4.0 or higher
  • html 3.28.0 or higher
  • image 3.11.0 or higher
  • subsection 3.4.0 or higher
  • subtemplate 3.8.0 or higher
  • table 3.14.0 or higher
  • styling 3.4.0 or higher

Previously, after a certain limit (usually about 500MB), the error "Invalid String Length" would be thrown by Node, because that is the max string length allowed.

Fixes issue reported here : https://stackoverflow.com/questions/68578216/docxtemplater-rangeerror-invalid-string-length

A test has been created, which you can run with npm run memorytest if you clone this repository. It will create a file of about 550MB. This test need more memory than the default tests, and takes about 75 seconds on my computer.

v3.26.4

Compare Source

Bugfix to template header and footers created by Office365.

Previously, only files matching header\d.xml would be templated.
Now, also header.xml (without any digit) will be templated.

v3.26.3

Compare Source

Bugfix issue when having tab character in the document, that would, after rendering, appear as " " in the document.

When updating to this version, you also need to update

  • the xlsx module to 3.7.2
  • the error-location module to 3.3.1

Internal update of moduleApiVersion to 3.28.0

v3.26.2

Compare Source

Bugfix issue "Cannot read property 'tag' of undefined" when having an empty condition, like :

Hello {#a}{/a}

Altough there is not really a good reason to create such an empty condition, it is better to not fail with an obscure error message.

v3.26.1

Compare Source

Add code for fix-doc-pr-corruption accessible by doing :

const fixDocPrCorruption = require("docxtemplater/js/modules/fix-doc-pr-corruption.js");
const doc = new Docxtemplater(zip, { modules: [fixDocPrCorruption] });

v3.26.0

Compare Source

Add automatic error logging using console.log to make code samples easier.

You can replace the following code :

// The error object contains additional information when logged
// with JSON.stringify (it contains a properties object containing all suberrors).
function replaceErrors(key, value) {
  if (value instanceof Error) {
    return Object.getOwnPropertyNames(value).reduce(function (error, key) {
      error[key] = value[key];
      return error;
    }, {});
  }
  return value;
}

function errorHandler(error) {
  console.log(JSON.stringify({ error: error }, replaceErrors));

  if (error.properties && error.properties.errors instanceof Array) {
    const errorMessages = error.properties.errors
      .map(function (error) {
        return error.properties.explanation;
      })
      .join("\n");
    console.log("errorMessages", errorMessages);
    // errorMessages is a humanly readable message looking like this:
    // 'The tag beginning with "foobar" is unopened'
  }
  throw error;
}

var zip = new PizZip(content);
var doc;
try {
  doc = new Docxtemplater(zip, {
    paragraphLoop: true,
    linebreaks: true,
  });
} catch (error) {
  // Catch compilation errors
  // (errors caused by the compilation of the template: misplaced tags)
  errorHandler(error);
}

try {
  // render the document
  // (replace all occurences of {first_name} by John, {last_name} by Doe, ...)
  doc.render({
    first_name: "John",
    last_name: "Doe",
    phone: "0652455478",
    description: "New Website",
  });
} catch (error) {
  // Catch rendering errors
  // (errors relating to the rendering of the template:
  // for example when the angularParser throws an error)
  errorHandler(error);
}

to this :

var zip = new PizZip(content);
var doc = new Docxtemplater(zip, {
  paragraphLoop: true,
  linebreaks: true,
});

// render the document
// (replace all occurences of {first_name} by John, {last_name} by Doe, ...)
doc.render({
  first_name: "John",
  last_name: "Doe",
  phone: "0652455478",
  description: "New Website",
});

To disable this automatic errorLogging, use :

var doc = new Docxtemplater(zip, {
  paragraphLoop: true,
  linebreaks: true,
  errorLogging: false,
});

v3.25.5

Compare Source

Add specific error message when using a module without instantiating it.

When doing :

const HtmlModule = require("docxtemplater-html-module");
const doc = new Docxtemplater(zip, { modules: [HtmlModule] });

The error message shown will now be :

Cannot attach a class/function as a module. Most probably you forgot to call new on the module.

If you get this error, you should simply write :

const HtmlModule = require("docxtemplater-html-module");
const doc = new Docxtemplater(zip, { modules: [new HtmlModule()] });

v3.25.4

Compare Source

Bugfix when having loop containing hebrew, the text would be escaped once for each iteration

The regression was introduced in version 3.25.2 and is now fixed

v3.25.3

Compare Source

Fix issue in rendering of tables generated with loop module for Powerpoint documents by deduplicating a16:rowId tags.

Previously, when having a loop, the following would be generated :

<a:tr>
<a:t>Content</a:t>
<a:extLst>
<a:ext>
	<a16:rowId val="1379104516"/>
</a:ext>
</a:extLst>
</a:tr>
<a:tr>
<a:t>Content</a:t>
<a:extLst>
<a:ext>
	<a16:rowId val="1379104516"/>
</a:ext>
</a:extLst>
</a:tr>

The duplicate val attribute for the a16:rowId caused rendering issues on office live.

Now, the values are incremented after each loop, like this :

<a:ext>
	<a16:rowId val="1379104516"/>
</a:ext>
<a:ext>
	<a16:rowId val="1379104517"/>
</a:ext>

v3.25.2

Compare Source

When having a loop inside a pptx table, the height of the frame was not updated if a tag in the form of : <a:ext uri="{11111111-1111-1111-1111-111111111111}"> was present in the document.

Now, those tags are ignored and the height of the table should be updated appropriately.

v3.25.1

Compare Source

When having a loop inside a pptx table, the height of the frame will automatically be updated if some rows are added or removed.

In previous versions, the table would keep the previous height, meaning the added rows would not be shown, except after forcing a rerendering of the table by changing the fontsize.

v3.25.0

Compare Source

Add support for "lambdas", eg if a value in the data is a function, that function will be called with the scope and the scopeManager.

You now can write :

const doc = new Docxtemplater(zip);
doc.render({
  userGreeting: (scope) => {
    return "How is it going, " + scope.user + " ? ";
  },
  users: [
    {
      name: "John",
    },
    {
      name: "Mary",
    },
  ],
});

With the following template :

{#users}
{userGreeting}
{/}

v3.24.0

Compare Source

Add support to remove the call to setData or resolveData.

(The setData function and resolveData will still work, but will be dropped in Docxtemplater v4)

You can now do :

const doc = new Docxtemplater(zip, { linebreaks: true });
doc.render({
  user: "John",
});

or, in the async version :

const doc = new Docxtemplater(zip, { linebreaks: true });
doc
  .renderAsync({
    user: new Promise(function (resolve, reject) {
      resolve("John");
    }),
  })
  .then(function () {
    const zip = doc.getZip().generate({
      type: "nodebuffer",
      compression: "DEFLATE",
    });
  });

v3.23.2

Compare Source

Bugfix error : Cannot read property 'type' of undefined when having a loop inside a loop that has an empty content, such as :

{#a}
{#b}{/}{/}

v3.23.1

Compare Source

Add typescript typings to InspectModule

v3.23.0

Compare Source

Internal cleanup :

  • Remove internal unused function getNearestLeftIndex, getNearestRightIndex, getNearestLeftIndexWithCache, getNearestRightIndexWithCache from doc-utils.

  • Add explanation to all errors that have id

v3.22.8

Compare Source

Use @​xmldom/xmldom instead of xmldom

See : https://github.com/xmldom/xmldom/issues/271

v3.22.7

Compare Source

Bugfix to avoid loosing an image that is contained inside a paragraph loop.

The image would disappear only when the image was followed directly by the end of the loop, like this :

{#loop}
[IMAGE]
{/loop}

v3.22.6

Compare Source

Bugfix to avoid error message Cannot read property 'offset' of undefined on some rare templates.

The internal mergesort function had a bug.

v3.22.5

Compare Source

Bugfix to avoid dropping section when having a loop right before a section break

v3.22.4

Compare Source

When having a loop containing a page section break, the generated document had continuous section breaks in the output.

With this version, the page section break should be rendered as page section breaks, and create as many pages as there are items in the loop.

v3.22.3

Compare Source

Update InspectModule to make getTags function work well with XLSXModule

v3.22.2

Compare Source

Disallow calling loadZip if using v4 constructor

v3.22.1

Compare Source

Correctly handle <<tag>> delimiters when saved in word as &lt;&lt;tag>> Fixes #​606

v3.22.0

Compare Source

  • Add resolveOffset internal property on scope managers to be able to handle the slides loop case correctly.
  • Update moduleApiVersion to 3.26.0.

v3.21.2

Compare Source

Internal change to allow to match tags with non-breaking space.

When entering Ctrl+Shift+Space, a "non-breaking" space is created.

When using a non-breaking space in the tag {:subtemplate doc}, or `{:table data}, the tag would not be replaced correctly. You need to upgrade the PRO modules as well to their latest version in order to fix the bug.

v3.21.1

Compare Source

Bugfix issue with spaces that would disappear after rendering :

Correctly add xml:space="preserve" to all relevant w:t tags, ie all <w:t> tags that contain a placeholder.

v3.21.0

[Compare Source](https://togithub.com/open-xml-templating/docxtemplater/compar


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from e8958da to 89afd37 Compare March 27, 2020 15:40
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.2 fix(deps): update dependency docxtemplater to v3.17.3 Mar 27, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 89afd37 to c837918 Compare April 2, 2020 21:53
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.3 fix(deps): update dependency docxtemplater to v3.17.4 Apr 2, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from c837918 to cdee1de Compare April 3, 2020 21:36
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.4 fix(deps): update dependency docxtemplater to v3.17.5 Apr 3, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from cdee1de to 3c4aa85 Compare April 17, 2020 14:54
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.5 fix(deps): update dependency docxtemplater to v3.17.6 Apr 17, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 3c4aa85 to d9e1bce Compare June 15, 2020 14:42
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.6 fix(deps): update dependency docxtemplater to v3.17.7 Jun 15, 2020
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.7 fix(deps): update dependency docxtemplater to v3.17.8 Jun 15, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch 2 times, most recently from c884f17 to 5e8f15a Compare June 18, 2020 13:04
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.8 fix(deps): update dependency docxtemplater to v3.17.9 Jun 18, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 5e8f15a to 324d74f Compare August 22, 2020 05:57
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.17.9 fix(deps): update dependency docxtemplater to v3.18.0 Aug 22, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 324d74f to 67bdb6a Compare October 28, 2020 05:55
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.18.0 fix(deps): update dependency docxtemplater to v3.19.6 Oct 28, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 67bdb6a to 3cb7bf0 Compare November 5, 2020 22:57
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.19.6 fix(deps): update dependency docxtemplater to v3.19.7 Nov 5, 2020
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 3cb7bf0 to cb724e7 Compare January 22, 2021 11:53
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.19.7 fix(deps): update dependency docxtemplater to v3.19.9 Jan 22, 2021
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from cb724e7 to 4a4f78b Compare February 9, 2021 13:00
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.19.9 fix(deps): update dependency docxtemplater to v3.19.10 Feb 9, 2021
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 4a4f78b to 757b08a Compare April 26, 2021 15:27
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.19.10 fix(deps): update dependency docxtemplater to v3.21.1 Apr 26, 2021
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 757b08a to f9435fd Compare May 20, 2021 10:29
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.21.1 fix(deps): update dependency docxtemplater to v3.21.2 May 20, 2021
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.42.4 fix(deps): update dependency docxtemplater to v3.42.6 Dec 18, 2023
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from c815208 to ceafb89 Compare December 23, 2023 15:03
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.42.6 fix(deps): update dependency docxtemplater to v3.42.7 Dec 23, 2023
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from ceafb89 to def1241 Compare January 7, 2024 18:49
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.42.7 fix(deps): update dependency docxtemplater to v3.43.0 Jan 7, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from def1241 to 6a87fd4 Compare January 16, 2024 12:26
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.43.0 fix(deps): update dependency docxtemplater to v3.43.1 Jan 16, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 6a87fd4 to f4ecf69 Compare January 25, 2024 17:49
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.43.1 fix(deps): update dependency docxtemplater to v3.44.0 Jan 25, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from f4ecf69 to e311a6d Compare February 14, 2024 15:53
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.44.0 fix(deps): update dependency docxtemplater to v3.45.0 Feb 14, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from e311a6d to 0103ff1 Compare February 18, 2024 13:06
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.45.0 fix(deps): update dependency docxtemplater to v3.45.1 Feb 18, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 0103ff1 to 995efdd Compare February 21, 2024 16:50
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.45.1 fix(deps): update dependency docxtemplater to v3.46.0 Feb 21, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 995efdd to 087d9a0 Compare March 21, 2024 21:40
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.46.0 fix(deps): update dependency docxtemplater to v3.46.1 Mar 21, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 087d9a0 to 7dcbf77 Compare March 31, 2024 14:17
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.46.1 fix(deps): update dependency docxtemplater to v3.46.2 Mar 31, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 7dcbf77 to ebb87fd Compare April 20, 2024 07:36
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.46.2 fix(deps): update dependency docxtemplater to v3.47.0 Apr 20, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from ebb87fd to fb2022c Compare April 27, 2024 12:28
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.47.0 fix(deps): update dependency docxtemplater to v3.47.1 Apr 27, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from fb2022c to e8fc80a Compare May 9, 2024 15:49
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.47.1 fix(deps): update dependency docxtemplater to v3.47.2 May 9, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from e8fc80a to 9d33037 Compare May 21, 2024 22:58
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.47.2 fix(deps): update dependency docxtemplater to v3.47.3 May 21, 2024
@renovate renovate bot force-pushed the renovate/docxtemplater-3.x branch from 9d33037 to 1baa214 Compare May 25, 2024 16:47
@renovate renovate bot changed the title fix(deps): update dependency docxtemplater to v3.47.3 fix(deps): update dependency docxtemplater to v3.47.4 May 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant