@bnsights/bbsf-utilities 1.0.41 → 1.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -1
- package/{esm2020 → esm2022}/bnsights-bbsf-utilities.mjs +4 -4
- package/{esm2020 → esm2022}/lib/bbsf-utilities.module.mjs +59 -59
- package/esm2022/lib/shared/authentication/auth.service.mjs +211 -0
- package/{esm2020 → esm2022}/lib/shared/authentication/index.mjs +1 -1
- package/{esm2020 → esm2022}/lib/shared/config/environment.mjs +11 -11
- package/{esm2020 → esm2022}/lib/shared/config/word/constants.mjs +104 -104
- package/{esm2020 → esm2022}/lib/shared/config/word/docx-document.mjs +347 -347
- package/{esm2020 → esm2022}/lib/shared/config/word/helpers/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/helpers/render-document-file.mjs +153 -153
- package/{esm2020 → esm2022}/lib/shared/config/word/helpers/xml-builder.mjs +1835 -1835
- package/{esm2020 → esm2022}/lib/shared/config/word/html-to-docx.mjs +186 -186
- package/{esm2020 → esm2022}/lib/shared/config/word/index.mjs +49 -49
- package/{esm2020 → esm2022}/lib/shared/config/word/namespaces.mjs +36 -36
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/content-types.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/core.mjs +6 -6
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document-rels.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/document.template.mjs +17 -17
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/font-table.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/generic-rels.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/index.mjs +12 -12
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/numbering.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/rels.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/settings.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/styles.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/theme.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/schemas/web-settings.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/utils/color-conversion.mjs +59 -59
- package/{esm2020 → esm2022}/lib/shared/config/word/utils/list.mjs +50 -50
- package/{esm2020 → esm2022}/lib/shared/config/word/utils/unit-conversion.mjs +29 -29
- package/{esm2020 → esm2022}/lib/shared/config/word/utils/url.mjs +6 -6
- package/{esm2020 → esm2022}/lib/shared/config/word/utils/vnode.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/documentTemplate.mjs +12 -12
- package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/config/word/word-work/templates/mhtPartTemplate.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/config/word/word-work/utils.mjs +25 -25
- package/{esm2020 → esm2022}/lib/shared/enums/authentication-modes-enums.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/index.mjs +3 -3
- package/{esm2020 → esm2022}/lib/shared/models/UserModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/models/area-model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/models/error-model.mjs +2 -2
- package/{esm2020 → esm2022}/lib/shared/models/index.mjs +4 -4
- package/{esm2020 → esm2022}/lib/shared/models/request-options-model.mjs +10 -10
- package/{esm2020 → esm2022}/lib/shared/models/word-document-model.mjs +7 -7
- package/{esm2020 → esm2022}/lib/shared/services/appearance-configuration.service.mjs +35 -35
- package/esm2022/lib/shared/services/configuration.service.mjs +24 -0
- package/{esm2020 → esm2022}/lib/shared/services/control-validation.service.mjs +173 -173
- package/esm2022/lib/shared/services/environment.service.mjs +75 -0
- package/{esm2020 → esm2022}/lib/shared/services/index.mjs +11 -11
- package/{esm2020 → esm2022}/lib/shared/services/master-layout.service.mjs +72 -72
- package/{esm2020 → esm2022}/lib/shared/services/request-handler.service.mjs +199 -199
- package/{esm2020 → esm2022}/lib/shared/services/styles-bundle.service.mjs +55 -55
- package/{esm2020 → esm2022}/lib/shared/services/translate.service.mjs +14 -14
- package/{esm2020 → esm2022}/lib/shared/services/translation-resolver.service.mjs +6 -6
- package/{esm2020 → esm2022}/lib/shared/services/utility.service.mjs +87 -87
- package/{esm2020 → esm2022}/lib/shared/services/word-document.service.mjs +38 -38
- package/{esm2020 → esm2022}/public-api.mjs +29 -29
- package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs +3836 -3836
- package/{fesm2020 → fesm2022}/bnsights-bbsf-utilities.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/bbsf-utilities.module.d.ts +10 -10
- package/lib/shared/authentication/auth.service.d.ts +52 -52
- package/lib/shared/authentication/index.d.ts +1 -1
- package/lib/shared/config/environment.d.ts +1 -1
- package/lib/shared/config/word/constants.d.ts +124 -124
- package/lib/shared/config/word/docx-document.d.ts +73 -73
- package/lib/shared/config/word/helpers/index.d.ts +1 -1
- package/lib/shared/config/word/helpers/render-document-file.d.ts +2 -2
- package/lib/shared/config/word/helpers/xml-builder.d.ts +16 -16
- package/lib/shared/config/word/html-to-docx.d.ts +1 -1
- package/lib/shared/config/word/index.d.ts +1 -1
- package/lib/shared/config/word/namespaces.d.ts +36 -36
- package/lib/shared/config/word/schemas/content-types.d.ts +1 -1
- package/lib/shared/config/word/schemas/core.d.ts +1 -1
- package/lib/shared/config/word/schemas/document-rels.d.ts +1 -1
- package/lib/shared/config/word/schemas/document.template.d.ts +4 -4
- package/lib/shared/config/word/schemas/font-table.d.ts +1 -1
- package/lib/shared/config/word/schemas/generic-rels.d.ts +1 -1
- package/lib/shared/config/word/schemas/index.d.ts +12 -12
- package/lib/shared/config/word/schemas/numbering.d.ts +1 -1
- package/lib/shared/config/word/schemas/rels.d.ts +1 -1
- package/lib/shared/config/word/schemas/settings.d.ts +1 -1
- package/lib/shared/config/word/schemas/styles.d.ts +1 -1
- package/lib/shared/config/word/schemas/theme.d.ts +1 -1
- package/lib/shared/config/word/schemas/web-settings.d.ts +1 -1
- package/lib/shared/config/word/utils/color-conversion.d.ts +7 -7
- package/lib/shared/config/word/utils/list.d.ts +6 -6
- package/lib/shared/config/word/utils/unit-conversion.d.ts +29 -29
- package/lib/shared/config/word/utils/url.d.ts +1 -1
- package/lib/shared/config/word/utils/vnode.d.ts +1 -1
- package/lib/shared/config/word/word-work/templates/documentTemplate.d.ts +12 -12
- package/lib/shared/config/word/word-work/templates/index.d.ts +3 -3
- package/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.d.ts +1 -1
- package/lib/shared/config/word/word-work/templates/mhtPartTemplate.d.ts +1 -1
- package/lib/shared/config/word/word-work/utils.d.ts +1 -1
- package/lib/shared/enums/authentication-modes-enums.d.ts +6 -6
- package/lib/shared/index.d.ts +3 -3
- package/lib/shared/models/UserModel.d.ts +6 -6
- package/lib/shared/models/area-model.d.ts +4 -4
- package/lib/shared/models/error-model.d.ts +5 -5
- package/lib/shared/models/index.d.ts +4 -4
- package/lib/shared/models/request-options-model.d.ts +11 -11
- package/lib/shared/models/word-document-model.d.ts +16 -16
- package/lib/shared/services/appearance-configuration.service.d.ts +14 -14
- package/lib/shared/services/configuration.service.d.ts +10 -10
- package/lib/shared/services/control-validation.service.d.ts +23 -23
- package/lib/shared/services/environment.service.d.ts +25 -25
- package/lib/shared/services/index.d.ts +11 -11
- package/lib/shared/services/master-layout.service.d.ts +24 -24
- package/lib/shared/services/request-handler.service.d.ts +33 -33
- package/lib/shared/services/styles-bundle.service.d.ts +12 -12
- package/lib/shared/services/translate.service.d.ts +6 -6
- package/lib/shared/services/translation-resolver.service.d.ts +2 -2
- package/lib/shared/services/utility.service.d.ts +23 -23
- package/lib/shared/services/word-document.service.d.ts +8 -8
- package/package.json +28 -29
- package/public-api.d.ts +17 -17
- package/bnsights-bbsf-utilities-1.0.41.tgz +0 -0
- package/esm2020/lib/shared/authentication/auth.service.mjs +0 -211
- package/esm2020/lib/shared/services/configuration.service.mjs +0 -24
- package/esm2020/lib/shared/services/environment.service.mjs +0 -75
- package/fesm2015/bnsights-bbsf-utilities.mjs +0 -4555
- package/fesm2015/bnsights-bbsf-utilities.mjs.map +0 -1
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
import { create } from 'xmlbuilder2';
|
|
2
|
-
import VNode from 'virtual-dom/vnode/vnode';
|
|
3
|
-
import VText from 'virtual-dom/vnode/vtext';
|
|
4
|
-
// eslint-disable-next-line import/no-named-default
|
|
5
|
-
import { default as HTMLToVDOM } from 'html-to-vdom';
|
|
6
|
-
import { relsXML } from './schemas';
|
|
7
|
-
import { DocxDocument } from './docx-document';
|
|
8
|
-
import { renderDocumentFile } from './helpers';
|
|
9
|
-
import { getMHTdocument } from "./word-work/utils";
|
|
10
|
-
import { pixelRegex, pixelToTWIP, cmRegex, cmToTWIP, inchRegex, inchToTWIP, pointRegex, pointToHIP, } from './utils/unit-conversion';
|
|
11
|
-
import { defaultDocumentOptions, defaultHTMLString, relsFolderName, headerFileName, footerFileName, themeFileName, documentFileName, headerType, footerType, internalRelationship, wordFolder, themeFolder, themeType, } from './constants';
|
|
12
|
-
import { generateDocumentTemplateHeader, generateDocumentTemplateFooter, generateDocumentTemplateFooterWithoutPaging } from './schemas/document.template';
|
|
13
|
-
const convertHTML = HTMLToVDOM({
|
|
14
|
-
VNode,
|
|
15
|
-
VText,
|
|
16
|
-
});
|
|
17
|
-
const mergeOptions = (options, patch) => ({ ...options, ...patch });
|
|
18
|
-
const fixupFontSize = (fontSize) => {
|
|
19
|
-
let normalizedFontSize;
|
|
20
|
-
if (pointRegex.test(fontSize)) {
|
|
21
|
-
const matchedParts = fontSize.match(pointRegex);
|
|
22
|
-
normalizedFontSize = pointToHIP(matchedParts[1]);
|
|
23
|
-
}
|
|
24
|
-
else if (fontSize) {
|
|
25
|
-
// assuming it is already in HIP
|
|
26
|
-
normalizedFontSize = fontSize;
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
normalizedFontSize = null;
|
|
30
|
-
}
|
|
31
|
-
return normalizedFontSize;
|
|
32
|
-
};
|
|
33
|
-
const normalizeUnits = (dimensioningObject, defaultDimensionsProperty) => {
|
|
34
|
-
let normalizedUnitResult = {};
|
|
35
|
-
if (typeof dimensioningObject === 'object' && dimensioningObject !== null) {
|
|
36
|
-
Object.keys(dimensioningObject).forEach((key) => {
|
|
37
|
-
if (pixelRegex.test(dimensioningObject[key])) {
|
|
38
|
-
const matchedParts = dimensioningObject[key].match(pixelRegex);
|
|
39
|
-
normalizedUnitResult[key] = pixelToTWIP(matchedParts[1]);
|
|
40
|
-
}
|
|
41
|
-
else if (cmRegex.test(dimensioningObject[key])) {
|
|
42
|
-
const matchedParts = dimensioningObject[key].match(cmRegex);
|
|
43
|
-
normalizedUnitResult[key] = cmToTWIP(matchedParts[1]);
|
|
44
|
-
}
|
|
45
|
-
else if (inchRegex.test(dimensioningObject[key])) {
|
|
46
|
-
const matchedParts = dimensioningObject[key].match(inchRegex);
|
|
47
|
-
normalizedUnitResult[key] = inchToTWIP(matchedParts[1]);
|
|
48
|
-
}
|
|
49
|
-
else if (dimensioningObject[key]) {
|
|
50
|
-
normalizedUnitResult[key] = dimensioningObject[key];
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
// incase value is something like 0
|
|
54
|
-
normalizedUnitResult[key] = defaultDimensionsProperty[key];
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
// eslint-disable-next-line no-param-reassign
|
|
60
|
-
normalizedUnitResult = null;
|
|
61
|
-
}
|
|
62
|
-
return normalizedUnitResult;
|
|
63
|
-
};
|
|
64
|
-
const normalizeDocumentOptions = (documentOptions) => {
|
|
65
|
-
const normalizedDocumentOptions = { ...documentOptions };
|
|
66
|
-
Object.keys(documentOptions).forEach((key) => {
|
|
67
|
-
// eslint-disable-next-line default-case
|
|
68
|
-
switch (key) {
|
|
69
|
-
case 'pageSize':
|
|
70
|
-
case 'margins':
|
|
71
|
-
normalizedDocumentOptions[key] = normalizeUnits(documentOptions[key], defaultDocumentOptions[key]);
|
|
72
|
-
break;
|
|
73
|
-
case 'fontSize':
|
|
74
|
-
case 'complexScriptFontSize':
|
|
75
|
-
normalizedDocumentOptions[key] = fixupFontSize(documentOptions[key]);
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return normalizedDocumentOptions;
|
|
80
|
-
};
|
|
81
|
-
// Ref: https://en.wikipedia.org/wiki/Office_Open_XML_file_formats
|
|
82
|
-
// http://officeopenxml.com/anatomyofOOXML.php
|
|
83
|
-
async function addFilesToContainer(zip, htmlString, suppliedDocumentOptions, headerHTMLString, footerHTMLString) {
|
|
84
|
-
debugger;
|
|
85
|
-
const normalizedDocumentOptions = normalizeDocumentOptions(suppliedDocumentOptions);
|
|
86
|
-
const documentOptions = mergeOptions(defaultDocumentOptions, normalizedDocumentOptions);
|
|
87
|
-
if (documentOptions.header && !headerHTMLString) {
|
|
88
|
-
// eslint-disable-next-line no-param-reassign
|
|
89
|
-
headerHTMLString = defaultHTMLString;
|
|
90
|
-
}
|
|
91
|
-
if (documentOptions.footer && !footerHTMLString) {
|
|
92
|
-
// eslint-disable-next-line no-param-reassign
|
|
93
|
-
footerHTMLString = defaultHTMLString;
|
|
94
|
-
}
|
|
95
|
-
const docxDocument = new DocxDocument({ zip, htmlString, ...documentOptions });
|
|
96
|
-
// Conversion to Word XML happens here
|
|
97
|
-
docxDocument.documentXML = await renderDocumentFile(docxDocument);
|
|
98
|
-
debugger;
|
|
99
|
-
zip
|
|
100
|
-
.folder(relsFolderName)
|
|
101
|
-
.file('.rels', create({ encoding: 'UTF-8', standalone: true }, relsXML).toString({ prettyPrint: true }), { createFolders: false });
|
|
102
|
-
zip.folder('docProps').file('core.xml', docxDocument.generateCoreXML(), {
|
|
103
|
-
createFolders: false,
|
|
104
|
-
});
|
|
105
|
-
if (docxDocument.header && headerHTMLString) {
|
|
106
|
-
const vTree = convertHTML(headerHTMLString);
|
|
107
|
-
docxDocument.relationshipFilename = headerFileName;
|
|
108
|
-
const { headerId, headerXML } = await docxDocument.generateHeaderXML(vTree);
|
|
109
|
-
docxDocument.relationshipFilename = documentFileName;
|
|
110
|
-
const fileNameWithExt = `${headerType}${headerId}.xml`;
|
|
111
|
-
const relationshipId = docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, headerType, fileNameWithExt, internalRelationship);
|
|
112
|
-
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateHeader.toString({ prettyPrint: true }), {
|
|
113
|
-
createFolders: false,
|
|
114
|
-
});
|
|
115
|
-
docxDocument.headerObjects.push({ headerId, relationshipId, type: docxDocument.headerType });
|
|
116
|
-
}
|
|
117
|
-
if (docxDocument.footer && footerHTMLString) {
|
|
118
|
-
const vTree = convertHTML(footerHTMLString);
|
|
119
|
-
docxDocument.relationshipFilename = footerFileName;
|
|
120
|
-
const { footerId, footerXML } = await docxDocument.generateFooterXML(vTree);
|
|
121
|
-
docxDocument.relationshipFilename = documentFileName;
|
|
122
|
-
const fileNameWithExt = `${footerType}${footerId}.xml`;
|
|
123
|
-
const relationshipId = docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, footerType, fileNameWithExt, internalRelationship);
|
|
124
|
-
console.log(footerXML.toString({ prettyPrint: true }));
|
|
125
|
-
if (suppliedDocumentOptions.pageNumber)
|
|
126
|
-
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooter.toString({ prettyPrint: true }), {
|
|
127
|
-
createFolders: false,
|
|
128
|
-
});
|
|
129
|
-
else
|
|
130
|
-
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooterWithoutPaging.toString({ prettyPrint: true }), {
|
|
131
|
-
createFolders: false,
|
|
132
|
-
});
|
|
133
|
-
docxDocument.footerObjects.push({ footerId, relationshipId, type: docxDocument.footerType });
|
|
134
|
-
}
|
|
135
|
-
const themeFileNameWithExt = `${themeFileName}.xml`;
|
|
136
|
-
docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, themeType, `${themeFolder}/${themeFileNameWithExt}`, internalRelationship);
|
|
137
|
-
zip
|
|
138
|
-
.folder(wordFolder)
|
|
139
|
-
.folder(themeFolder)
|
|
140
|
-
.file(themeFileNameWithExt, docxDocument.generateThemeXML(), {
|
|
141
|
-
createFolders: false,
|
|
142
|
-
});
|
|
143
|
-
zip
|
|
144
|
-
.folder(wordFolder)
|
|
145
|
-
.file('document.xml', docxDocument.generateDocumentXML(), { createFolders: false })
|
|
146
|
-
.file('afchunk.mht', getMHTdocument(htmlString), {
|
|
147
|
-
createFolders: false,
|
|
148
|
-
})
|
|
149
|
-
.file('afchunkheader.mht', getMHTdocument(headerHTMLString), {
|
|
150
|
-
createFolders: false,
|
|
151
|
-
})
|
|
152
|
-
.file('afchunkfooter.mht', getMHTdocument(footerHTMLString), {
|
|
153
|
-
createFolders: false,
|
|
154
|
-
})
|
|
155
|
-
.file('fontTable.xml', docxDocument.generateFontTableXML(), { createFolders: false })
|
|
156
|
-
.file('styles.xml', docxDocument.generateStylesXML(), { createFolders: false })
|
|
157
|
-
.file('numbering.xml', docxDocument.generateNumberingXML(), { createFolders: false })
|
|
158
|
-
.file('settings.xml', docxDocument.generateSettingsXML(), { createFolders: false })
|
|
159
|
-
.file('webSettings.xml', docxDocument.generateWebSettingsXML(), { createFolders: false });
|
|
160
|
-
const relationshipXMLs = docxDocument.generateRelsXML();
|
|
161
|
-
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
162
|
-
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
163
|
-
console.log(xmlString);
|
|
164
|
-
zip.folder(wordFolder).folder(relsFolderName).file(`${fileName}.xml.rels`, xmlString, {
|
|
165
|
-
createFolders: false,
|
|
166
|
-
});
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
170
|
-
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
171
|
-
zip.folder(wordFolder).folder(relsFolderName).file(`header1.xml.rels`, xmlString, {
|
|
172
|
-
createFolders: false,
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
177
|
-
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
178
|
-
zip.folder(wordFolder).folder(relsFolderName).file(`footer1.xml.rels`, xmlString, {
|
|
179
|
-
createFolders: false,
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
zip.file('[Content_Types].xml', docxDocument.generateContentTypesXML(), { createFolders: false });
|
|
184
|
-
return zip;
|
|
185
|
-
}
|
|
186
|
-
export { addFilesToContainer };
|
|
1
|
+
import { create } from 'xmlbuilder2';
|
|
2
|
+
import VNode from 'virtual-dom/vnode/vnode';
|
|
3
|
+
import VText from 'virtual-dom/vnode/vtext';
|
|
4
|
+
// eslint-disable-next-line import/no-named-default
|
|
5
|
+
import { default as HTMLToVDOM } from 'html-to-vdom';
|
|
6
|
+
import { relsXML } from './schemas';
|
|
7
|
+
import { DocxDocument } from './docx-document';
|
|
8
|
+
import { renderDocumentFile } from './helpers';
|
|
9
|
+
import { getMHTdocument } from "./word-work/utils";
|
|
10
|
+
import { pixelRegex, pixelToTWIP, cmRegex, cmToTWIP, inchRegex, inchToTWIP, pointRegex, pointToHIP, } from './utils/unit-conversion';
|
|
11
|
+
import { defaultDocumentOptions, defaultHTMLString, relsFolderName, headerFileName, footerFileName, themeFileName, documentFileName, headerType, footerType, internalRelationship, wordFolder, themeFolder, themeType, } from './constants';
|
|
12
|
+
import { generateDocumentTemplateHeader, generateDocumentTemplateFooter, generateDocumentTemplateFooterWithoutPaging } from './schemas/document.template';
|
|
13
|
+
const convertHTML = HTMLToVDOM({
|
|
14
|
+
VNode,
|
|
15
|
+
VText,
|
|
16
|
+
});
|
|
17
|
+
const mergeOptions = (options, patch) => ({ ...options, ...patch });
|
|
18
|
+
const fixupFontSize = (fontSize) => {
|
|
19
|
+
let normalizedFontSize;
|
|
20
|
+
if (pointRegex.test(fontSize)) {
|
|
21
|
+
const matchedParts = fontSize.match(pointRegex);
|
|
22
|
+
normalizedFontSize = pointToHIP(matchedParts[1]);
|
|
23
|
+
}
|
|
24
|
+
else if (fontSize) {
|
|
25
|
+
// assuming it is already in HIP
|
|
26
|
+
normalizedFontSize = fontSize;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
normalizedFontSize = null;
|
|
30
|
+
}
|
|
31
|
+
return normalizedFontSize;
|
|
32
|
+
};
|
|
33
|
+
const normalizeUnits = (dimensioningObject, defaultDimensionsProperty) => {
|
|
34
|
+
let normalizedUnitResult = {};
|
|
35
|
+
if (typeof dimensioningObject === 'object' && dimensioningObject !== null) {
|
|
36
|
+
Object.keys(dimensioningObject).forEach((key) => {
|
|
37
|
+
if (pixelRegex.test(dimensioningObject[key])) {
|
|
38
|
+
const matchedParts = dimensioningObject[key].match(pixelRegex);
|
|
39
|
+
normalizedUnitResult[key] = pixelToTWIP(matchedParts[1]);
|
|
40
|
+
}
|
|
41
|
+
else if (cmRegex.test(dimensioningObject[key])) {
|
|
42
|
+
const matchedParts = dimensioningObject[key].match(cmRegex);
|
|
43
|
+
normalizedUnitResult[key] = cmToTWIP(matchedParts[1]);
|
|
44
|
+
}
|
|
45
|
+
else if (inchRegex.test(dimensioningObject[key])) {
|
|
46
|
+
const matchedParts = dimensioningObject[key].match(inchRegex);
|
|
47
|
+
normalizedUnitResult[key] = inchToTWIP(matchedParts[1]);
|
|
48
|
+
}
|
|
49
|
+
else if (dimensioningObject[key]) {
|
|
50
|
+
normalizedUnitResult[key] = dimensioningObject[key];
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
// incase value is something like 0
|
|
54
|
+
normalizedUnitResult[key] = defaultDimensionsProperty[key];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// eslint-disable-next-line no-param-reassign
|
|
60
|
+
normalizedUnitResult = null;
|
|
61
|
+
}
|
|
62
|
+
return normalizedUnitResult;
|
|
63
|
+
};
|
|
64
|
+
const normalizeDocumentOptions = (documentOptions) => {
|
|
65
|
+
const normalizedDocumentOptions = { ...documentOptions };
|
|
66
|
+
Object.keys(documentOptions).forEach((key) => {
|
|
67
|
+
// eslint-disable-next-line default-case
|
|
68
|
+
switch (key) {
|
|
69
|
+
case 'pageSize':
|
|
70
|
+
case 'margins':
|
|
71
|
+
normalizedDocumentOptions[key] = normalizeUnits(documentOptions[key], defaultDocumentOptions[key]);
|
|
72
|
+
break;
|
|
73
|
+
case 'fontSize':
|
|
74
|
+
case 'complexScriptFontSize':
|
|
75
|
+
normalizedDocumentOptions[key] = fixupFontSize(documentOptions[key]);
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return normalizedDocumentOptions;
|
|
80
|
+
};
|
|
81
|
+
// Ref: https://en.wikipedia.org/wiki/Office_Open_XML_file_formats
|
|
82
|
+
// http://officeopenxml.com/anatomyofOOXML.php
|
|
83
|
+
async function addFilesToContainer(zip, htmlString, suppliedDocumentOptions, headerHTMLString, footerHTMLString) {
|
|
84
|
+
debugger;
|
|
85
|
+
const normalizedDocumentOptions = normalizeDocumentOptions(suppliedDocumentOptions);
|
|
86
|
+
const documentOptions = mergeOptions(defaultDocumentOptions, normalizedDocumentOptions);
|
|
87
|
+
if (documentOptions.header && !headerHTMLString) {
|
|
88
|
+
// eslint-disable-next-line no-param-reassign
|
|
89
|
+
headerHTMLString = defaultHTMLString;
|
|
90
|
+
}
|
|
91
|
+
if (documentOptions.footer && !footerHTMLString) {
|
|
92
|
+
// eslint-disable-next-line no-param-reassign
|
|
93
|
+
footerHTMLString = defaultHTMLString;
|
|
94
|
+
}
|
|
95
|
+
const docxDocument = new DocxDocument({ zip, htmlString, ...documentOptions });
|
|
96
|
+
// Conversion to Word XML happens here
|
|
97
|
+
docxDocument.documentXML = await renderDocumentFile(docxDocument);
|
|
98
|
+
debugger;
|
|
99
|
+
zip
|
|
100
|
+
.folder(relsFolderName)
|
|
101
|
+
.file('.rels', create({ encoding: 'UTF-8', standalone: true }, relsXML).toString({ prettyPrint: true }), { createFolders: false });
|
|
102
|
+
zip.folder('docProps').file('core.xml', docxDocument.generateCoreXML(), {
|
|
103
|
+
createFolders: false,
|
|
104
|
+
});
|
|
105
|
+
if (docxDocument.header && headerHTMLString) {
|
|
106
|
+
const vTree = convertHTML(headerHTMLString);
|
|
107
|
+
docxDocument.relationshipFilename = headerFileName;
|
|
108
|
+
const { headerId, headerXML } = await docxDocument.generateHeaderXML(vTree);
|
|
109
|
+
docxDocument.relationshipFilename = documentFileName;
|
|
110
|
+
const fileNameWithExt = `${headerType}${headerId}.xml`;
|
|
111
|
+
const relationshipId = docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, headerType, fileNameWithExt, internalRelationship);
|
|
112
|
+
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateHeader.toString({ prettyPrint: true }), {
|
|
113
|
+
createFolders: false,
|
|
114
|
+
});
|
|
115
|
+
docxDocument.headerObjects.push({ headerId, relationshipId, type: docxDocument.headerType });
|
|
116
|
+
}
|
|
117
|
+
if (docxDocument.footer && footerHTMLString) {
|
|
118
|
+
const vTree = convertHTML(footerHTMLString);
|
|
119
|
+
docxDocument.relationshipFilename = footerFileName;
|
|
120
|
+
const { footerId, footerXML } = await docxDocument.generateFooterXML(vTree);
|
|
121
|
+
docxDocument.relationshipFilename = documentFileName;
|
|
122
|
+
const fileNameWithExt = `${footerType}${footerId}.xml`;
|
|
123
|
+
const relationshipId = docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, footerType, fileNameWithExt, internalRelationship);
|
|
124
|
+
console.log(footerXML.toString({ prettyPrint: true }));
|
|
125
|
+
if (suppliedDocumentOptions.pageNumber)
|
|
126
|
+
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooter.toString({ prettyPrint: true }), {
|
|
127
|
+
createFolders: false,
|
|
128
|
+
});
|
|
129
|
+
else
|
|
130
|
+
zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooterWithoutPaging.toString({ prettyPrint: true }), {
|
|
131
|
+
createFolders: false,
|
|
132
|
+
});
|
|
133
|
+
docxDocument.footerObjects.push({ footerId, relationshipId, type: docxDocument.footerType });
|
|
134
|
+
}
|
|
135
|
+
const themeFileNameWithExt = `${themeFileName}.xml`;
|
|
136
|
+
docxDocument.createDocumentRelationships(docxDocument.relationshipFilename, themeType, `${themeFolder}/${themeFileNameWithExt}`, internalRelationship);
|
|
137
|
+
zip
|
|
138
|
+
.folder(wordFolder)
|
|
139
|
+
.folder(themeFolder)
|
|
140
|
+
.file(themeFileNameWithExt, docxDocument.generateThemeXML(), {
|
|
141
|
+
createFolders: false,
|
|
142
|
+
});
|
|
143
|
+
zip
|
|
144
|
+
.folder(wordFolder)
|
|
145
|
+
.file('document.xml', docxDocument.generateDocumentXML(), { createFolders: false })
|
|
146
|
+
.file('afchunk.mht', getMHTdocument(htmlString), {
|
|
147
|
+
createFolders: false,
|
|
148
|
+
})
|
|
149
|
+
.file('afchunkheader.mht', getMHTdocument(headerHTMLString), {
|
|
150
|
+
createFolders: false,
|
|
151
|
+
})
|
|
152
|
+
.file('afchunkfooter.mht', getMHTdocument(footerHTMLString), {
|
|
153
|
+
createFolders: false,
|
|
154
|
+
})
|
|
155
|
+
.file('fontTable.xml', docxDocument.generateFontTableXML(), { createFolders: false })
|
|
156
|
+
.file('styles.xml', docxDocument.generateStylesXML(), { createFolders: false })
|
|
157
|
+
.file('numbering.xml', docxDocument.generateNumberingXML(), { createFolders: false })
|
|
158
|
+
.file('settings.xml', docxDocument.generateSettingsXML(), { createFolders: false })
|
|
159
|
+
.file('webSettings.xml', docxDocument.generateWebSettingsXML(), { createFolders: false });
|
|
160
|
+
const relationshipXMLs = docxDocument.generateRelsXML();
|
|
161
|
+
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
162
|
+
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
163
|
+
console.log(xmlString);
|
|
164
|
+
zip.folder(wordFolder).folder(relsFolderName).file(`${fileName}.xml.rels`, xmlString, {
|
|
165
|
+
createFolders: false,
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
170
|
+
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
171
|
+
zip.folder(wordFolder).folder(relsFolderName).file(`header1.xml.rels`, xmlString, {
|
|
172
|
+
createFolders: false,
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (relationshipXMLs && Array.isArray(relationshipXMLs)) {
|
|
177
|
+
relationshipXMLs.forEach(({ fileName, xmlString }) => {
|
|
178
|
+
zip.folder(wordFolder).folder(relsFolderName).file(`footer1.xml.rels`, xmlString, {
|
|
179
|
+
createFolders: false,
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
zip.file('[Content_Types].xml', docxDocument.generateContentTypesXML(), { createFolders: false });
|
|
184
|
+
return zip;
|
|
185
|
+
}
|
|
186
|
+
export { addFilesToContainer };
|
|
187
187
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbC10by1kb2N4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvY29uZmlnL3dvcmQvaHRtbC10by1kb2N4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUM7QUFDNUMsT0FBTyxLQUFLLE1BQU0seUJBQXlCLENBQUM7QUFDNUMsbURBQW1EO0FBQ25ELE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXJELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbEQsT0FBTyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsT0FBTyxFQUNQLFFBQVEsRUFDUixTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsRUFDZCxhQUFhLEVBQ2IsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixVQUFVLEVBQ1Ysb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSw4QkFBOEIsRUFBRSwyQ0FBMkMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFKLE1BQU0sV0FBVyxHQUFHLFVBQVUs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LGdCQUFnQixDQUFDLEVBQUU7UUFDdkQsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtZQUNuRCxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFO2dCQUNoRixhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQUNKO0lBQ0QsSUFBSSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDdkQsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtZQUNuRCxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFFO2dCQUNoRixhQUFhLEVBQUUsS0FBSzthQUNyQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztLQUNKO0lBR0QsR0FBRyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRWxHLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlIH0gZnJvbSAneG1sYnVpbGRlcjInO1xyXG5pbXBvcnQgVk5vZGUgZnJvbSAndmlydHVhbC1kb20vdm5vZGUvdm5vZGUnO1xyXG5pbXBvcnQgVlRleHQgZnJvbSAndmlydHVhbC1kb20vdm5vZGUvdnRleHQnO1xyXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLW5hbWVkLWRlZmF1bHRcclxuaW1wb3J0IHsgZGVmYXVsdCBhcyBIVE1MVG9WRE9NIH0gZnJvbSAnaHRtbC10by12ZG9tJztcclxuXHJcbmltcG9ydCB7IHJlbHNYTUwgfSBmcm9tICcuL3NjaGVtYXMnO1xyXG5pbXBvcnQgeyBEb2N4RG9jdW1lbnQgfSBmcm9tICcuL2RvY3gtZG9jdW1lbnQnO1xyXG5pbXBvcnQgeyByZW5kZXJEb2N1bWVudEZpbGUgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBnZXRNSFRkb2N1bWVudCB9IGZyb20gXCIuL3dvcmQtd29yay91dGlsc1wiXHJcbmltcG9ydCB7XHJcbiAgcGl4ZWxSZWdleCxcclxuICBwaXhlbFRvVFdJUCxcclxuICBjbVJlZ2V4LFxyXG4gIGNtVG9UV0lQLFxyXG4gIGluY2hSZWdleCxcclxuICBpbmNoVG9UV0lQLFxyXG4gIHBvaW50UmVnZXgsXHJcbiAgcG9pbnRUb0hJUCxcclxufSBmcm9tICcuL3V0aWxzL3VuaXQtY29udmVyc2lvbic7XHJcbmltcG9ydCB7XHJcbiAgZGVmYXVsdERvY3VtZW50T3B0aW9ucyxcclxuICBkZWZhdWx0SFRNTFN0cmluZyxcclxuICByZWxzRm9sZGVyTmFtZSxcclxuICBoZWFkZXJGaWxlTmFtZSxcclxuICBmb290ZXJGaWxlTmFtZSxcclxuICB0aGVtZUZpbGVOYW1lLFxyXG4gIGRvY3VtZW50RmlsZU5hbWUsXHJcbiAgaGVhZGVyVHlwZSxcclxuICBmb290ZXJUeXBlLFxyXG4gIGludGVybmFsUmVsYXRpb25zaGlwLFxyXG4gIHdvcmRGb2xkZXIsXHJcbiAgdGhlbWVGb2xkZXIsXHJcbiAgdGhlbWVUeXBlLFxyXG59IGZyb20gJy4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2VuZXJhdGVEb2N1bWVudFRlbXBsYXRlSGVhZGVyLCBnZW5lcmF0ZURvY3VtZW50VGVtcGxhdGVGb290ZXIsIGdlbmVyYXRlRG9jdW1lbnRUZW1wbGF0ZUZvb3RlcldpdGhvdXRQYWdpbmcgfSBmcm9tICcuL3NjaGVtYXMvZG9jdW1lbnQudGVtcGxhdGUnO1xyXG5jb25zdCBjb252ZXJ0SFRNTCA9IEhUTUxUb1ZET00oe1xyXG4gIFZOb2RlLFxyXG4gIFZUZXh0LFxyXG59KTtcclxuXHJcbmNvbnN0IG1lcmdlT3B0aW9ucyA9IChvcHRpb25zLCBwYXRjaCkgPT4gKHsgLi4ub3B0aW9ucywgLi4ucGF0Y2ggfSk7XHJcblxyXG5jb25zdCBmaXh1cEZvbnRTaXplID0gKGZvbnRTaXplKSA9PiB7XHJcbiAgbGV0IG5vcm1hbGl6ZWRGb250U2l6ZTtcclxuICBpZiAocG9pbnRSZWdleC50ZXN0KGZvbnRTaXplKSkge1xyXG4gICAgY29uc3QgbWF0Y2hlZFBhcnRzID0gZm9udFNpemUubWF0Y2gocG9pbnRSZWdleCk7XHJcblxyXG4gICAgbm9ybWFsaXplZEZvbnRTaXplID0gcG9pbnRUb0hJUChtYXRjaGVkUGFydHNbMV0pO1xyXG4gIH0gZWxzZSBpZiAoZm9udFNpemUpIHtcclxuICAgIC8vIGFzc3VtaW5nIGl0IGlzIGFscmVhZHkgaW4gSElQXHJcbiAgICBub3JtYWxpemVkRm9udFNpemUgPSBmb250U2l6ZTtcclxuICB9IGVsc2Uge1xyXG4gICAgbm9ybWFsaXplZEZvbnRTaXplID0gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiBub3JtYWxpemVkRm9udFNpemU7XHJcbn07XHJcblxyXG5jb25zdCBub3JtYWxpemVVbml0cyA9IChkaW1lbnNpb25pbmdPYmplY3QsIGRlZmF1bHREaW1lbnNpb25zUHJvcGVydHkpID0+IHtcclxuICBsZXQgbm9ybWFsaXplZFVuaXRSZXN1bHQgPSB7fTtcclxuICBpZiAodHlwZW9mIGRpbWVuc2lvbmluZ09iamVjdCA9PT0gJ29iamVjdCcgJiYgZGltZW5zaW9uaW5nT2JqZWN0ICE9PSBudWxsKSB7XHJcbiAgICBPYmplY3Qua2V5cyhkaW1lbnNpb25pbmdPYmplY3QpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICBpZiAocGl4ZWxSZWdleC50ZXN0KGRpbWVuc2lvbmluZ09iamVjdFtrZXldKSkge1xyXG4gICAgICAgIGNvbnN0IG1hdGNoZWRQYXJ0cyA9IGRpbWVuc2lvbmluZ09iamVjdFtrZXldLm1hdGNoKHBpeGVsUmVnZXgpO1xyXG4gICAgICAgIG5vcm1hbGl6ZWRVbml0UmVzdWx0W2tleV0gPSBwaXhlbFRvVFdJUChtYXRjaGVkUGFydHNbMV0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGNtUmVnZXgudGVzdChkaW1lbnNpb25pbmdPYmplY3Rba2V5XSkpIHtcclxuICAgICAgICBjb25zdCBtYXRjaGVkUGFydHMgPSBkaW1lbnNpb25pbmdPYmplY3Rba2V5XS5tYXRjaChjbVJlZ2V4KTtcclxuICAgICAgICBub3JtYWxpemVkVW5pdFJlc3VsdFtrZXldID0gY21Ub1RXSVAobWF0Y2hlZFBhcnRzWzFdKTtcclxuICAgICAgfSBlbHNlIGlmIChpbmNoUmVnZXgudGVzdChkaW1lbnNpb25pbmdPYmplY3Rba2V5XSkpIHtcclxuICAgICAgICBjb25zdCBtYXRjaGVkUGFydHMgPSBkaW1lbnNpb25pbmdPYmplY3Rba2V5XS5tYXRjaChpbmNoUmVnZXgpO1xyXG4gICAgICAgIG5vcm1hbGl6ZWRVbml0UmVzdWx0W2tleV0gPSBpbmNoVG9UV0lQKG1hdGNoZWRQYXJ0c1sxXSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZGltZW5zaW9uaW5nT2JqZWN0W2tleV0pIHtcclxuICAgICAgICBub3JtYWxpemVkVW5pdFJlc3VsdFtrZXldID0gZGltZW5zaW9uaW5nT2JqZWN0W2tleV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gaW5jYXNlIHZhbHVlIGlzIHNvbWV0aGluZyBsaWtlIDBcclxuICAgICAgICBub3JtYWxpemVkVW5pdFJlc3VsdFtrZXldID0gZGVmYXVsdERpbWVuc2lvbnNQcm9wZXJ0eVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXHJcbiAgICBub3JtYWxpemVkVW5pdFJlc3VsdCA9IG51bGw7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbm9ybWFsaXplZFVuaXRSZXN1bHQ7XHJcbn07XHJcblxyXG5jb25zdCBub3JtYWxpemVEb2N1bWVudE9wdGlvbnMgPSAoZG9jdW1lbnRPcHRpb25zKSA9PiB7XHJcbiAgY29uc3Qgbm9ybWFsaXplZERvY3VtZW50T3B0aW9ucyA9IHsgLi4uZG9jdW1lbnRPcHRpb25zIH07XHJcbiAgT2JqZWN0LmtleXMoZG9jdW1lbnRPcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ3BhZ2VTaXplJzpcclxuICAgICAgY2FzZSAnbWFyZ2lucyc6XHJcbiAgICAgICAgbm9ybWFsaXplZERvY3VtZW50T3B0aW9uc1trZXldID0gbm9ybWFsaXplVW5pdHMoXHJcbiAgICAgICAgICBkb2N1bWVudE9wdGlvbnNba2V5XSxcclxuICAgICAgICAgIGRlZmF1bHREb2N1bWVudE9wdGlvbnNba2V5XVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2ZvbnRTaXplJzpcclxuICAgICAgY2FzZSAnY29tcGxleFNjcmlwdEZvbnRTaXplJzpcclxuICAgICAgICBub3JtYWxpemVkRG9jdW1lbnRPcHRpb25zW2tleV0gPSBmaXh1cEZvbnRTaXplKGRvY3VtZW50T3B0aW9uc1trZXldKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgcmV0dXJuIG5vcm1hbGl6ZWREb2N1bWVudE9wdGlvbnM7XHJcbn07XHJcblxyXG4vLyBSZWY6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL09mZmljZV9PcGVuX1hNTF9maWxlX2Zvcm1hdHNcclxuLy8gaHR0cDovL29mZmljZW9wZW54bWwuY29tL2FuYXRvbXlvZk9PWE1MLnBocFxyXG5hc3luYyBmdW5jdGlvbiBhZGRGaWxlc1RvQ29udGFpbmVyKFxyXG4gIHppcCxcclxuICBodG1sU3RyaW5nLFxyXG4gIHN1cHBsaWVkRG9jdW1lbnRPcHRpb25zLFxyXG4gIGhlYWRlckhUTUxTdHJpbmcsXHJcbiAgZm9vdGVySFRNTFN0cmluZ1xyXG4pIHtcclxuICBkZWJ1Z2dlcjtcclxuICBjb25zdCBub3JtYWxpemVkRG9jdW1lbnRPcHRpb25zID0gbm9ybWFsaXplRG9jdW1lbnRPcHRpb25zKHN1cHBsaWVkRG9jdW1lbnRPcHRpb25zKTtcclxuICBjb25zdCBkb2N1bWVudE9wdGlvbnMgPSBtZXJnZU9wdGlvbnMoZGVmYXVsdERvY3VtZW50T3B0aW9ucywgbm9ybWFsaXplZERvY3VtZW50T3B0aW9ucyk7XHJcblxyXG4gIGlmIChkb2N1bWVudE9wdGlvbnMuaGVhZGVyICYmICFoZWFkZXJIVE1MU3RyaW5nKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cclxuICAgIGhlYWRlckhUTUxTdHJpbmcgPSBkZWZhdWx0SFRNTFN0cmluZztcclxuICB9XHJcbiAgaWYgKGRvY3VtZW50T3B0aW9ucy5mb290ZXIgJiYgIWZvb3RlckhUTUxTdHJpbmcpIHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxyXG4gICAgZm9vdGVySFRNTFN0cmluZyA9IGRlZmF1bHRIVE1MU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgZG9jeERvY3VtZW50ID0gbmV3IERvY3hEb2N1bWVudCh7IHppcCwgaHRtbFN0cmluZywgLi4uZG9jdW1lbnRPcHRpb25zIH0pO1xyXG4gIC8vIENvbnZlcnNpb24gdG8gV29yZCBYTUwgaGFwcGVucyBoZXJlXHJcbiAgZG9jeERvY3VtZW50LmRvY3VtZW50WE1MID0gYXdhaXQgcmVuZGVyRG9jdW1lbnRGaWxlKGRvY3hEb2N1bWVudCk7XHJcbiAgZGVidWdnZXI7XHJcbiAgemlwXHJcbiAgICAuZm9sZGVyKHJlbHNGb2xkZXJOYW1lKVxyXG4gICAgLmZpbGUoXHJcbiAgICAgICcucmVscycsXHJcbiAgICAgIGNyZWF0ZSh7IGVuY29kaW5nOiAnVVRGLTgnLCBzdGFuZGFsb25lOiB0cnVlIH0sIHJlbHNYTUwpLnRvU3RyaW5nKHsgcHJldHR5UHJpbnQ6IHRydWUgfSksXHJcbiAgICAgIHsgY3JlYXRlRm9sZGVyczogZmFsc2UgfVxyXG4gICAgKTtcclxuXHJcbiAgemlwLmZvbGRlcignZG9jUHJvcHMnKS5maWxlKCdjb3JlLnhtbCcsIGRvY3hEb2N1bWVudC5nZW5lcmF0ZUNvcmVYTUwoKSwge1xyXG4gICAgY3JlYXRlRm9sZGVyczogZmFsc2UsXHJcbiAgfSk7XHJcblxyXG4gIGlmIChkb2N4RG9jdW1lbnQuaGVhZGVyICYmIGhlYWRlckhUTUxTdHJpbmcpIHtcclxuICAgIGNvbnN0IHZUcmVlID0gY29udmVydEhUTUwoaGVhZGVySFRNTFN0cmluZyk7XHJcblxyXG4gICAgZG9jeERvY3VtZW50LnJlbGF0aW9uc2hpcEZpbGVuYW1lID0gaGVhZGVyRmlsZU5hbWU7XHJcbiAgICBjb25zdCB7IGhlYWRlcklkLCBoZWFkZXJYTUwgfSA9IGF3YWl0IGRvY3hEb2N1bWVudC5nZW5lcmF0ZUhlYWRlclhNTCh2VHJlZSk7XHJcbiAgICBkb2N4RG9jdW1lbnQucmVsYXRpb25zaGlwRmlsZW5hbWUgPSBkb2N1bWVudEZpbGVOYW1lO1xyXG4gICAgY29uc3QgZmlsZU5hbWVXaXRoRXh0ID0gYCR7aGVhZGVyVHlwZX0ke2hlYWRlcklkfS54bWxgO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcElkID0gZG9jeERvY3VtZW50LmNyZWF0ZURvY3VtZW50UmVsYXRpb25zaGlwcyhcclxuICAgICAgZG9jeERvY3VtZW50LnJlbGF0aW9uc2hpcEZpbGVuYW1lLFxyXG4gICAgICBoZWFkZXJUeXBlLFxyXG4gICAgICBmaWxlTmFtZVdpdGhFeHQsXHJcbiAgICAgIGludGVybmFsUmVsYXRpb25zaGlwXHJcbiAgICApO1xyXG5cclxuICAgIHppcC5mb2xkZXIod29yZEZvbGRlcikuZmlsZShmaWxlTmFtZVdpdGhFeHQsIGdlbmVyYXRlRG9jdW1lbnRUZW1wbGF0ZUhlYWRlci50b1N0cmluZyh7IHByZXR0eVByaW50OiB0cnVlIH0pLCB7XHJcbiAgICAgIGNyZWF0ZUZvbGRlcnM6IGZhbHNlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgZG9jeERvY3VtZW50LmhlYWRlck9iamVjdHMucHVzaCh7IGhlYWRlcklkLCByZWxhdGlvbnNoaXBJZCwgdHlwZTogZG9jeERvY3VtZW50LmhlYWRlclR5cGUgfSk7XHJcbiAgfVxyXG4gIGlmIChkb2N4RG9jdW1lbnQuZm9vdGVyICYmIGZvb3RlckhUTUxTdHJpbmcpIHtcclxuICAgIGNvbnN0IHZUcmVlID0gY29udmVydEhUTUwoZm9vdGVySFRNTFN0cmluZyk7XHJcblxyXG4gICAgZG9jeERvY3VtZW50LnJlbGF0aW9uc2hpcEZpbGVuYW1lID0gZm9vdGVyRmlsZU5hbWU7XHJcbiAgICBjb25zdCB7IGZvb3RlcklkLCBmb290ZXJYTUwgfSA9IGF3YWl0IGRvY3hEb2N1bWVudC5nZW5lcmF0ZUZvb3RlclhNTCh2VHJlZSk7XHJcbiAgICBkb2N4RG9jdW1lbnQucmVsYXRpb25zaGlwRmlsZW5hbWUgPSBkb2N1bWVudEZpbGVOYW1lO1xyXG4gICAgY29uc3QgZmlsZU5hbWVXaXRoRXh0ID0gYCR7Zm9vdGVyVHlwZX0ke2Zvb3RlcklkfS54bWxgO1xyXG5cclxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcElkID0gZG9jeERvY3VtZW50LmNyZWF0ZURvY3VtZW50UmVsYXRpb25zaGlwcyhcclxuICAgICAgZG9jeERvY3VtZW50LnJlbGF0aW9uc2hpcEZpbGVuYW1lLFxyXG4gICAgICBmb290ZXJUeXBlLFxyXG4gICAgICBmaWxlTmFtZVdpdGhFeHQsXHJcbiAgICAgIGludGVybmFsUmVsYXRpb25zaGlwXHJcbiAgICApO1xyXG4gICAgY29uc29sZS5sb2coZm9vdGVyWE1MLnRvU3RyaW5nKHsgcHJldHR5UHJpbnQ6IHRydWUgfSkpXHJcblxyXG4gICAgaWYgKHN1cHBsaWVkRG9jdW1lbnRPcHRpb25zLnBhZ2VOdW1iZXIpXHJcbiAgICAgIHppcC5mb2xkZXIod29yZEZvbGRlcikuZmlsZShmaWxlTmFtZVdpdGhFeHQsIGdlbmVyYXRlRG9jdW1lbnRUZW1wbGF0ZUZvb3Rlci50b1N0cmluZyh7IHByZXR0eVByaW50OiB0cnVlIH0pLCB7XHJcbiAgICAgICAgY3JlYXRlRm9sZGVyczogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgZWxzZVxyXG4gICAgICB6aXAuZm9sZGVyKHdvcmRGb2xkZXIpLmZpbGUoZmlsZU5hbWVXaXRoRXh0LCBnZW5lcmF0ZURvY3VtZW50VGVtcGxhdGVGb290ZXJXaXRob3V0UGFnaW5nLnRvU3RyaW5nKHsgcHJldHR5UHJpbnQ6IHRydWUgfSksIHtcclxuICAgICAgICBjcmVhdGVGb2xkZXJzOiBmYWxzZSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgZG9jeERvY3VtZW50LmZvb3Rlck9iamVjdHMucHVzaCh7IGZvb3RlcklkLCByZWxhdGlvbnNoaXBJZCwgdHlwZTogZG9jeERvY3VtZW50LmZvb3RlclR5cGUgfSk7XHJcbiAgfVxyXG4gIGNvbnN0IHRoZW1lRmlsZU5hbWVXaXRoRXh0ID0gYCR7dGhlbWVGaWxlTmFtZX0ueG1sYDtcclxuICBkb2N4RG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRSZWxhdGlvbnNoaXBzKFxyXG4gICAgZG9jeERvY3VtZW50LnJlbGF0aW9uc2hpcEZpbGVuYW1lLFxyXG4gICAgdGhlbWVUeXBlLFxyXG4gICAgYCR7dGhlbWVGb2xkZXJ9LyR7dGhlbWVGaWxlTmFtZVdpdGhFeHR9YCxcclxuICAgIGludGVybmFsUmVsYXRpb25zaGlwXHJcbiAgKTtcclxuICB6aXBcclxuICAgIC5mb2xkZXIod29yZEZvbGRlcilcclxuICAgIC5mb2xkZXIodGhlbWVGb2xkZXIpXHJcbiAgICAuZmlsZSh0aGVtZUZpbGVOYW1lV2l0aEV4dCwgZG9jeERvY3VtZW50LmdlbmVyYXRlVGhlbWVYTUwoKSwge1xyXG4gICAgICBjcmVhdGVGb2xkZXJzOiBmYWxzZSxcclxuICAgIH0pO1xyXG5cclxuICB6aXBcclxuICAgIC5mb2xkZXIod29yZEZvbGRlcilcclxuICAgIC5maWxlKCdkb2N1bWVudC54bWwnLCBkb2N4RG9jdW1lbnQuZ2VuZXJhdGVEb2N1bWVudFhNTCgpLCB7IGNyZWF0ZUZvbGRlcnM6IGZhbHNlIH0pXHJcbiAgICAuZmlsZSgnYWZjaHVuay5taHQnLCBnZXRNSFRkb2N1bWVudChodG1sU3RyaW5nKSwge1xyXG4gICAgICBjcmVhdGVGb2xkZXJzOiBmYWxzZSxcclxuICAgIH0pXHJcbiAgICAuZmlsZSgnYWZjaHVua2hlYWRlci5taHQnLCBnZXRNSFRkb2N1bWVudChoZWFkZXJIVE1MU3RyaW5nKSwge1xyXG4gICAgICBjcmVhdGVGb2xkZXJzOiBmYWxzZSxcclxuICAgIH0pXHJcbiAgICAuZmlsZSgnYWZjaHVua2Zvb3Rlci5taHQnLCBnZXRNSFRkb2N1bWVudChmb290ZXJIVE1MU3RyaW5nKSwge1xyXG4gICAgICBjcmVhdGVGb2xkZXJzOiBmYWxzZSxcclxuICAgIH0pXHJcbiAgICAuZmlsZSgnZm9udFRhYmxlLnhtbCcsIGRvY3hEb2N1bWVudC5nZW5lcmF0ZUZvbnRUYWJsZVhNTCgpLCB7IGNyZWF0ZUZvbGRlcnM6IGZhbHNlIH0pXHJcbiAgICAuZmlsZSgnc3R5bGVzLnhtbCcsIGRvY3hEb2N1bWVudC5nZW5lcmF0ZVN0eWxlc1hNTCgpLCB7IGNyZWF0ZUZvbGRlcnM6IGZhbHNlIH0pXHJcbiAgICAuZmlsZSgnbnVtYmVyaW5nLnhtbCcsIGRvY3hEb2N1bWVudC5nZW5lcmF0ZU51bWJlcmluZ1hNTCgpLCB7IGNyZWF0ZUZvbGRlcnM6IGZhbHNlIH0pXHJcbiAgICAuZmlsZSgnc2V0dGluZ3MueG1sJywgZG9jeERvY3VtZW50LmdlbmVyYXRlU2V0dGluZ3NYTUwoKSwgeyBjcmVhdGVGb2xkZXJzOiBmYWxzZSB9KVxyXG4gICAgLmZpbGUoJ3dlYlNldHRpbmdzLnhtbCcsIGRvY3hEb2N1bWVudC5nZW5lcmF0ZVdlYlNldHRpbmdzWE1MKCksIHsgY3JlYXRlRm9sZGVyczogZmFsc2UgfSk7XHJcblxyXG4gIGNvbnN0IHJlbGF0aW9uc2hpcFhNTHMgPSBkb2N4RG9jdW1lbnQuZ2VuZXJhdGVSZWxzWE1MKCk7XHJcbiAgaWYgKHJlbGF0aW9uc2hpcFhNTHMgJiYgQXJyYXkuaXNBcnJheShyZWxhdGlvbnNoaXBYTUxzKSkge1xyXG4gICAgcmVsYXRpb25zaGlwWE1Mcy5mb3JFYWNoKCh7IGZpbGVOYW1lLCB4bWxTdHJpbmcgfSkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZyh4bWxTdHJpbmcpXHJcbiAgICAgIHppcC5mb2xkZXIod29yZEZvbGRlcikuZm9sZGVyKHJlbHNGb2xkZXJOYW1lKS5maWxlKGAke2ZpbGVOYW1lfS54bWwucmVsc2AsIHhtbFN0cmluZywge1xyXG4gICAgICAgIGNyZWF0ZUZvbGRlcnM6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaWYgKHJlbGF0aW9uc2hpcFhNTHMgJiYgQXJyYXkuaXNBcnJheShyZWxhdGlvbnNoaXBYTUxzKSkge1xyXG4gICAgcmVsYXRpb25zaGlwWE1Mcy5mb3JFYWNoKCh7IGZpbGVOYW1lLCB4bWxTdHJpbmcgfSkgPT4ge1xyXG4gICAgICB6aXAuZm9sZGVyKHdvcmRGb2xkZXIpLmZvbGRlcihyZWxzRm9sZGVyTmFtZSkuZmlsZShgaGVhZGVyMS54bWwucmVsc2AsIHhtbFN0cmluZywge1xyXG4gICAgICAgIGNyZWF0ZUZvbGRlcnM6IGZhbHNlLFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBpZiAocmVsYXRpb25zaGlwWE1McyAmJiBBcnJheS5pc0FycmF5KHJlbGF0aW9uc2hpcFhNTHMpKSB7XHJcbiAgICByZWxhdGlvbnNoaXBYTUxzLmZvckVhY2goKHsgZmlsZU5hbWUsIHhtbFN0cmluZyB9KSA9PiB7XHJcbiAgICAgIHppcC5mb2xkZXIod29yZEZvbGRlcikuZm9sZGVyKHJlbHNGb2xkZXJOYW1lKS5maWxlKGBmb290ZXIxLnhtbC5yZWxzYCwgeG1sU3RyaW5nLCB7XHJcbiAgICAgICAgY3JlYXRlRm9sZGVyczogZmFsc2UsXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgemlwLmZpbGUoJ1tDb250ZW50X1R5cGVzXS54bWwnLCBkb2N4RG9jdW1lbnQuZ2VuZXJhdGVDb250ZW50VHlwZXNYTUwoKSwgeyBjcmVhdGVGb2xkZXJzOiBmYWxzZSB9KTtcclxuXHJcbiAgcmV0dXJuIHppcDtcclxufVxyXG5cclxuZXhwb3J0IHsgYWRkRmlsZXNUb0NvbnRhaW5lciB9O1xyXG4iXX0=
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
/* eslint-disable no-useless-escape */
|
|
2
|
-
import JSZip from 'jszip';
|
|
3
|
-
import { addFilesToContainer } from './html-to-docx';
|
|
4
|
-
const minifyHTMLString = (htmlString) => {
|
|
5
|
-
try {
|
|
6
|
-
if (typeof htmlString === 'string' || htmlString instanceof String) {
|
|
7
|
-
const minifiedHTMLString = htmlString
|
|
8
|
-
.replace(/\n/g, ' ')
|
|
9
|
-
.replace(/\r/g, ' ')
|
|
10
|
-
.replace(/\r\n/g, ' ')
|
|
11
|
-
.replace(/[\t]+\</g, '<')
|
|
12
|
-
.replace(/\>[\t ]+\</g, '><')
|
|
13
|
-
.replace(/\>[\t ]+$/g, '>');
|
|
14
|
-
return minifiedHTMLString;
|
|
15
|
-
}
|
|
16
|
-
throw new Error('invalid html string');
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
async function generateContainer(htmlString, headerHTMLString, documentOptions = {}, footerHTMLString) {
|
|
23
|
-
const zip = new JSZip();
|
|
24
|
-
let contentHTML = htmlString;
|
|
25
|
-
let headerHTML = headerHTMLString;
|
|
26
|
-
let footerHTML = footerHTMLString;
|
|
27
|
-
if (htmlString) {
|
|
28
|
-
contentHTML = minifyHTMLString(contentHTML);
|
|
29
|
-
}
|
|
30
|
-
if (headerHTMLString) {
|
|
31
|
-
headerHTML = minifyHTMLString(headerHTML);
|
|
32
|
-
}
|
|
33
|
-
if (footerHTMLString) {
|
|
34
|
-
footerHTML = minifyHTMLString(footerHTML);
|
|
35
|
-
}
|
|
36
|
-
await addFilesToContainer(zip, contentHTML, documentOptions, headerHTML, footerHTML);
|
|
37
|
-
const buffer = await zip.generateAsync({ type: 'arraybuffer' });
|
|
38
|
-
if (Object.prototype.hasOwnProperty.call(global, 'Buffer')) {
|
|
39
|
-
return Buffer.from(new Uint8Array(buffer));
|
|
40
|
-
}
|
|
41
|
-
if (Object.prototype.hasOwnProperty.call(global, 'Blob')) {
|
|
42
|
-
// eslint-disable-next-line no-undef
|
|
43
|
-
return new Blob([buffer], {
|
|
44
|
-
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
throw new Error('Add blob support using a polyfill eg https://github.com/bjornstar/blob-polyfill');
|
|
48
|
-
}
|
|
49
|
-
export { generateContainer };
|
|
1
|
+
/* eslint-disable no-useless-escape */
|
|
2
|
+
import JSZip from 'jszip';
|
|
3
|
+
import { addFilesToContainer } from './html-to-docx';
|
|
4
|
+
const minifyHTMLString = (htmlString) => {
|
|
5
|
+
try {
|
|
6
|
+
if (typeof htmlString === 'string' || htmlString instanceof String) {
|
|
7
|
+
const minifiedHTMLString = htmlString
|
|
8
|
+
.replace(/\n/g, ' ')
|
|
9
|
+
.replace(/\r/g, ' ')
|
|
10
|
+
.replace(/\r\n/g, ' ')
|
|
11
|
+
.replace(/[\t]+\</g, '<')
|
|
12
|
+
.replace(/\>[\t ]+\</g, '><')
|
|
13
|
+
.replace(/\>[\t ]+$/g, '>');
|
|
14
|
+
return minifiedHTMLString;
|
|
15
|
+
}
|
|
16
|
+
throw new Error('invalid html string');
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
async function generateContainer(htmlString, headerHTMLString, documentOptions = {}, footerHTMLString) {
|
|
23
|
+
const zip = new JSZip();
|
|
24
|
+
let contentHTML = htmlString;
|
|
25
|
+
let headerHTML = headerHTMLString;
|
|
26
|
+
let footerHTML = footerHTMLString;
|
|
27
|
+
if (htmlString) {
|
|
28
|
+
contentHTML = minifyHTMLString(contentHTML);
|
|
29
|
+
}
|
|
30
|
+
if (headerHTMLString) {
|
|
31
|
+
headerHTML = minifyHTMLString(headerHTML);
|
|
32
|
+
}
|
|
33
|
+
if (footerHTMLString) {
|
|
34
|
+
footerHTML = minifyHTMLString(footerHTML);
|
|
35
|
+
}
|
|
36
|
+
await addFilesToContainer(zip, contentHTML, documentOptions, headerHTML, footerHTML);
|
|
37
|
+
const buffer = await zip.generateAsync({ type: 'arraybuffer' });
|
|
38
|
+
if (Object.prototype.hasOwnProperty.call(global, 'Buffer')) {
|
|
39
|
+
return Buffer.from(new Uint8Array(buffer));
|
|
40
|
+
}
|
|
41
|
+
if (Object.prototype.hasOwnProperty.call(global, 'Blob')) {
|
|
42
|
+
// eslint-disable-next-line no-undef
|
|
43
|
+
return new Blob([buffer], {
|
|
44
|
+
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
throw new Error('Add blob support using a polyfill eg https://github.com/bjornstar/blob-polyfill');
|
|
48
|
+
}
|
|
49
|
+
export { generateContainer };
|
|
50
50
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9jb25maWcvd29yZC9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxzQ0FBc0M7QUFDdEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtJQUN0QyxJQUFJO1FBQ0YsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxZQUFZLE1BQU0sRUFBRTtZQUNsRSxNQUFNLGtCQUFrQixHQUFHLFVBQVU7aUJBQ2xDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO2lCQUNuQixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztpQkFDbkIsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUM7aUJBQ3JCLE9BQU8sQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDO2lCQUN4QixPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQztpQkFDNUIsT0FBTyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUU5QixPQUFPLGtCQUFrQixDQUFDO1NBQzNCO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0tBQ3hDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsS0FBSyxVQUFVLGlCQUFpQixDQUM5QixVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGVBQWUsR0FBRyxFQUFFLEVBQ3BCLGdCQUFnQjtJQUVoQixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0lBRXhCLElBQUksV0FBVyxHQUFHLFVBQVUsQ0FBQztJQUM3QixJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztJQUNsQyxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQztJQUNsQyxJQUFJLFVBQVUsRUFBRTtRQUNkLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM3QztJQUNELElBQUksZ0JBQWdCLEVBQUU7UUFDcEIsVUFBVSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQzNDO0lBQ0QsSUFBSSxnQkFBZ0IsRUFBRTtRQUNwQixVQUFVLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7S0FDM0M7SUFFRCxNQUFNLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVyRixNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNoRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7UUFDMUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7S0FDNUM7SUFDRCxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDeEQsb0NBQW9DO1FBQ3BDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN4QixJQUFJLEVBQUUseUVBQXlFO1NBQ2hGLENBQUMsQ0FBQztLQUNKO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixpRkFBaUYsQ0FDbEYsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXHJcbmltcG9ydCBKU1ppcCBmcm9tICdqc3ppcCc7XHJcbmltcG9ydCB7YWRkRmlsZXNUb0NvbnRhaW5lcn0gZnJvbSAnLi9odG1sLXRvLWRvY3gnO1xyXG5cclxuY29uc3QgbWluaWZ5SFRNTFN0cmluZyA9IChodG1sU3RyaW5nKSA9PiB7XHJcbiAgdHJ5IHtcclxuICAgIGlmICh0eXBlb2YgaHRtbFN0cmluZyA9PT0gJ3N0cmluZycgfHwgaHRtbFN0cmluZyBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICBjb25zdCBtaW5pZmllZEhUTUxTdHJpbmcgPSBodG1sU3RyaW5nXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcci9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcclxcbi9nLCAnICcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1tcXHRdK1xcPC9nLCAnPCcpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcPltcXHQgXStcXDwvZywgJz48JylcclxuICAgICAgICAucmVwbGFjZSgvXFw+W1xcdCBdKyQvZywgJz4nKTtcclxuXHJcbiAgICAgIHJldHVybiBtaW5pZmllZEhUTUxTdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGh0bWwgc3RyaW5nJyk7XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlQ29udGFpbmVyKFxyXG4gIGh0bWxTdHJpbmcsXHJcbiAgaGVhZGVySFRNTFN0cmluZyxcclxuICBkb2N1bWVudE9wdGlvbnMgPSB7fSxcclxuICBmb290ZXJIVE1MU3RyaW5nXHJcbikge1xyXG4gIGNvbnN0IHppcCA9IG5ldyBKU1ppcCgpO1xyXG5cclxuICBsZXQgY29udGVudEhUTUwgPSBodG1sU3RyaW5nO1xyXG4gIGxldCBoZWFkZXJIVE1MID0gaGVhZGVySFRNTFN0cmluZztcclxuICBsZXQgZm9vdGVySFRNTCA9IGZvb3RlckhUTUxTdHJpbmc7XHJcbiAgaWYgKGh0bWxTdHJpbmcpIHtcclxuICAgIGNvbnRlbnRIVE1MID0gbWluaWZ5SFRNTFN0cmluZyhjb250ZW50SFRNTCk7XHJcbiAgfVxyXG4gIGlmIChoZWFkZXJIVE1MU3RyaW5nKSB7XHJcbiAgICBoZWFkZXJIVE1MID0gbWluaWZ5SFRNTFN0cmluZyhoZWFkZXJIVE1MKTtcclxuICB9XHJcbiAgaWYgKGZvb3RlckhUTUxTdHJpbmcpIHtcclxuICAgIGZvb3RlckhUTUwgPSBtaW5pZnlIVE1MU3RyaW5nKGZvb3RlckhUTUwpO1xyXG4gIH1cclxuXHJcbiAgYXdhaXQgYWRkRmlsZXNUb0NvbnRhaW5lcih6aXAsIGNvbnRlbnRIVE1MLCBkb2N1bWVudE9wdGlvbnMsIGhlYWRlckhUTUwsIGZvb3RlckhUTUwpO1xyXG5cclxuICBjb25zdCBidWZmZXIgPSBhd2FpdCB6aXAuZ2VuZXJhdGVBc3luYyh7IHR5cGU6ICdhcnJheWJ1ZmZlcicgfSk7XHJcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChnbG9iYWwsICdCdWZmZXInKSkge1xyXG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KGJ1ZmZlcikpO1xyXG4gIH1cclxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGdsb2JhbCwgJ0Jsb2InKSkge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXHJcbiAgICByZXR1cm4gbmV3IEJsb2IoW2J1ZmZlcl0sIHtcclxuICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLmRvY3VtZW50JyxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAnQWRkIGJsb2Igc3VwcG9ydCB1c2luZyBhIHBvbHlmaWxsIGVnIGh0dHBzOi8vZ2l0aHViLmNvbS9iam9ybnN0YXIvYmxvYi1wb2x5ZmlsbCdcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQge2dlbmVyYXRlQ29udGFpbmVyfTtcclxuIl19
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
const namespaces = {
|
|
2
|
-
a: 'http://schemas.openxmlformats.org/drawingml/2006/main',
|
|
3
|
-
b: 'http://schemas.openxmlformats.org/officeDocument/2006/bibliography',
|
|
4
|
-
cdr: 'http://schemas.openxmlformats.org/drawingml/2006/chartDrawing',
|
|
5
|
-
dc: 'http://purl.org/dc/elements/1.1/',
|
|
6
|
-
dcmitype: 'http://purl.org/dc/dcmitype/',
|
|
7
|
-
dcterms: 'http://purl.org/dc/terms/',
|
|
8
|
-
o: 'urn:schemas-microsoft-com:office:office',
|
|
9
|
-
pic: 'http://schemas.openxmlformats.org/drawingml/2006/picture',
|
|
10
|
-
r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
|
|
11
|
-
v: 'urn:schemas-microsoft-com:vml',
|
|
12
|
-
ve: 'http://schemas.openxmlformats.org/markup-compatibility/2006',
|
|
13
|
-
vt: 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',
|
|
14
|
-
w: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
|
|
15
|
-
w10: 'urn:schemas-microsoft-com:office:word',
|
|
16
|
-
wp: 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing',
|
|
17
|
-
wne: 'http://schemas.microsoft.com/office/word/2006/wordml',
|
|
18
|
-
xsd: 'http://www.w3.org/2001/XMLSchema',
|
|
19
|
-
xsi: 'http://www.w3.org/2001/XMLSchema-instance',
|
|
20
|
-
numbering: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering',
|
|
21
|
-
hyperlinks: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
|
|
22
|
-
images: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
|
|
23
|
-
styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
|
|
24
|
-
headers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/header',
|
|
25
|
-
footers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer',
|
|
26
|
-
themes: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
|
|
27
|
-
coreProperties: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',
|
|
28
|
-
officeDocumentRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
|
|
29
|
-
corePropertiesRelation: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
|
|
30
|
-
settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',
|
|
31
|
-
webSettingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings',
|
|
32
|
-
sl: 'http://schemas.openxmlformats.org/schemaLibrary/2006/main',
|
|
33
|
-
contentTypes: 'http://schemas.openxmlformats.org/package/2006/content-types',
|
|
34
|
-
relationship: 'http://schemas.openxmlformats.org/package/2006/relationships',
|
|
35
|
-
};
|
|
36
|
-
export default namespaces;
|
|
1
|
+
const namespaces = {
|
|
2
|
+
a: 'http://schemas.openxmlformats.org/drawingml/2006/main',
|
|
3
|
+
b: 'http://schemas.openxmlformats.org/officeDocument/2006/bibliography',
|
|
4
|
+
cdr: 'http://schemas.openxmlformats.org/drawingml/2006/chartDrawing',
|
|
5
|
+
dc: 'http://purl.org/dc/elements/1.1/',
|
|
6
|
+
dcmitype: 'http://purl.org/dc/dcmitype/',
|
|
7
|
+
dcterms: 'http://purl.org/dc/terms/',
|
|
8
|
+
o: 'urn:schemas-microsoft-com:office:office',
|
|
9
|
+
pic: 'http://schemas.openxmlformats.org/drawingml/2006/picture',
|
|
10
|
+
r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
|
|
11
|
+
v: 'urn:schemas-microsoft-com:vml',
|
|
12
|
+
ve: 'http://schemas.openxmlformats.org/markup-compatibility/2006',
|
|
13
|
+
vt: 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',
|
|
14
|
+
w: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',
|
|
15
|
+
w10: 'urn:schemas-microsoft-com:office:word',
|
|
16
|
+
wp: 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing',
|
|
17
|
+
wne: 'http://schemas.microsoft.com/office/word/2006/wordml',
|
|
18
|
+
xsd: 'http://www.w3.org/2001/XMLSchema',
|
|
19
|
+
xsi: 'http://www.w3.org/2001/XMLSchema-instance',
|
|
20
|
+
numbering: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering',
|
|
21
|
+
hyperlinks: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',
|
|
22
|
+
images: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',
|
|
23
|
+
styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',
|
|
24
|
+
headers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/header',
|
|
25
|
+
footers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer',
|
|
26
|
+
themes: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',
|
|
27
|
+
coreProperties: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',
|
|
28
|
+
officeDocumentRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',
|
|
29
|
+
corePropertiesRelation: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',
|
|
30
|
+
settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',
|
|
31
|
+
webSettingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings',
|
|
32
|
+
sl: 'http://schemas.openxmlformats.org/schemaLibrary/2006/main',
|
|
33
|
+
contentTypes: 'http://schemas.openxmlformats.org/package/2006/content-types',
|
|
34
|
+
relationship: 'http://schemas.openxmlformats.org/package/2006/relationships',
|
|
35
|
+
};
|
|
36
|
+
export default namespaces;
|
|
37
37
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL2NvbmZpZy93b3JkL25hbWVzcGFjZXMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLEdBQUc7SUFDakIsQ0FBQyxFQUFFLHVEQUF1RDtJQUMxRCxDQUFDLEVBQUUsb0VBQW9FO0lBQ3ZFLEdBQUcsRUFBRSwrREFBK0Q7SUFDcEUsRUFBRSxFQUFFLGtDQUFrQztJQUN0QyxRQUFRLEVBQUUsOEJBQThCO0lBQ3hDLE9BQU8sRUFBRSwyQkFBMkI7SUFDcEMsQ0FBQyxFQUFFLHlDQUF5QztJQUM1QyxHQUFHLEVBQUUsMERBQTBEO0lBQy9ELENBQUMsRUFBRSxxRUFBcUU7SUFDeEUsQ0FBQyxFQUFFLCtCQUErQjtJQUNsQyxFQUFFLEVBQUUsNkRBQTZEO0lBQ2pFLEVBQUUsRUFBRSxzRUFBc0U7SUFDMUUsQ0FBQyxFQUFFLDhEQUE4RDtJQUNqRSxHQUFHLEVBQUUsdUNBQXVDO0lBQzVDLEVBQUUsRUFBRSx3RUFBd0U7SUFDNUUsR0FBRyxFQUFFLHNEQUFzRDtJQUMzRCxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLEdBQUcsRUFBRSwyQ0FBMkM7SUFDaEQsU0FBUyxFQUFFLCtFQUErRTtJQUMxRixVQUFVLEVBQUUsK0VBQStFO0lBQzNGLE1BQU0sRUFBRSwyRUFBMkU7SUFDbkYsTUFBTSxFQUFFLDRFQUE0RTtJQUNwRixPQUFPLEVBQUUsNEVBQTRFO0lBQ3JGLE9BQU8sRUFBRSw0RUFBNEU7SUFDckYsTUFBTSxFQUFFLDJFQUEyRTtJQUNuRixjQUFjLEVBQUUseUVBQXlFO0lBQ3pGLHNCQUFzQixFQUFFLG9GQUFvRjtJQUM1RyxzQkFBc0IsRUFBRSx1RkFBdUY7SUFDL0csZ0JBQWdCLEVBQUUsOEVBQThFO0lBQ2hHLG1CQUFtQixFQUFFLGlGQUFpRjtJQUN0RyxFQUFFLEVBQUUsMkRBQTJEO0lBQy9ELFlBQVksRUFBRSw4REFBOEQ7SUFDNUUsWUFBWSxFQUFFLDhEQUE4RDtDQUM3RSxDQUFDO0FBRUYsZUFBZSxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBuYW1lc3BhY2VzID0ge1xyXG4gIGE6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbicsXHJcbiAgYjogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2JpYmxpb2dyYXBoeScsXHJcbiAgY2RyOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L2NoYXJ0RHJhd2luZycsXHJcbiAgZGM6ICdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLycsXHJcbiAgZGNtaXR5cGU6ICdodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvJyxcclxuICBkY3Rlcm1zOiAnaHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycsXHJcbiAgbzogJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZScsXHJcbiAgcGljOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L3BpY3R1cmUnLFxyXG4gIHI6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzJyxcclxuICB2OiAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwnLFxyXG4gIHZlOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYnLFxyXG4gIHZ0OiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvZG9jUHJvcHNWVHlwZXMnLFxyXG4gIHc6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvd29yZHByb2Nlc3NpbmdtbC8yMDA2L21haW4nLFxyXG4gIHcxMDogJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmQnLFxyXG4gIHdwOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L3dvcmRwcm9jZXNzaW5nRHJhd2luZycsXHJcbiAgd25lOiAnaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvd29yZC8yMDA2L3dvcmRtbCcsXHJcbiAgeHNkOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEnLFxyXG4gIHhzaTogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJyxcclxuICBudW1iZXJpbmc6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL251bWJlcmluZycsXHJcbiAgaHlwZXJsaW5rczogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaHlwZXJsaW5rJyxcclxuICBpbWFnZXM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlJyxcclxuICBzdHlsZXM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcycsXHJcbiAgaGVhZGVyczogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaGVhZGVyJyxcclxuICBmb290ZXJzOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9mb290ZXInLFxyXG4gIHRoZW1lczogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGhlbWUnLFxyXG4gIGNvcmVQcm9wZXJ0aWVzOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXMnLFxyXG4gIG9mZmljZURvY3VtZW50UmVsYXRpb246ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50JyxcclxuICBjb3JlUHJvcGVydGllc1JlbGF0aW9uOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllcycsXHJcbiAgc2V0dGluZ3NSZWxhdGlvbjogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc2V0dGluZ3MnLFxyXG4gIHdlYlNldHRpbmdzUmVsYXRpb246ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dlYlNldHRpbmdzJyxcclxuICBzbDogJ2h0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zY2hlbWFMaWJyYXJ5LzIwMDYvbWFpbicsXHJcbiAgY29udGVudFR5cGVzOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzJyxcclxuICByZWxhdGlvbnNoaXA6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMnLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmFtZXNwYWNlcztcclxuIl19
|