New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

jspdfmake

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jspdfmake - npm Package Compare versions

Comparing version 1.3.2 to 2.0.0

320

dist/jspdfmake.min.js

@@ -1,2 +0,320 @@

"use strict";function _interopDefault(t){return t&&"object"==typeof t&&"default"in t?t.default:t}function JsPDFMake(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.docDefinition=e,this.options={orientation:"p",unit:"pt",format:"a4",hotfixes:[],lineHeight:DEFAULT_LINE_HEIGHT},this.doc=new JsPDF(this.options).setProperties({title:t}),this.title=t,this.pageWidth=this.doc.internal.pageSize.getWidth(),this.pageHeight=this.doc.internal.pageSize.getHeight(),this.pageXMargin=i.pageXMargin||0,this.pageYMargin=i.pageYMargin||0,this.maxLineWidth=this.pageWidth-2*this.pageXMargin,this.tocSections={},this.generateFromDocDefinition()}Object.defineProperty(exports,"__esModule",{value:!0});var JsPDF=_interopDefault(require("jspdf")),DEFAULT_FONT_SIZE=18,DEFAULT_LINE_HEIGHT=1,DEFAULT_ALIGN="left",DEFAULT_FONT_NAME="times",DEFAULT_FONT_STYLE="normal",DEFAULT_TEXT_COLOR="black";JsPDFMake.prototype.initTOC=function(){var t=this;this.tocSections={},this.docDefinition.content.filter(function(t){return t.toc}).forEach(function(e){var i=e.toc;if(t.tocSections[i.id])throw new Error("Duplicate table of contents id '"+i.id+"', please make sure all table of contents have a uniq id");var n=Object.assign({},i);delete n.id,t.tocSections[i.id]={items:[],options:n}})},JsPDFMake.prototype.transformTOCToContent=function(t){var e=t.options,i=t.items,n=[e.title];return i.forEach(function(t){var i=t.title,r=t.paragraphIndex,a=Object.assign({text:i,isLink:!0,linkParagraphIndex:r},e.itemOptions);n.push(a)}),n},JsPDFMake.prototype.updateTOCLinks=function(t){var e=0,i=0;return t.forEach(function(t){var n=0;t.isToc?(t.lines.forEach(function(t){n=t.pageNumber,t.pageNumber+=i}),e+=n):t.lines.forEach(function(t){t.pageNumber+=e,i=t.pageNumber})}),t.forEach(function(e){e.lines.forEach(function(e){e.linkParagraphIndex>=0&&(e.linkPage=t[e.linkParagraphIndex].lines[0].pageNumber)})}),t};var slicedToArray=function(){function t(t,e){var i=[],n=!0,r=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(i.push(o.value),!e||i.length!==e);n=!0);}catch(t){r=!0,a=t}finally{try{!n&&s.return&&s.return()}finally{if(r)throw a}}return i}return function(e,i){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,i);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();JsPDFMake.prototype.size=function(){return this.doc.internal.pages.length-1},JsPDFMake.prototype.addPage=function(){var t=this.doc,e=this.getCurrentPageNumber();e===this.size()?t.addPage():t.insertPage(e)},JsPDFMake.prototype.clearDoc=function(){for(var t=this.doc;t.internal.pages.length>1;)t.deletePage(1);this.addPage()},JsPDFMake.prototype.updateDocDefinition=function(t){this.docDefinition=t,this.generateFromDocDefinition()},JsPDFMake.prototype.getCurrentPageNumber=function(){return this.doc.internal.getCurrentPageInfo().pageNumber},JsPDFMake.prototype.isCursorOutOfPageVertically=function(t){return t>this.pageHeight-this.pageYMargin},JsPDFMake.prototype.drawTextInLine=function(t){var e=t.text,i=t.fontSize,n=t.fontName,r=t.fontStyle,a=t.textColor,o=t.xOffset,s=t.yOffset,f=t.pageNumber,c=t.maxFontSize,h=t.isLink,p=t.linkPage,g=this.doc,u=i/2+i/4;return g.setPage(f).setFont(n,r).setFontSize(i).setTextColor(a),h?g.textWithLink(e,o,u+Math.max(i,c)-i+s,{pageNumber:p}):g.text(o,u+Math.max(i,c)-i+s,e),!0},JsPDFMake.prototype.drawParagraphs=function(t){var e=this;t.forEach(function(t){var i=t.lines;return(void 0===i?[]:i).forEach(function(t){for(;t.pageNumber>e.size();)e.addPage();e.drawTextInLine(t)})})},JsPDFMake.prototype.escapeSpecialCharacters=function(t){return t.replace(/[^A-Za-z 0-9 \n\t\.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g,"")},JsPDFMake.prototype.renderParagraph=function(t,e,i,n,r){var a=t.text,o=t.pageBreak,s=void 0===o?"none":o,f=t.fontSize,c=void 0===f?DEFAULT_FONT_SIZE:f,h=t.fontName,p=void 0===h?DEFAULT_FONT_NAME:h,g=t.fontStyle,u=void 0===g?DEFAULT_FONT_STYLE:g,l=t.textColor,d=void 0===l?DEFAULT_TEXT_COLOR:l,P=t.align,T=void 0===P?DEFAULT_ALIGN:P,D=t.marginTop,m=void 0===D?0:D,F=t.marginRight,v=void 0===F?0:F,x=t.marginBottom,E=void 0===x?0:x,k=t.marginLeft,y=void 0===k?0:k,O=t.tocIds,M=void 0===O?[]:O,L=t.tocItemText,b=t.isLink,N=void 0!==b&&b,S=t.linkPage,_=t.linkParagraphIndex,C=this,A=this.doc,I=this.maxLineWidth,J=this.tocSections,w=this.pageXMargin,z=this.pageYMargin,U=this.pageWidth;if("string"!=typeof a)return console.warn("Text is only supported as string format, this section will not be rendered => "+a),{nextXOffset:e,nextYOffset:i,nextPage:n,lines:W};("before"===s||this.isCursorOutOfPageVertically(i+c))&&(i=z,n+=1),M.forEach(function(t){if(!J[t])throw new Error("Unknown table of contents id '"+t+"'");J[t].items.push({title:L||a,paragraphIndex:r})});var Y=A.setFont(p,u).setFontSize(c).setTextColor(d).splitTextToSize(this.escapeSpecialCharacters(a),I-y-v);i+=m;var W=[];return Y.forEach(function(t){C.isCursorOutOfPageVertically(i+c)&&(i=z,n+=1),e=w+y,"center"===T?e=U/2-A.getTextWidth(t)/2+y-v:"right"===T&&(e=U-A.getTextWidth(t)-w-v),W.push({text:t,fontSize:c,fontName:p,fontStyle:u,textColor:d,xOffset:e,yOffset:i,pageNumber:n,maxFontSize:c,isLink:N,linkPage:S,linkParagraphIndex:_}),i+=c}),i+=E,"after"===s&&(i=z,n+=1),{nextXOffset:e,nextYOffset:i,nextPage:n,lines:W}},JsPDFMake.prototype.transformContentToDrawableParagraphs=function(t){var e=this,i=this.pageYMargin,n=void 0,r=1;return t.map(function(a,o){if(a.toc)return r>1&&o<t.length-1&&(r+=1,i=e.pageYMargin),{isToc:!0,id:a.toc.id};var s=e.renderParagraph(a,n,i,r,o),f=s.nextXOffset,c=s.nextYOffset,h=s.nextPage,p=s.lines;return i=c,n=f,r=h,{lines:p}}).filter(function(t){return t})},JsPDFMake.prototype.generateFromDocDefinition=function(){var t=this,e=this.docDefinition;this.clearDoc(),this.initTOC();var i=this.transformContentToDrawableParagraphs(e.content),n=this.tocSections;Object.entries(n).forEach(function(e){var n=slicedToArray(e,2),r=n[0],a=n[1],o=t.transformTOCToContent(a),s=t.transformContentToDrawableParagraphs(o);i.forEach(function(t){t.isToc&&t.id===r&&(t.lines=s.map(function(t){return t.lines}).flat())})}),this.drawParagraphs(this.updateTOCLinks(i))},JsPDFMake.prototype.download=function(){this.doc.save(this.title)},exports.JsPDFMake=JsPDFMake;
'use strict';
function _interopDefault(t) {
return t && 'object' == typeof t && 'default' in t ? t.default : t;
}
function JsPDFMake(t, e) {
var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
(this.docDefinition = e),
(this.options = {
orientation: 'p',
unit: 'pt',
format: 'a4',
hotfixes: [],
lineHeight: DEFAULT_LINE_HEIGHT
}),
(this.doc = new JsPDF(this.options).setProperties({ title: t })),
(this.title = t),
(this.pageWidth = this.doc.internal.pageSize.getWidth()),
(this.pageHeight = this.doc.internal.pageSize.getHeight()),
(this.pageXMargin = i.pageXMargin || 0),
(this.pageYMargin = i.pageYMargin || 0),
(this.maxLineWidth = this.pageWidth - 2 * this.pageXMargin),
(this.tocSections = {}),
this.generateFromDocDefinition();
}
Object.defineProperty(exports, '__esModule', { value: !0 });
var JsPDF = _interopDefault(require('jspdf')),
DEFAULT_FONT_SIZE = 18,
DEFAULT_LINE_HEIGHT = 1,
DEFAULT_ALIGN = 'left',
DEFAULT_FONT_NAME = 'times',
DEFAULT_FONT_STYLE = 'normal',
DEFAULT_TEXT_COLOR = 'black';
(JsPDFMake.prototype.initTOC = function() {
var t = this;
(this.tocSections = {}),
this.docDefinition.content
.filter(function(t) {
return t.toc;
})
.forEach(function(e) {
var i = e.toc;
if (t.tocSections[i.id])
throw new Error(
'Duplicate table of contents id \'' +
i.id +
'\', please make sure all table of contents have a uniq id'
);
var n = Object.assign({}, i);
delete n.id, (t.tocSections[i.id] = { items: [], options: n });
});
}),
(JsPDFMake.prototype.transformTOCToContent = function(t) {
var e = t.options,
i = t.items,
n = [e.title];
return (
i.forEach(function(t) {
var i = t.title,
r = t.paragraphIndex,
a = Object.assign(
{ text: i, isLink: !0, linkParagraphIndex: r },
e.itemOptions
);
n.push(a);
}),
n
);
}),
(JsPDFMake.prototype.updateTOCLinks = function(t) {
var e = 0,
i = 0;
return (
t.forEach(function(t) {
var n = 0;
t.isToc
? (t.lines.forEach(function(t) {
(n = t.pageNumber), (t.pageNumber += i);
}),
(e += n))
: t.lines.forEach(function(t) {
(t.pageNumber += e), (i = t.pageNumber);
});
}),
t.forEach(function(e) {
e.lines.forEach(function(e) {
e.linkParagraphIndex >= 0 &&
(e.linkPage = t[e.linkParagraphIndex].lines[0].pageNumber);
});
}),
t
);
});
var slicedToArray = (function() {
function t(t, e) {
var i = [],
n = !0,
r = !1,
a = void 0;
try {
for (
var o, s = t[Symbol.iterator]();
!(n = (o = s.next()).done) && (i.push(o.value), !e || i.length !== e);
n = !0
);
} catch (t) {
(r = !0), (a = t);
} finally {
try {
!n && s.return && s.return();
} finally {
if (r) throw a;
}
}
return i;
}
return function(e, i) {
if (Array.isArray(e)) return e;
if (Symbol.iterator in Object(e)) return t(e, i);
throw new TypeError('Invalid attempt to destructure non-iterable instance');
};
})();
(JsPDFMake.prototype.size = function() {
return this.doc.internal.pages.length - 1;
}),
(JsPDFMake.prototype.addPage = function() {
var t = this.doc,
e = this.getCurrentPageNumber();
e === this.size() ? t.addPage() : t.insertPage(e);
}),
(JsPDFMake.prototype.clearDoc = function() {
for (var t = this.doc; t.internal.pages.length > 1; ) t.deletePage(1);
this.addPage();
}),
(JsPDFMake.prototype.updateDocDefinition = function(t) {
(this.docDefinition = t), this.generateFromDocDefinition();
}),
(JsPDFMake.prototype.getCurrentPageNumber = function() {
return this.doc.internal.getCurrentPageInfo().pageNumber;
}),
(JsPDFMake.prototype.isCursorOutOfPageVertically = function(t) {
return t > this.pageHeight - this.pageYMargin;
}),
(JsPDFMake.prototype.drawTextInLine = function(t) {
var e = t.text,
i = t.fontSize,
n = t.fontName,
r = t.fontStyle,
a = t.textColor,
o = t.xOffset,
s = t.yOffset,
f = t.pageNumber,
c = t.maxFontSize,
h = t.isLink,
p = t.linkPage,
g = this.doc,
u = i / 2 + i / 4;
return (
g
.setPage(f)
.setFont(n, r)
.setFontSize(i)
.setTextColor(a),
h
? g.textWithLink(e, o, u + Math.max(i, c) - i + s, { pageNumber: p })
: g.text(o, u + Math.max(i, c) - i + s, e),
!0
);
}),
(JsPDFMake.prototype.drawParagraphs = function(t) {
var e = this;
t.forEach(function(t) {
var i = t.lines;
return (void 0 === i ? [] : i).forEach(function(t) {
for (; t.pageNumber > e.size(); ) e.addPage();
e.drawTextInLine(t);
});
});
}),
(JsPDFMake.prototype.escapeSpecialCharacters = function(t) {
return t.replace(
/[^A-Za-z 0-9 \n\t\.,\?""!@#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g,
''
);
}),
(JsPDFMake.prototype.renderParagraph = function(t, e, i, n, r) {
var a = t.text,
o = t.pageBreak,
s = void 0 === o ? 'none' : o,
f = t.fontSize,
c = void 0 === f ? DEFAULT_FONT_SIZE : f,
h = t.fontName,
p = void 0 === h ? DEFAULT_FONT_NAME : h,
g = t.fontStyle,
u = void 0 === g ? DEFAULT_FONT_STYLE : g,
l = t.textColor,
d = void 0 === l ? DEFAULT_TEXT_COLOR : l,
P = t.align,
T = void 0 === P ? DEFAULT_ALIGN : P,
D = t.marginTop,
m = void 0 === D ? 0 : D,
F = t.marginRight,
v = void 0 === F ? 0 : F,
x = t.marginBottom,
E = void 0 === x ? 0 : x,
k = t.marginLeft,
y = void 0 === k ? 0 : k,
O = t.tocIds,
M = void 0 === O ? [] : O,
L = t.tocItemText,
b = t.isLink,
N = void 0 !== b && b,
S = t.linkPage,
_ = t.linkParagraphIndex,
C = this,
A = this.doc,
I = this.maxLineWidth,
J = this.tocSections,
w = this.pageXMargin,
z = this.pageYMargin,
U = this.pageWidth;
if ('string' != typeof a)
return (
console.warn(
'Text is only supported as string format, this section will not be rendered => ' +
a
),
{ nextXOffset: e, nextYOffset: i, nextPage: n, lines: W }
);
('before' === s || this.isCursorOutOfPageVertically(i + c)) &&
((i = z), (n += 1)),
M.forEach(function(t) {
if (!J[t]) throw new Error('Unknown table of contents id \'' + t + '\'');
J[t].items.push({ title: L || a, paragraphIndex: r });
});
var Y = A.setFont(p, u)
.setFontSize(c)
.setTextColor(d)
.splitTextToSize(this.escapeSpecialCharacters(a), I - y - v);
i += m;
var W = [];
return (
Y.forEach(function(t) {
C.isCursorOutOfPageVertically(i + c) && ((i = z), (n += 1)),
(e = w + y),
'center' === T
? (e = U / 2 - A.getTextWidth(t) / 2 + y - v)
: 'right' === T && (e = U - A.getTextWidth(t) - w - v),
W.push({
text: t,
fontSize: c,
fontName: p,
fontStyle: u,
textColor: d,
xOffset: e,
yOffset: i,
pageNumber: n,
maxFontSize: c,
isLink: N,
linkPage: S,
linkParagraphIndex: _
}),
(i += c);
}),
(i += E),
'after' === s && ((i = z), (n += 1)),
{ nextXOffset: e, nextYOffset: i, nextPage: n, lines: W }
);
}),
(JsPDFMake.prototype.transformContentToDrawableParagraphs = function(t) {
var e = this,
i = this.pageYMargin,
n = void 0,
r = 1;
return t
.map(function(a, o) {
if (a.toc)
return (
r > 1 && o < t.length - 1 && ((r += 1), (i = e.pageYMargin)),
{ isToc: !0, id: a.toc.id }
);
var s = e.renderParagraph(a, n, i, r, o),
f = s.nextXOffset,
c = s.nextYOffset,
h = s.nextPage,
p = s.lines;
return (i = c), (n = f), (r = h), { lines: p };
})
.filter(function(t) {
return t;
});
}),
(JsPDFMake.prototype.generateFromDocDefinition = function() {
var t = this,
e = this.docDefinition;
this.clearDoc(), this.initTOC();
var i = this.transformContentToDrawableParagraphs(e.content),
n = this.tocSections;
Object.entries(n).forEach(function(e) {
var n = slicedToArray(e, 2),
r = n[0],
a = n[1],
o = t.transformTOCToContent(a),
s = t.transformContentToDrawableParagraphs(o);
i.forEach(function(t) {
t.isToc &&
t.id === r &&
(t.lines = s
.map(function(t) {
return t.lines;
})
.flat());
});
}),
this.drawParagraphs(this.updateTOCLinks(i));
}),
(JsPDFMake.prototype.download = function() {
this.doc.save(this.title);
}),
(exports.JsPDFMake = JsPDFMake);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjpudWxsLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyIsIi4uL3NyYy9jb25zdGFudHMuanMiLCIuLi9zcmMvdG9jLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBKc1BERiBmcm9tICdqc3BkZic7XG5pbXBvcnQge1xuICBERUZBVUxUX0ZPTlRfU0laRSxcbiAgREVGQVVMVF9MSU5FX0hFSUdIVCxcbiAgREVGQVVMVF9BTElHTixcbiAgREVGQVVMVF9GT05UX05BTUUsXG4gIERFRkFVTFRfRk9OVF9TVFlMRSxcbiAgREVGQVVMVF9URVhUX0NPTE9SLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgJy4vdG9jJztcblxuZXhwb3J0IGZ1bmN0aW9uIEpzUERGTWFrZSh0aXRsZSwgZG9jRGVmaW5pdGlvbiwgb3B0aW9ucyA9IHt9KSB7XG4gIHRoaXMuZG9jRGVmaW5pdGlvbiA9IGRvY0RlZmluaXRpb247XG4gIHRoaXMub3B0aW9ucyA9IHtcbiAgICBvcmllbnRhdGlvbjogJ3AnLFxuICAgIHVuaXQ6ICdwdCcsXG4gICAgZm9ybWF0OiAnYTQnLFxuICAgIGhvdGZpeGVzOiBbXSwgLy8gYW4gYXJyYXkgb2YgaG90Zml4IHN0cmluZ3MgdG8gZW5hYmxlXG4gICAgbGluZUhlaWdodDogREVGQVVMVF9MSU5FX0hFSUdIVCxcbiAgfTtcbiAgdGhpcy5kb2MgPSBuZXcgSnNQREYodGhpcy5vcHRpb25zKS5zZXRQcm9wZXJ0aWVzKHsgdGl0bGUgfSk7XG4gIHRoaXMudGl0bGUgPSB0aXRsZTtcbiAgdGhpcy5wYWdlV2lkdGggPSB0aGlzLmRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRXaWR0aCgpO1xuICB0aGlzLnBhZ2VIZWlnaHQgPSB0aGlzLmRvYy5pbnRlcm5hbC5wYWdlU2l6ZS5nZXRIZWlnaHQoKTtcbiAgdGhpcy5wYWdlWE1hcmdpbiA9IG9wdGlvbnMucGFnZVhNYXJnaW4gfHwgMDtcbiAgdGhpcy5wYWdlWU1hcmdpbiA9IG9wdGlvbnMucGFnZVlNYXJnaW4gfHwgMDtcbiAgdGhpcy5tYXhMaW5lV2lkdGggPSB0aGlzLnBhZ2VXaWR0aCAtIHRoaXMucGFnZVhNYXJnaW4gKiAyO1xuICB0aGlzLnRvY1NlY3Rpb25zID0ge307XG4gIHRoaXMuZ2VuZXJhdGVGcm9tRG9jRGVmaW5pdGlvbigpO1xufVxuXG5Kc1BERk1ha2UucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBzaXplKCkge1xuICByZXR1cm4gdGhpcy5kb2MuaW50ZXJuYWwucGFnZXMubGVuZ3RoIC0gMTtcbn07XG5cbkpzUERGTWFrZS5wcm90b3R5cGUuYWRkUGFnZSA9IGZ1bmN0aW9uIGFkZFBhZ2UoKSB7XG4gIGNvbnN0IHtcbiAgICBkb2MsXG4gIH0gPSB0aGlzO1xuICBjb25zdCBjdXJyZW50UGFnZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2VOdW1iZXIoKTtcbiAgaWYgKGN1cnJlbnRQYWdlID09PSB0aGlzLnNpemUoKSkge1xuICAgIGRvYy5hZGRQYWdlKCk7XG4gIH0gZWxzZSB7XG4gICAgZG9jLmluc2VydFBhZ2UoY3VycmVudFBhZ2UpO1xuICB9XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLmNsZWFyRG9jID0gZnVuY3Rpb24gY2xlYXJEb2MoKSB7XG4gIGNvbnN0IHsgZG9jIH0gPSB0aGlzO1xuICB3aGlsZSAoZG9jLmludGVybmFsLnBhZ2VzLmxlbmd0aCA+IDEpIHtcbiAgICBkb2MuZGVsZXRlUGFnZSgxKTtcbiAgfVxuICB0aGlzLmFkZFBhZ2UoKTtcbn07XG5cbkpzUERGTWFrZS5wcm90b3R5cGUudXBkYXRlRG9jRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIHVwZGF0ZURvY0RlZmluaXRpb24oZG9jRGVmaW5pdGlvbikge1xuICB0aGlzLmRvY0RlZmluaXRpb24gPSBkb2NEZWZpbml0aW9uO1xuICB0aGlzLmdlbmVyYXRlRnJvbURvY0RlZmluaXRpb24oKTtcbn07XG5cbkpzUERGTWFrZS5wcm90b3R5cGUuZ2V0Q3VycmVudFBhZ2VOdW1iZXIgPSBmdW5jdGlvbiBnZXRDdXJyZW50UGFnZU51bWJlcigpIHtcbiAgcmV0dXJuIHRoaXMuZG9jLmludGVybmFsLmdldEN1cnJlbnRQYWdlSW5mbygpLnBhZ2VOdW1iZXI7XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLmlzQ3Vyc29yT3V0T2ZQYWdlVmVydGljYWxseSA9IGZ1bmN0aW9uIGlzQ3Vyc29yT3V0T2ZQYWdlVmVydGljYWxseSh5T2Zmc2V0KSB7XG4gIHJldHVybiB5T2Zmc2V0ID4gdGhpcy5wYWdlSGVpZ2h0IC0gdGhpcy5wYWdlWU1hcmdpbjtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtTdHJpbmd9IHRleHQgVGhlIHRleHQgdG8gYmUgaW5saW5lZFxuICogQHBhcmFtIHtOdW1iZXJ9IHhPZmZzZXQgVGhlIHggb2Zmc2V0IGZvciB0aGUgbmV3IHRleHRcbiAqIEBwYXJhbSB7TnVtYmVyfSB5T2Zmc2V0IFRoZSB5IG9mZnNldCBmb3IgdGhlIG5ldyB0ZXh0XG4gKiBAcGFyYW0ge051bWJlcn0gZm9udFNpemUgVGhlIGZvbnQgc2l6ZSBmb3IgdGhlIG5ldyB0ZXh0XG4gKiBAcGFyYW0ge051bWJlcn0gbWF4Rm9udFNpemUgVGhlIG1heGltdW0gZm9udCBzaXplIGluIHRoaXMgbGluZS5cbiAqIEBwYXJhbSB7U3RyaW5nfSBhbGlnbiBFaXRoZXIgJ2xlZnQnLCAncmlnaHQnIG9yICdjZW50ZXInLCBkZWZhdWx0IGlzICdsZWZ0J1xuICovXG5Kc1BERk1ha2UucHJvdG90eXBlLmRyYXdUZXh0SW5MaW5lID0gZnVuY3Rpb24gZHJhd1RleHRJbkxpbmUoe1xuICB0ZXh0LFxuICBmb250U2l6ZSxcbiAgZm9udE5hbWUsXG4gIGZvbnRTdHlsZSxcbiAgdGV4dENvbG9yLFxuICB4T2Zmc2V0LFxuICB5T2Zmc2V0LFxuICBwYWdlTnVtYmVyLFxuICBtYXhGb250U2l6ZSxcbiAgaXNMaW5rLFxuICBsaW5rUGFnZSxcbn0pIHtcbiAgY29uc3Qge1xuICAgIGRvYyxcbiAgfSA9IHRoaXM7XG4gIGNvbnN0IGNlbnRlciA9IGZvbnRTaXplIC8gMi4wICsgZm9udFNpemUgLyA0LjA7IC8vIFRoZSByZW5kZXJlciBzdGFydHMgZHJhd2luZyB0ZXh0IGF0IHRoZSBjZW50ZXJcbiAgZG9jXG4gICAgLnNldFBhZ2UocGFnZU51bWJlcilcbiAgICAuc2V0Rm9udChmb250TmFtZSwgZm9udFN0eWxlKVxuICAgIC5zZXRGb250U2l6ZShmb250U2l6ZSlcbiAgICAuc2V0VGV4dENvbG9yKHRleHRDb2xvcik7XG4gIGlmIChpc0xpbmspIHtcbiAgICBkb2MudGV4dFdpdGhMaW5rKHRleHQsIHhPZmZzZXQsIGNlbnRlciArIE1hdGgubWF4KGZvbnRTaXplLCBtYXhGb250U2l6ZSkgLSBmb250U2l6ZSArIHlPZmZzZXQsIHsgcGFnZU51bWJlcjogbGlua1BhZ2UgfSk7XG4gIH0gZWxzZSB7XG4gICAgZG9jLnRleHQoeE9mZnNldCwgY2VudGVyICsgTWF0aC5tYXgoZm9udFNpemUsIG1heEZvbnRTaXplKSAtIGZvbnRTaXplICsgeU9mZnNldCwgdGV4dCk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLmRyYXdQYXJhZ3JhcGhzID0gZnVuY3Rpb24gZHJhd1BhcmFncmFwaHMocGFyYWdyYXBocykge1xuICBwYXJhZ3JhcGhzLmZvckVhY2goKHsgbGluZXMgPSBbXSB9KSA9PiBsaW5lcy5mb3JFYWNoKGxpbmUgPT4ge1xuICAgIHdoaWxlIChsaW5lLnBhZ2VOdW1iZXIgPiB0aGlzLnNpemUoKSkge1xuICAgICAgdGhpcy5hZGRQYWdlKCk7XG4gICAgfVxuICAgIHRoaXMuZHJhd1RleHRJbkxpbmUobGluZSk7XG4gIH0pKTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbnkgc3BlY2lhbCBjaGFyYWN0ZXJzIGZyb20gdGhlIGdpdmVuIHRleHRcbiAqIEBwYXJhbSB7U3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IHRvIGJlIHRyYW5zZm9ybWVkXG4gKi9cbkpzUERGTWFrZS5wcm90b3R5cGUuZXNjYXBlU3BlY2lhbENoYXJhY3RlcnMgPSBmdW5jdGlvbiBlc2NhcGVTcGVjaWFsQ2hhcmFjdGVycyh0ZXh0KSB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoL1teQS1aYS16IDAtOSBcXG5cXHRcXC4sXFw/XCJcIiFAI1xcJCVcXF4mXFwqXFwoXFwpLV89XFwrOzo8PlxcL1xcXFxcXHxcXH1cXHtcXFtcXF1gfl0qL2csICcnKTtcbn07XG5cbkpzUERGTWFrZS5wcm90b3R5cGUucmVuZGVyUGFyYWdyYXBoID0gZnVuY3Rpb24gcmVuZGVyUGFyYWdyYXBoKHtcbiAgdGV4dCxcbiAgcGFnZUJyZWFrID0gJ25vbmUnLFxuICBmb250U2l6ZSA9IERFRkFVTFRfRk9OVF9TSVpFLFxuICBmb250TmFtZSA9IERFRkFVTFRfRk9OVF9OQU1FLFxuICBmb250U3R5bGUgPSBERUZBVUxUX0ZPTlRfU1RZTEUsXG4gIHRleHRDb2xvciA9IERFRkFVTFRfVEVYVF9DT0xPUixcbiAgYWxpZ24gPSBERUZBVUxUX0FMSUdOLFxuICBtYXJnaW5Ub3AgPSAwLFxuICBtYXJnaW5SaWdodCA9IDAsXG4gIG1hcmdpbkJvdHRvbSA9IDAsXG4gIG1hcmdpbkxlZnQgPSAwLFxuICB0b2NJZHMgPSBbXSxcbiAgdG9jSXRlbVRleHQsXG4gIGlzTGluayA9IGZhbHNlLFxuICBsaW5rUGFnZSxcbiAgbGlua1BhcmFncmFwaEluZGV4LFxufSwgeE9mZnNldCwgeU9mZnNldCwgcGFnZU51bWJlciwgaW5kZXgpIHtcbiAgY29uc3Qge1xuICAgIGRvYyxcbiAgICBtYXhMaW5lV2lkdGgsXG4gICAgdG9jU2VjdGlvbnMsXG4gICAgcGFnZVhNYXJnaW4sXG4gICAgcGFnZVlNYXJnaW4sXG4gICAgcGFnZVdpZHRoLFxuICB9ID0gdGhpcztcblxuICBpZiAodHlwZW9mIHRleHQgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gVE9ETzogSEFORExFIElOTElORSBURVhUIE9CSkVDVFNcbiAgICBjb25zb2xlLndhcm4oYFRleHQgaXMgb25seSBzdXBwb3J0ZWQgYXMgc3RyaW5nIGZvcm1hdCwgdGhpcyBzZWN0aW9uIHdpbGwgbm90IGJlIHJlbmRlcmVkID0+ICR7dGV4dH1gKTtcbiAgICByZXR1cm4geyBuZXh0WE9mZnNldDogeE9mZnNldCwgbmV4dFlPZmZzZXQ6IHlPZmZzZXQsIG5leHRQYWdlOiBwYWdlTnVtYmVyLCBsaW5lcyB9O1xuICB9XG4gIGlmIChwYWdlQnJlYWsgPT09ICdiZWZvcmUnIHx8IHRoaXMuaXNDdXJzb3JPdXRPZlBhZ2VWZXJ0aWNhbGx5KHlPZmZzZXQgKyBmb250U2l6ZSkpIHtcbiAgICAvLyBpZiBwYWdlIGJyZWFrIGJlZm9yZSBvciBuZXh0IGxpbmUgY2FuJ3QgYmUgd3JpdHRlbiByZXNldCBvZmZzZXQgYW5kIGFkZCBhIG5ldyBwYWdlXG4gICAgeU9mZnNldCA9IHBhZ2VZTWFyZ2luO1xuICAgIC8vIHRoaXMuYWRkUGFnZSgpO1xuICAgIHBhZ2VOdW1iZXIgKz0gMTtcbiAgfVxuXG4gIC8vIEluc2VydCB0aGlzIHBhcmFncmFwaCB0byBpdHMgdG9jIHNlY3Rpb24gaWYgYW55XG4gIHRvY0lkcy5mb3JFYWNoKHRvY0lkID0+IHtcbiAgICBpZiAoIXRvY1NlY3Rpb25zW3RvY0lkXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHRhYmxlIG9mIGNvbnRlbnRzIGlkICcke3RvY0lkfSdgKTtcbiAgICB9XG4gICAgdG9jU2VjdGlvbnNbdG9jSWRdLml0ZW1zLnB1c2goe1xuICAgICAgdGl0bGU6IHRvY0l0ZW1UZXh0IHx8IHRleHQsXG4gICAgICBwYXJhZ3JhcGhJbmRleDogaW5kZXgsXG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIHNwbGl0VGV4dFRvU2l6ZSB0YWtlcyB5b3VyIHN0cmluZyBhbmQgdHVybnMgaXQgaW4gdG8gYW4gYXJyYXkgb2Ygc3RyaW5ncyxcbiAgLy8gZWFjaCBvZiB3aGljaCBjYW4gYmUgZGlzcGxheWVkIHdpdGhpbiB0aGUgc3BlY2lmaWVkIG1heExpbmVXaWR0aC5cbiAgY29uc3QgdGV4dExpbmVzID0gZG9jXG4gICAgLnNldEZvbnQoZm9udE5hbWUsIGZvbnRTdHlsZSlcbiAgICAuc2V0Rm9udFNpemUoZm9udFNpemUpXG4gICAgLnNldFRleHRDb2xvcih0ZXh0Q29sb3IpXG4gICAgLnNwbGl0VGV4dFRvU2l6ZSh0aGlzLmVzY2FwZVNwZWNpYWxDaGFyYWN0ZXJzKHRleHQpLCBtYXhMaW5lV2lkdGggLSBtYXJnaW5MZWZ0IC0gbWFyZ2luUmlnaHQpO1xuXG4gIHlPZmZzZXQgKz0gbWFyZ2luVG9wO1xuXG4gIGNvbnN0IGxpbmVzID0gW107XG5cbiAgLy8gZG9jLnRleHQgY2FuIG5vdyBhZGQgdGhvc2UgbGluZXMgZWFzaWx5OyBvdGhlcndpc2UsIGl0IHdvdWxkIGhhdmUgcnVuIHRleHQgb2ZmIHRoZSBzY3JlZW4hXG4gIHRleHRMaW5lcy5mb3JFYWNoKChsaW5lKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNDdXJzb3JPdXRPZlBhZ2VWZXJ0aWNhbGx5KHlPZmZzZXQgKyBmb250U2l6ZSkpIHtcbiAgICAgIC8vIGlmIG5leHQgbGluZSBjYW4ndCBiZSB3cml0dGVuIHJlc2V0IG9mZnNldCBhbmQgYWRkIGEgbmV3IHBhZ2VcbiAgICAgIHlPZmZzZXQgPSBwYWdlWU1hcmdpbjtcbiAgICAgIC8vIHRoaXMuYWRkUGFnZSgpO1xuICAgICAgcGFnZU51bWJlciArPSAxO1xuICAgIH1cbiAgICB4T2Zmc2V0ID0gcGFnZVhNYXJnaW4gKyBtYXJnaW5MZWZ0O1xuICAgIGlmIChhbGlnbiA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIHhPZmZzZXQgPSBwYWdlV2lkdGggLyAyLjAgLSBkb2MuZ2V0VGV4dFdpZHRoKGxpbmUpIC8gMi4wICsgbWFyZ2luTGVmdCAtIG1hcmdpblJpZ2h0O1xuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdyaWdodCcpIHtcbiAgICAgIHhPZmZzZXQgPSBwYWdlV2lkdGggLSBkb2MuZ2V0VGV4dFdpZHRoKGxpbmUpIC0gcGFnZVhNYXJnaW4gLSBtYXJnaW5SaWdodDtcbiAgICB9XG4gICAgbGluZXMucHVzaCh7XG4gICAgICB0ZXh0OiBsaW5lLFxuICAgICAgZm9udFNpemUsXG4gICAgICBmb250TmFtZSxcbiAgICAgIGZvbnRTdHlsZSxcbiAgICAgIHRleHRDb2xvcixcbiAgICAgIHhPZmZzZXQsXG4gICAgICB5T2Zmc2V0LFxuICAgICAgcGFnZU51bWJlcixcbiAgICAgIG1heEZvbnRTaXplOiBmb250U2l6ZSxcbiAgICAgIGlzTGluayxcbiAgICAgIGxpbmtQYWdlLFxuICAgICAgbGlua1BhcmFncmFwaEluZGV4LFxuICAgIH0pO1xuICAgIHlPZmZzZXQgPSB5T2Zmc2V0ICsgZm9udFNpemU7XG4gICAgLy8gVE9ETyBVU0UgVEhJUyBJRiBDVVJTT1IgSVMgU1RJTEwgSU4gVEhFIFNBTUUgTElORVxuICAgIC8vIHlPZmZzZXQgPSB5T2Zmc2V0ICsgTWF0aC5tYXgoZm9udFNpemUsIG1heEZvbnRTaXplKTtcbiAgICAvLyB4T2Zmc2V0ID0geE9mZnNldCArIGRvYy5nZXRUZXh0V2lkdGgoYCR7dGV4dH0gYCk7XG4gIH0pO1xuXG4gIHlPZmZzZXQgKz0gbWFyZ2luQm90dG9tO1xuXG4gIGlmIChwYWdlQnJlYWsgPT09ICdhZnRlcicpIHtcbiAgICB5T2Zmc2V0ID0gcGFnZVlNYXJnaW47XG4gICAgLy8gdGhpcy5hZGRQYWdlKCk7XG4gICAgcGFnZU51bWJlciArPSAxO1xuICB9XG5cbiAgcmV0dXJuIHsgbmV4dFhPZmZzZXQ6IHhPZmZzZXQsIG5leHRZT2Zmc2V0OiB5T2Zmc2V0LCBuZXh0UGFnZTogcGFnZU51bWJlciwgbGluZXMgfTtcblxufTtcblxuSnNQREZNYWtlLnByb3RvdHlwZS50cmFuc2Zvcm1Db250ZW50VG9EcmF3YWJsZVBhcmFncmFwaHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1Db250ZW50VG9EcmF3YWJsZVBhcmFncmFwaHMoY29udGVudCkge1xuICBsZXQgeU9mZnNldCA9IHRoaXMucGFnZVlNYXJnaW47XG4gIGxldCB4T2Zmc2V0O1xuICBsZXQgY3VycmVudFBhZ2UgPSAxO1xuICByZXR1cm4gY29udGVudC5tYXAoKHBhcmFtcywgaW5kZXgpID0+IHtcbiAgICBpZiAocGFyYW1zLnRvYykge1xuICAgICAgaWYgKGN1cnJlbnRQYWdlID4gMSAmJiBpbmRleCA8IGNvbnRlbnQubGVuZ3RoIC0gMSkge1xuICAgICAgICAvLyBpZiBpdCdzIG5vdCB0aGUgZmlyc3QgcGFnZSBhbmQgaXQncyBub3QgdGhlIGxhc3QgcGFnZSBhZGQgYW5vdGhlciBwYWdlIGFmdGVyIHRoZSB0b2MgZm9yIHRoZSBuZXh0IGNvbnRlbnRcbiAgICAgICAgY3VycmVudFBhZ2UgKz0gMTtcbiAgICAgICAgeU9mZnNldCA9IHRoaXMucGFnZVlNYXJnaW47XG4gICAgICB9XG4gICAgICByZXR1cm4geyBpc1RvYzogdHJ1ZSwgaWQ6IHBhcmFtcy50b2MuaWQgfTtcbiAgICB9XG4gICAgY29uc3QgeyBuZXh0WE9mZnNldCwgbmV4dFlPZmZzZXQsIG5leHRQYWdlLCBsaW5lcyB9ID0gdGhpcy5yZW5kZXJQYXJhZ3JhcGgocGFyYW1zLCB4T2Zmc2V0LCB5T2Zmc2V0LCBjdXJyZW50UGFnZSwgaW5kZXgpO1xuICAgIHlPZmZzZXQgPSBuZXh0WU9mZnNldDtcbiAgICB4T2Zmc2V0ID0gbmV4dFhPZmZzZXQ7XG4gICAgY3VycmVudFBhZ2UgPSBuZXh0UGFnZTtcbiAgICByZXR1cm4geyBsaW5lcyB9O1xuICB9KS5maWx0ZXIoYSA9PiBhKTtcbn07XG5cbkpzUERGTWFrZS5wcm90b3R5cGUuZ2VuZXJhdGVGcm9tRG9jRGVmaW5pdGlvbiA9IGZ1bmN0aW9uIGdlbmVyYXRlRnJvbURvY0RlZmluaXRpb24oKSB7XG4gIGNvbnN0IHtcbiAgICBkb2NEZWZpbml0aW9uLFxuICB9ID0gdGhpcztcbiAgdGhpcy5jbGVhckRvYygpO1xuICB0aGlzLmluaXRUT0MoKTtcbiAgY29uc3QgcGFyYWdyYXBocyA9IHRoaXMudHJhbnNmb3JtQ29udGVudFRvRHJhd2FibGVQYXJhZ3JhcGhzKGRvY0RlZmluaXRpb24uY29udGVudCk7IC8vIEFycmF5IG9mIFBhcmFncmFwaCB3aGVyZSBhIFBhcmFnYXBoIGlzIGFuIEFycmF5IG9mIExpbmVzXG4gIGNvbnN0IHtcbiAgICB0b2NTZWN0aW9ucyxcbiAgfSA9IHRoaXM7XG4gIE9iamVjdC5lbnRyaWVzKHRvY1NlY3Rpb25zKS5mb3JFYWNoKChbdG9jSWQsIHRvY1NlY3Rpb25dKSA9PiB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMudHJhbnNmb3JtVE9DVG9Db250ZW50KHRvY1NlY3Rpb24pO1xuICAgIGNvbnN0IHRvY1BhcmFncmFwaHMgPSB0aGlzLnRyYW5zZm9ybUNvbnRlbnRUb0RyYXdhYmxlUGFyYWdyYXBocyhjb250ZW50KTtcblxuICAgIC8vIE1lcmdlIHRvY1BhcmFncmFwaHMgaW50byB0aGUgY3VycmVudCBwYXJhZ3JhcGhzXG4gICAgcGFyYWdyYXBocy5mb3JFYWNoKChwKSA9PiB7XG4gICAgICBpZiAocC5pc1RvYyAmJiBwLmlkID09PSB0b2NJZCkge1xuICAgICAgICBwLmxpbmVzID0gdG9jUGFyYWdyYXBocy5tYXAocCA9PiBwLmxpbmVzKS5mbGF0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHRoaXMuZHJhd1BhcmFncmFwaHModGhpcy51cGRhdGVUT0NMaW5rcyhwYXJhZ3JhcGhzKSk7XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLmRvd25sb2FkID0gZnVuY3Rpb24gZG93bmxvYWQoKSB7XG4gIHRoaXMuZG9jLnNhdmUodGhpcy50aXRsZSk7XG59O1xuIiwiZXhwb3J0IGNvbnN0IERFRkFVTFRfRk9OVF9TSVpFID0gMTg7XG5leHBvcnQgY29uc3QgREVGQVVMVF9MSU5FX0hFSUdIVCA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9BTElHTiA9ICdsZWZ0JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0ZPTlRfTkFNRSA9ICd0aW1lcyc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9GT05UX1NUWUxFID0gJ25vcm1hbCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9URVhUX0NPTE9SID0gJ2JsYWNrJztcblxuZXhwb3J0IGRlZmF1bHQge1xuICBERUZBVUxUX0ZPTlRfU0laRSxcbiAgREVGQVVMVF9MSU5FX0hFSUdIVCxcbiAgREVGQVVMVF9BTElHTixcbiAgREVGQVVMVF9GT05UX05BTUUsXG4gIERFRkFVTFRfRk9OVF9TVFlMRSxcbiAgREVGQVVMVF9URVhUX0NPTE9SLFxufTtcbiIsIlxuaW1wb3J0IHsgSnNQREZNYWtlIH0gZnJvbSAnLi9pbmRleCc7XG5cbkpzUERGTWFrZS5wcm90b3R5cGUuaW5pdFRPQyA9IGZ1bmN0aW9uIGluaXRUT0MoKSB7XG4gIHRoaXMudG9jU2VjdGlvbnMgPSB7fTtcbiAgdGhpcy5kb2NEZWZpbml0aW9uLmNvbnRlbnQuZmlsdGVyKGl0ZW0gPT4gaXRlbS50b2MpLmZvckVhY2goKHt0b2N9KSA9PiB7XG4gICAgaWYgKHRoaXMudG9jU2VjdGlvbnNbdG9jLmlkXSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgdGFibGUgb2YgY29udGVudHMgaWQgJyR7dG9jLmlkfScsIHBsZWFzZSBtYWtlIHN1cmUgYWxsIHRhYmxlIG9mIGNvbnRlbnRzIGhhdmUgYSB1bmlxIGlkYCk7XG4gICAgfVxuICAgIGNvbnN0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0b2MpOyAvLyBkZWVwIGNsb25lIHRvY1xuICAgIGRlbGV0ZSBvcHRpb25zLmlkO1xuICAgIHRoaXMudG9jU2VjdGlvbnNbdG9jLmlkXSA9IHtcbiAgICAgIGl0ZW1zOiBbXSxcbiAgICAgIG9wdGlvbnMsXG4gICAgfTtcbiAgfSk7XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLnRyYW5zZm9ybVRPQ1RvQ29udGVudCA9IGZ1bmN0aW9uIHRyYW5zZm9ybVRPQ1RvQ29udGVudChzZWN0aW9uKSB7XG4gIGNvbnN0IHsgb3B0aW9ucywgaXRlbXMgfSA9IHNlY3Rpb247XG4gIGNvbnN0IGNvbnRlbnQgPSBbb3B0aW9ucy50aXRsZV07XG4gIGl0ZW1zLmZvckVhY2goKHsgdGl0bGUsIHBhcmFncmFwaEluZGV4IH0pID0+IHtcbiAgICBjb25zdCB0b2NJdGVtID0gT2JqZWN0LmFzc2lnbih7IHRleHQ6IHRpdGxlLCBpc0xpbms6IHRydWUsIGxpbmtQYXJhZ3JhcGhJbmRleDogcGFyYWdyYXBoSW5kZXggfSwgb3B0aW9ucy5pdGVtT3B0aW9ucyk7XG4gICAgY29udGVudC5wdXNoKHRvY0l0ZW0pO1xuICB9KTtcbiAgcmV0dXJuIGNvbnRlbnQ7XG59O1xuXG5Kc1BERk1ha2UucHJvdG90eXBlLnVwZGF0ZVRPQ0xpbmtzID0gIGZ1bmN0aW9uIHVwZGF0ZVRPQ0xpbmtzKHBhcmFncmFwaHMpIHtcbiAgbGV0IHRvY1BhcmFncmFwaHNTaXplID0gMDtcbiAgbGV0IGxhc3RQYWdlID0gMDtcblxuICAvLyBMb29wIG9uIGFsbCBwYXJhZ3JhcGhzXG4gIHBhcmFncmFwaHMuZm9yRWFjaCgocCkgPT4ge1xuICAgIGxldCBwYXJhZ3JhcGhTaXplID0gMDtcbiAgICBpZiAocC5pc1RvYykge1xuICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgcGFyYWdyYXBoIGlzIGEgdGFibGUgb2YgY29udGVudHMgdXBkYXRlIGl0J3MgcGFnZSBudW1iZXIgdG8gYmUgYWZ0ZXIgbGFzdCBwYWdlXG4gICAgICBwLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgIHBhcmFncmFwaFNpemUgPSBsaW5lLnBhZ2VOdW1iZXI7XG4gICAgICAgIGxpbmUucGFnZU51bWJlciArPSBsYXN0UGFnZTtcbiAgICAgIH0pO1xuICAgICAgLy8gSW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIHBhcmFncmFwaCBieSB0aGlzIHRvYyBzaXplXG4gICAgICB0b2NQYXJhZ3JhcGhzU2l6ZSArPSBwYXJhZ3JhcGhTaXplO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiBpdCdzIGEgbm9ybWFsIHBhcmFncmFwaCB0aGVuIGluY3JlYXNlIGl0J3MgcGFnZSBudW1iZXIgd2l0aCB0aGUgdG9jUGFyYWdyYXBoU2l6ZSB0byBzaGlmdCBpdCBkb3duXG4gICAgICBwLmxpbmVzLmZvckVhY2gobGluZSA9PiB7XG4gICAgICAgIGxpbmUucGFnZU51bWJlciArPSB0b2NQYXJhZ3JhcGhzU2l6ZTtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBsYXN0IHBhZ2VcbiAgICAgICAgbGFzdFBhZ2UgPSBsaW5lLnBhZ2VOdW1iZXI7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIExpbmsgYWxsIGxpbmtlZCBsaW5lcyB0byB0aGUgY29ycmVjdCBwYXJhZ3JhcGgncyBmaXJzdCBsaW5lXG4gIHBhcmFncmFwaHMuZm9yRWFjaCgocCkgPT4ge1xuICAgIHAubGluZXMuZm9yRWFjaChsaW5lID0+IHtcbiAgICAgIGlmIChsaW5lLmxpbmtQYXJhZ3JhcGhJbmRleCA+PSAwKSB7XG4gICAgICAgIGxpbmUubGlua1BhZ2UgPSBwYXJhZ3JhcGhzW2xpbmUubGlua1BhcmFncmFwaEluZGV4XS5saW5lc1swXS5wYWdlTnVtYmVyO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gcGFyYWdyYXBocztcbn07XG4iXSwibmFtZXMiOlsiSnNQREZNYWtlIiwidGl0bGUiLCJkb2NEZWZpbml0aW9uIiwib3B0aW9ucyIsIkRFRkFVTFRfTElORV9IRUlHSFQiLCJkb2MiLCJKc1BERiIsInRoaXMiLCJzZXRQcm9wZXJ0aWVzIiwicGFnZVdpZHRoIiwiaW50ZXJuYWwiLCJwYWdlU2l6ZSIsImdldFdpZHRoIiwicGFnZUhlaWdodCIsImdldEhlaWdodCIsInBhZ2VYTWFyZ2luIiwicGFnZVlNYXJnaW4iLCJtYXhMaW5lV2lkdGgiLCJ0b2NTZWN0aW9ucyIsImdlbmVyYXRlRnJvbURvY0RlZmluaXRpb24iLCJERUZBVUxUX0ZPTlRfU0laRSIsIkRFRkFVTFRfQUxJR04iLCJERUZBVUxUX0ZPTlRfTkFNRSIsIkRFRkFVTFRfRk9OVF9TVFlMRSIsIkRFRkFVTFRfVEVYVF9DT0xPUiIsInByb3RvdHlwZSIsImluaXRUT0MiLCJjb250ZW50IiwiZmlsdGVyIiwiaXRlbSIsInRvYyIsImZvckVhY2giLCJfdGhpcyIsImlkIiwiRXJyb3IiLCJPYmplY3QiLCJhc3NpZ24iLCJ0cmFuc2Zvcm1UT0NUb0NvbnRlbnQiLCJzZWN0aW9uIiwiaXRlbXMiLCJwYXJhZ3JhcGhJbmRleCIsInRvY0l0ZW0iLCJ0ZXh0IiwiaXNMaW5rIiwibGlua1BhcmFncmFwaEluZGV4IiwiaXRlbU9wdGlvbnMiLCJwdXNoIiwidXBkYXRlVE9DTGlua3MiLCJwYXJhZ3JhcGhzIiwidG9jUGFyYWdyYXBoc1NpemUiLCJsYXN0UGFnZSIsInAiLCJwYXJhZ3JhcGhTaXplIiwiaXNUb2MiLCJsaW5lcyIsImxpbmUiLCJwYWdlTnVtYmVyIiwibGlua1BhZ2UiLCJzaXplIiwicGFnZXMiLCJsZW5ndGgiLCJhZGRQYWdlIiwiY3VycmVudFBhZ2UiLCJnZXRDdXJyZW50UGFnZU51bWJlciIsImluc2VydFBhZ2UiLCJjbGVhckRvYyIsImRlbGV0ZVBhZ2UiLCJ1cGRhdGVEb2NEZWZpbml0aW9uIiwiZ2V0Q3VycmVudFBhZ2VJbmZvIiwiaXNDdXJzb3JPdXRPZlBhZ2VWZXJ0aWNhbGx5IiwieU9mZnNldCIsImRyYXdUZXh0SW5MaW5lIiwiZm9udFNpemUiLCJmb250TmFtZSIsImZvbnRTdHlsZSIsInRleHRDb2xvciIsInhPZmZzZXQiLCJtYXhGb250U2l6ZSIsImNlbnRlciIsInNldFBhZ2UiLCJzZXRGb250Iiwic2V0Rm9udFNpemUiLCJzZXRUZXh0Q29sb3IiLCJ0ZXh0V2l0aExpbmsiLCJNYXRoIiwibWF4IiwiZHJhd1BhcmFncmFwaHMiLCJlc2NhcGVTcGVjaWFsQ2hhcmFjdGVycyIsInJlcGxhY2UiLCJyZW5kZXJQYXJhZ3JhcGgiLCJpbmRleCIsInBhZ2VCcmVhayIsImFsaWduIiwibWFyZ2luVG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJtYXJnaW5MZWZ0IiwidG9jSWRzIiwidG9jSXRlbVRleHQiLCJ3YXJuIiwibmV4dFhPZmZzZXQiLCJuZXh0WU9mZnNldCIsIm5leHRQYWdlIiwidG9jSWQiLCJ0ZXh0TGluZXMiLCJzcGxpdFRleHRUb1NpemUiLCJfdGhpczIiLCJnZXRUZXh0V2lkdGgiLCJ0cmFuc2Zvcm1Db250ZW50VG9EcmF3YWJsZVBhcmFncmFwaHMiLCJtYXAiLCJwYXJhbXMiLCJfdGhpczMiLCJhIiwiZW50cmllcyIsInRvY1NlY3Rpb24iLCJfdGhpczQiLCJ0b2NQYXJhZ3JhcGhzIiwiZmxhdCIsImRvd25sb2FkIiwic2F2ZSJdLCJtYXBwaW5ncyI6ImlHQVdPLFFBQVNBLFdBQVVDLEVBQU9DLE1BQWVDLGtFQUN6Q0QsY0FBZ0JBLE9BQ2hCQyxxQkFDVSxTQUNQLFlBQ0UsNEJBRUlDLDBCQUVUQyxJQUFNLEdBQUlDLE9BQU1DLEtBQUtKLFNBQVNLLGVBQWdCUCxlQUM5Q0EsTUFBUUEsT0FDUlEsVUFBWUYsS0FBS0YsSUFBSUssU0FBU0MsU0FBU0MsZ0JBQ3ZDQyxXQUFhTixLQUFLRixJQUFJSyxTQUFTQyxTQUFTRyxpQkFDeENDLFlBQWNaLEVBQVFZLGFBQWUsT0FDckNDLFlBQWNiLEVBQVFhLGFBQWUsT0FDckNDLGFBQWVWLEtBQUtFLFVBQStCLEVBQW5CRixLQUFLUSxpQkFDckNHLG9CQUNBQywrSEM1Qk1DLGtCQUFvQixHQUNwQmhCLG9CQUFzQixFQUN0QmlCLGNBQWdCLE9BQ2hCQyxrQkFBb0IsUUFDcEJDLG1CQUFxQixTQUNyQkMsbUJBQXFCLE9DRmxDeEIsV0FBVXlCLFVBQVVDLFFBQVUsMkJBQ3ZCUixvQkFDQWhCLGNBQWN5QixRQUFRQyxPQUFPLGtCQUFRQyxHQUFLQyxNQUFLQyxRQUFRLGVBQUVELEtBQUFBLE9BQ3hERSxFQUFLZCxZQUFZWSxFQUFJRyxTQUNqQixJQUFJQywwQ0FBeUNKLEVBQUlHLGtFQUVuRDlCLEdBQVVnQyxPQUFPQyxVQUFXTixTQUMzQjNCLEdBQVE4QixLQUNWZixZQUFZWSxFQUFJRyw0QkFPekJqQyxVQUFVeUIsVUFBVVksc0JBQXdCLFNBQStCQyxNQUNqRW5DLEdBQW1CbUMsRUFBbkJuQyxRQUFTb0MsRUFB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

11

package.json
{
"name": "jspdfmake",
"version": "1.3.2",
"version": "2.0.0",
"description": "A wrapper for jsPdf that provides a nice api to generate pdf files in an easy and customizable way",

@@ -36,4 +36,6 @@ "main": "dist/jspdfmake.min.js",

"devDependencies": {
"babel-eslint": "^10.0.1",
"babel-plugin-external-helpers": "^6.22.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-3": "^6.24.1",
"express": "^4.16.4",

@@ -43,4 +45,6 @@ "format-json": "^1.0.3",

"livereload": "^0.6.0",
"moment": "^2.23.0",
"nodemon": "^1.18.4",
"npm-run-all": "^3.1.2",
"prettier-eslint": "^8.8.2",
"rollup": "^0.39.0",

@@ -51,8 +55,9 @@ "rollup-plugin-babel": "^2.7.1",

"rollup-plugin-json": "^3.1.0",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-postcss": "^0.2.0",
"rollup-plugin-replace": "^1.1.1",
"rollup-plugin-uglify": "^1.0.1",
"rollup-watch": "^3.0.0"
"rollup-watch": "^3.0.0",
"underscore": "^1.9.1"
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc