(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.ExcelJS = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 2 && arguments[2] !== undefined ? arguments[2] : 0; _classCallCheck(this, Anchor); if (!address) { this.nativeCol = 0; this.nativeColOff = 0; this.nativeRow = 0; this.nativeRowOff = 0; } else if (typeof address === 'string') { var decoded = colCache.decodeAddress(address); this.nativeCol = decoded.col + offset; this.nativeColOff = 0; this.nativeRow = decoded.row + offset; this.nativeRowOff = 0; } else if (address.nativeCol !== undefined) { this.nativeCol = address.nativeCol || 0; this.nativeColOff = address.nativeColOff || 0; this.nativeRow = address.nativeRow || 0; this.nativeRowOff = address.nativeRowOff || 0; } else if (address.col !== undefined) { this.col = address.col + offset; this.row = address.row + offset; } else { this.nativeCol = 0; this.nativeColOff = 0; this.nativeRow = 0; this.nativeRowOff = 0; } this.worksheet = worksheet; } _createClass(Anchor, [{ key: "col", get: function get() { return this.nativeCol + Math.min(this.colWidth - 1, this.nativeColOff) / this.colWidth; }, set: function set(v) { this.nativeCol = Math.floor(v); this.nativeColOff = Math.floor((v - this.nativeCol) * this.colWidth); } }, { key: "row", get: function get() { return this.nativeRow + Math.min(this.rowHeight - 1, this.nativeRowOff) / this.rowHeight; }, set: function set(v) { this.nativeRow = Math.floor(v); this.nativeRowOff = Math.floor((v - this.nativeRow) * this.rowHeight); } }, { key: "colWidth", get: function get() { return this.worksheet && this.worksheet.getColumn(this.nativeCol + 1) && this.worksheet.getColumn(this.nativeCol + 1).isCustomWidth ? Math.floor(this.worksheet.getColumn(this.nativeCol + 1).width * 10000) : 640000; } }, { key: "rowHeight", get: function get() { return this.worksheet && this.worksheet.getRow(this.nativeRow + 1) && this.worksheet.getRow(this.nativeRow + 1).height ? Math.floor(this.worksheet.getRow(this.nativeRow + 1).height * 10000) : 180000; } }, { key: "model", get: function get() { return { nativeCol: this.nativeCol, nativeColOff: this.nativeColOff, nativeRow: this.nativeRow, nativeRowOff: this.nativeRowOff }; }, set: function set(value) { this.nativeCol = value.nativeCol; this.nativeColOff = value.nativeColOff; this.nativeRow = value.nativeRow; this.nativeRowOff = value.nativeRowOff; } }], [{ key: "asInstance", value: function asInstance(model) { return model instanceof Anchor || model == null ? model : new Anchor(model); } }]); return Anchor; }(); module.exports = Anchor; },{"../utils/col-cache":19}],3:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /* eslint-disable max-classes-per-file */ var colCache = require('../utils/col-cache'); var _ = require('../utils/under-dash'); var Enums = require('./enums'); var _require = require('../utils/shared-formula'), slideFormula = _require.slideFormula; var Note = require('./note'); // Cell requirements // Operate inside a worksheet // Store and retrieve a value with a range of types: text, number, date, hyperlink, reference, formula, etc. // Manage/use and manipulate cell format either as local to cell or inherited from column or row. var Cell = /*#__PURE__*/function () { function Cell(row, column, address) { _classCallCheck(this, Cell); if (!row || !column) { throw new Error('A Cell needs a Row'); } this._row = row; this._column = column; colCache.validateAddress(address); this._address = address; // TODO: lazy evaluation of this._value this._value = Value.create(Cell.Types.Null, this); this.style = this._mergeStyle(row.style, column.style, {}); this._mergeCount = 0; } _createClass(Cell, [{ key: "destroy", // help GC by removing cyclic (and other) references value: function destroy() { delete this.style; delete this._value; delete this._row; delete this._column; delete this._address; } // ========================================================================= // Styles stuff }, { key: "_mergeStyle", value: function _mergeStyle(rowStyle, colStyle, style) { var numFmt = rowStyle && rowStyle.numFmt || colStyle && colStyle.numFmt; if (numFmt) style.numFmt = numFmt; var font = rowStyle && rowStyle.font || colStyle && colStyle.font; if (font) style.font = font; var alignment = rowStyle && rowStyle.alignment || colStyle && colStyle.alignment; if (alignment) style.alignment = alignment; var border = rowStyle && rowStyle.border || colStyle && colStyle.border; if (border) style.border = border; var fill = rowStyle && rowStyle.fill || colStyle && colStyle.fill; if (fill) style.fill = fill; var protection = rowStyle && rowStyle.protection || colStyle && colStyle.protection; if (protection) style.protection = protection; return style; } // ========================================================================= // return the address for this cell }, { key: "toCsvString", value: function toCsvString() { return this._value.toCsvString(); } // ========================================================================= // Merge stuff }, { key: "addMergeRef", value: function addMergeRef() { this._mergeCount++; } }, { key: "releaseMergeRef", value: function releaseMergeRef() { this._mergeCount--; } }, { key: "merge", value: function merge(master, ignoreStyle) { this._value.release(); this._value = Value.create(Cell.Types.Merge, this, master); if (!ignoreStyle) { this.style = master.style; } } }, { key: "unmerge", value: function unmerge() { if (this.type === Cell.Types.Merge) { this._value.release(); this._value = Value.create(Cell.Types.Null, this); this.style = this._mergeStyle(this._row.style, this._column.style, {}); } } }, { key: "isMergedTo", value: function isMergedTo(master) { if (this._value.type !== Cell.Types.Merge) return false; return this._value.isMergedTo(master); } }, { key: "toString", value: function toString() { return this.text; } }, { key: "_upgradeToHyperlink", value: function _upgradeToHyperlink(hyperlink) { // if this cell is a string, turn it into a Hyperlink if (this.type === Cell.Types.String) { this._value = Value.create(Cell.Types.Hyperlink, this, { text: this._value.value, hyperlink: hyperlink }); } } // ========================================================================= // Formula stuff }, { key: "addName", value: function addName(name) { this.workbook.definedNames.addEx(this.fullAddress, name); } }, { key: "removeName", value: function removeName(name) { this.workbook.definedNames.removeEx(this.fullAddress, name); } }, { key: "removeAllNames", value: function removeAllNames() { this.workbook.definedNames.removeAllNames(this.fullAddress); } // ========================================================================= // Data Validation stuff }, { key: "worksheet", get: function get() { return this._row.worksheet; } }, { key: "workbook", get: function get() { return this._row.worksheet.workbook; } }, { key: "numFmt", get: function get() { return this.style.numFmt; }, set: function set(value) { this.style.numFmt = value; } }, { key: "font", get: function get() { return this.style.font; }, set: function set(value) { this.style.font = value; } }, { key: "alignment", get: function get() { return this.style.alignment; }, set: function set(value) { this.style.alignment = value; } }, { key: "border", get: function get() { return this.style.border; }, set: function set(value) { this.style.border = value; } }, { key: "fill", get: function get() { return this.style.fill; }, set: function set(value) { this.style.fill = value; } }, { key: "protection", get: function get() { return this.style.protection; }, set: function set(value) { this.style.protection = value; } }, { key: "address", get: function get() { return this._address; } }, { key: "row", get: function get() { return this._row.number; } }, { key: "col", get: function get() { return this._column.number; } }, { key: "$col$row", get: function get() { return "$".concat(this._column.letter, "$").concat(this.row); } // ========================================================================= // Value stuff }, { key: "type", get: function get() { return this._value.type; } }, { key: "effectiveType", get: function get() { return this._value.effectiveType; } }, { key: "isMerged", get: function get() { return this._mergeCount > 0 || this.type === Cell.Types.Merge; } }, { key: "master", get: function get() { if (this.type === Cell.Types.Merge) { return this._value.master; } return this; // an unmerged cell is its own master } }, { key: "isHyperlink", get: function get() { return this._value.type === Cell.Types.Hyperlink; } }, { key: "hyperlink", get: function get() { return this._value.hyperlink; } // return the value }, { key: "value", get: function get() { return this._value.value; } // set the value - can be number, string or raw , set: function set(v) { // special case - merge cells set their master's value if (this.type === Cell.Types.Merge) { this._value.master.value = v; return; } this._value.release(); // assign value this._value = Value.create(Value.getType(v), this, v); } }, { key: "note", get: function get() { return this._comment && this._comment.note; }, set: function set(note) { this._comment = new Note(note); } }, { key: "text", get: function get() { return this._value.toString(); } }, { key: "html", get: function get() { return _.escapeHtml(this.text); } }, { key: "formula", get: function get() { return this._value.formula; } }, { key: "result", get: function get() { return this._value.result; } }, { key: "formulaType", get: function get() { return this._value.formulaType; } // ========================================================================= // Name stuff }, { key: "fullAddress", get: function get() { var worksheet = this._row.worksheet; return { sheetName: worksheet.name, address: this.address, row: this.row, col: this.col }; } }, { key: "name", get: function get() { return this.names[0]; }, set: function set(value) { this.names = [value]; } }, { key: "names", get: function get() { return this.workbook.definedNames.getNamesEx(this.fullAddress); }, set: function set(value) { var _this = this; var definedNames = this.workbook.definedNames; definedNames.removeAllNames(this.fullAddress); value.forEach(function (name) { definedNames.addEx(_this.fullAddress, name); }); } }, { key: "_dataValidations", get: function get() { return this.worksheet.dataValidations; } }, { key: "dataValidation", get: function get() { return this._dataValidations.find(this.address); }, set: function set(value) { this._dataValidations.add(this.address, value); } // ========================================================================= // Model stuff }, { key: "model", get: function get() { var model = this._value.model; model.style = this.style; if (this._comment) { model.comment = this._comment.model; } return model; }, set: function set(value) { this._value.release(); this._value = Value.create(value.type, this); this._value.model = value; if (value.comment) { switch (value.comment.type) { case 'note': this._comment = Note.fromModel(value.comment); break; } } if (value.style) { this.style = value.style; } else { this.style = {}; } } }]); return Cell; }(); Cell.Types = Enums.ValueType; // ============================================================================= // Internal Value Types var NullValue = /*#__PURE__*/function () { function NullValue(cell) { _classCallCheck(this, NullValue); this.model = { address: cell.address, type: Cell.Types.Null }; } _createClass(NullValue, [{ key: "toCsvString", value: function toCsvString() { return ''; } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return ''; } }, { key: "value", get: function get() { return null; }, set: function set(value) {// nothing to do } }, { key: "type", get: function get() { return Cell.Types.Null; } }, { key: "effectiveType", get: function get() { return Cell.Types.Null; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return NullValue; }(); var NumberValue = /*#__PURE__*/function () { function NumberValue(cell, value) { _classCallCheck(this, NumberValue); this.model = { address: cell.address, type: Cell.Types.Number, value: value }; } _createClass(NumberValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.value.toString(); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value.toString(); } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.Number; } }, { key: "effectiveType", get: function get() { return Cell.Types.Number; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return NumberValue; }(); var StringValue = /*#__PURE__*/function () { function StringValue(cell, value) { _classCallCheck(this, StringValue); this.model = { address: cell.address, type: Cell.Types.String, value: value }; } _createClass(StringValue, [{ key: "toCsvString", value: function toCsvString() { return "\"".concat(this.model.value.replace(/"/g, '""'), "\""); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value; } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.String; } }, { key: "effectiveType", get: function get() { return Cell.Types.String; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return StringValue; }(); var RichTextValue = /*#__PURE__*/function () { function RichTextValue(cell, value) { _classCallCheck(this, RichTextValue); this.model = { address: cell.address, type: Cell.Types.String, value: value }; } _createClass(RichTextValue, [{ key: "toString", value: function toString() { return this.model.value.richText.map(function (t) { return t.text; }).join(''); } }, { key: "toCsvString", value: function toCsvString() { return "\"".concat(this.text.replace(/"/g, '""'), "\""); } }, { key: "release", value: function release() {} }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.RichText; } }, { key: "effectiveType", get: function get() { return Cell.Types.RichText; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return RichTextValue; }(); var DateValue = /*#__PURE__*/function () { function DateValue(cell, value) { _classCallCheck(this, DateValue); this.model = { address: cell.address, type: Cell.Types.Date, value: value }; } _createClass(DateValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.value.toISOString(); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value.toString(); } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.Date; } }, { key: "effectiveType", get: function get() { return Cell.Types.Date; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return DateValue; }(); var HyperlinkValue = /*#__PURE__*/function () { function HyperlinkValue(cell, value) { _classCallCheck(this, HyperlinkValue); this.model = { address: cell.address, type: Cell.Types.Hyperlink, text: value ? value.text : undefined, hyperlink: value ? value.hyperlink : undefined }; if (value && value.tooltip) { this.model.tooltip = value.tooltip; } } _createClass(HyperlinkValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.hyperlink; } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.text; } }, { key: "value", get: function get() { var v = { text: this.model.text, hyperlink: this.model.hyperlink }; if (this.model.tooltip) { v.tooltip = this.model.tooltip; } return v; }, set: function set(value) { this.model = { text: value.text, hyperlink: value.hyperlink }; if (value.tooltip) { this.model.tooltip = value.tooltip; } } }, { key: "text", get: function get() { return this.model.text; }, set: function set(value) { this.model.text = value; } /* get tooltip() { return this.model.tooltip; } set tooltip(value) { this.model.tooltip = value; } */ }, { key: "hyperlink", get: function get() { return this.model.hyperlink; }, set: function set(value) { this.model.hyperlink = value; } }, { key: "type", get: function get() { return Cell.Types.Hyperlink; } }, { key: "effectiveType", get: function get() { return Cell.Types.Hyperlink; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return HyperlinkValue; }(); var MergeValue = /*#__PURE__*/function () { function MergeValue(cell, master) { _classCallCheck(this, MergeValue); this.model = { address: cell.address, type: Cell.Types.Merge, master: master ? master.address : undefined }; this._master = master; if (master) { master.addMergeRef(); } } _createClass(MergeValue, [{ key: "isMergedTo", value: function isMergedTo(master) { return master === this._master; } }, { key: "toCsvString", value: function toCsvString() { return ''; } }, { key: "release", value: function release() { this._master.releaseMergeRef(); } }, { key: "toString", value: function toString() { return this.value.toString(); } }, { key: "value", get: function get() { return this._master.value; }, set: function set(value) { if (value instanceof Cell) { if (this._master) { this._master.releaseMergeRef(); } value.addMergeRef(); this._master = value; } else { this._master.value = value; } } }, { key: "master", get: function get() { return this._master; } }, { key: "type", get: function get() { return Cell.Types.Merge; } }, { key: "effectiveType", get: function get() { return this._master.effectiveType; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return MergeValue; }(); var FormulaValue = /*#__PURE__*/function () { function FormulaValue(cell, value) { _classCallCheck(this, FormulaValue); this.cell = cell; this.model = { address: cell.address, type: Cell.Types.Formula, shareType: value ? value.shareType : undefined, ref: value ? value.ref : undefined, formula: value ? value.formula : undefined, sharedFormula: value ? value.sharedFormula : undefined, result: value ? value.result : undefined }; } _createClass(FormulaValue, [{ key: "_copyModel", value: function _copyModel(model) { var copy = {}; var cp = function cp(name) { var value = model[name]; if (value) { copy[name] = value; } }; cp('formula'); cp('result'); cp('ref'); cp('shareType'); cp('sharedFormula'); return copy; } }, { key: "validate", value: function validate(value) { switch (Value.getType(value)) { case Cell.Types.Null: case Cell.Types.String: case Cell.Types.Number: case Cell.Types.Date: break; case Cell.Types.Hyperlink: case Cell.Types.Formula: default: throw new Error('Cannot process that type of result value'); } } }, { key: "_getTranslatedFormula", value: function _getTranslatedFormula() { if (!this._translatedFormula && this.model.sharedFormula) { var worksheet = this.cell.worksheet; var master = worksheet.findCell(this.model.sharedFormula); this._translatedFormula = master && slideFormula(master.formula, master.address, this.model.address); } return this._translatedFormula; } }, { key: "toCsvString", value: function toCsvString() { return "".concat(this.model.result || ''); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.result ? this.model.result.toString() : ''; } }, { key: "value", get: function get() { return this._copyModel(this.model); }, set: function set(value) { this.model = this._copyModel(value); } }, { key: "dependencies", get: function get() { // find all the ranges and cells mentioned in the formula var ranges = this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g); var cells = this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}:[A-Z]{1,3}\d{1,4}/g, '').match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\d{1,4}/g); return { ranges: ranges, cells: cells }; } }, { key: "formula", get: function get() { return this.model.formula || this._getTranslatedFormula(); }, set: function set(value) { this.model.formula = value; } }, { key: "formulaType", get: function get() { if (this.model.formula) { return Enums.FormulaType.Master; } if (this.model.sharedFormula) { return Enums.FormulaType.Shared; } return Enums.FormulaType.None; } }, { key: "result", get: function get() { return this.model.result; }, set: function set(value) { this.model.result = value; } }, { key: "type", get: function get() { return Cell.Types.Formula; } }, { key: "effectiveType", get: function get() { var v = this.model.result; if (v === null || v === undefined) { return Enums.ValueType.Null; } if (v instanceof String || typeof v === 'string') { return Enums.ValueType.String; } if (typeof v === 'number') { return Enums.ValueType.Number; } if (v instanceof Date) { return Enums.ValueType.Date; } if (v.text && v.hyperlink) { return Enums.ValueType.Hyperlink; } if (v.formula) { return Enums.ValueType.Formula; } return Enums.ValueType.Null; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return FormulaValue; }(); var SharedStringValue = /*#__PURE__*/function () { function SharedStringValue(cell, value) { _classCallCheck(this, SharedStringValue); this.model = { address: cell.address, type: Cell.Types.SharedString, value: value }; } _createClass(SharedStringValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.value.toString(); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value.toString(); } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.SharedString; } }, { key: "effectiveType", get: function get() { return Cell.Types.SharedString; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return SharedStringValue; }(); var BooleanValue = /*#__PURE__*/function () { function BooleanValue(cell, value) { _classCallCheck(this, BooleanValue); this.model = { address: cell.address, type: Cell.Types.Boolean, value: value }; } _createClass(BooleanValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.value ? 1 : 0; } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value.toString(); } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.Boolean; } }, { key: "effectiveType", get: function get() { return Cell.Types.Boolean; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return BooleanValue; }(); var ErrorValue = /*#__PURE__*/function () { function ErrorValue(cell, value) { _classCallCheck(this, ErrorValue); this.model = { address: cell.address, type: Cell.Types.Error, value: value }; } _createClass(ErrorValue, [{ key: "toCsvString", value: function toCsvString() { return this.toString(); } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value.error.toString(); } }, { key: "value", get: function get() { return this.model.value; }, set: function set(value) { this.model.value = value; } }, { key: "type", get: function get() { return Cell.Types.Error; } }, { key: "effectiveType", get: function get() { return Cell.Types.Error; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return ErrorValue; }(); var JSONValue = /*#__PURE__*/function () { function JSONValue(cell, value) { _classCallCheck(this, JSONValue); this.model = { address: cell.address, type: Cell.Types.String, value: JSON.stringify(value), rawValue: value }; } _createClass(JSONValue, [{ key: "toCsvString", value: function toCsvString() { return this.model.value; } }, { key: "release", value: function release() {} }, { key: "toString", value: function toString() { return this.model.value; } }, { key: "value", get: function get() { return this.model.rawValue; }, set: function set(value) { this.model.rawValue = value; this.model.value = JSON.stringify(value); } }, { key: "type", get: function get() { return Cell.Types.String; } }, { key: "effectiveType", get: function get() { return Cell.Types.String; } }, { key: "address", get: function get() { return this.model.address; }, set: function set(value) { this.model.address = value; } }]); return JSONValue; }(); // Value is a place to hold common static Value type functions var Value = { getType: function getType(value) { if (value === null || value === undefined) { return Cell.Types.Null; } if (value instanceof String || typeof value === 'string') { return Cell.Types.String; } if (typeof value === 'number') { return Cell.Types.Number; } if (typeof value === 'boolean') { return Cell.Types.Boolean; } if (value instanceof Date) { return Cell.Types.Date; } if (value.text && value.hyperlink) { return Cell.Types.Hyperlink; } if (value.formula || value.sharedFormula) { return Cell.Types.Formula; } if (value.richText) { return Cell.Types.RichText; } if (value.sharedString) { return Cell.Types.SharedString; } if (value.error) { return Cell.Types.Error; } return Cell.Types.JSON; }, // map valueType to constructor types: [{ t: Cell.Types.Null, f: NullValue }, { t: Cell.Types.Number, f: NumberValue }, { t: Cell.Types.String, f: StringValue }, { t: Cell.Types.Date, f: DateValue }, { t: Cell.Types.Hyperlink, f: HyperlinkValue }, { t: Cell.Types.Formula, f: FormulaValue }, { t: Cell.Types.Merge, f: MergeValue }, { t: Cell.Types.JSON, f: JSONValue }, { t: Cell.Types.SharedString, f: SharedStringValue }, { t: Cell.Types.RichText, f: RichTextValue }, { t: Cell.Types.Boolean, f: BooleanValue }, { t: Cell.Types.Error, f: ErrorValue }].reduce(function (p, t) { p[t.t] = t.f; return p; }, []), create: function create(type, cell, value) { var T = this.types[type]; if (!T) { throw new Error("Could not create Value of type ".concat(type)); } return new T(cell, value); } }; module.exports = Cell; },{"../utils/col-cache":19,"../utils/shared-formula":22,"../utils/under-dash":25,"./enums":7,"./note":9}],4:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../utils/under-dash'); var Enums = require('./enums'); var colCache = require('../utils/col-cache'); var DEFAULT_COLUMN_WIDTH = 9; // Column defines the column properties for 1 column. // This includes header rows, widths, key, (style), etc. // Worksheet will condense the columns as appropriate during serialization var Column = /*#__PURE__*/function () { function Column(worksheet, number, defn) { _classCallCheck(this, Column); this._worksheet = worksheet; this._number = number; if (defn !== false) { // sometimes defn will follow this.defn = defn; } } _createClass(Column, [{ key: "toString", value: function toString() { return JSON.stringify({ key: this.key, width: this.width, headers: this.headers.length ? this.headers : undefined }); } }, { key: "equivalentTo", value: function equivalentTo(other) { return this.width === other.width && this.hidden === other.hidden && this.outlineLevel === other.outlineLevel && _.isEqual(this.style, other.style); } }, { key: "eachCell", value: function eachCell(options, iteratee) { var colNumber = this.number; if (!iteratee) { iteratee = options; options = null; } this._worksheet.eachRow(options, function (row, rowNumber) { iteratee(row.getCell(colNumber), rowNumber); }); } }, { key: "_applyStyle", // ========================================================================= // styles value: function _applyStyle(name, value) { this.style[name] = value; this.eachCell(function (cell) { cell[name] = value; }); return value; } }, { key: "number", get: function get() { return this._number; } }, { key: "worksheet", get: function get() { return this._worksheet; } }, { key: "letter", get: function get() { return colCache.n2l(this._number); } }, { key: "isCustomWidth", get: function get() { return this.width !== undefined && this.width !== DEFAULT_COLUMN_WIDTH; } }, { key: "defn", get: function get() { return { header: this._header, key: this.key, width: this.width, style: this.style, hidden: this.hidden, outlineLevel: this.outlineLevel }; }, set: function set(value) { if (value) { this.key = value.key; this.width = value.width !== undefined ? value.width : DEFAULT_COLUMN_WIDTH; this.outlineLevel = value.outlineLevel; if (value.style) { this.style = value.style; } else { this.style = {}; } // headers must be set after style this.header = value.header; this._hidden = !!value.hidden; } else { delete this._header; delete this._key; delete this.width; this.style = {}; this.outlineLevel = 0; } } }, { key: "headers", get: function get() { return this._header && this._header instanceof Array ? this._header : [this._header]; } }, { key: "header", get: function get() { return this._header; }, set: function set(value) { var _this = this; if (value !== undefined) { this._header = value; this.headers.forEach(function (text, index) { _this._worksheet.getCell(index + 1, _this.number).value = text; }); } else { this._header = undefined; } } }, { key: "key", get: function get() { return this._key; }, set: function set(value) { var column = this._key && this._worksheet.getColumnKey(this._key); if (column === this) { this._worksheet.deleteColumnKey(this._key); } this._key = value; if (value) { this._worksheet.setColumnKey(this._key, this); } } }, { key: "hidden", get: function get() { return !!this._hidden; }, set: function set(value) { this._hidden = value; } }, { key: "outlineLevel", get: function get() { return this._outlineLevel || 0; }, set: function set(value) { this._outlineLevel = value; } }, { key: "collapsed", get: function get() { return !!(this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelCol); } }, { key: "isDefault", get: function get() { if (this.isCustomWidth) { return false; } if (this.hidden) { return false; } if (this.outlineLevel) { return false; } var s = this.style; if (s && (s.font || s.numFmt || s.alignment || s.border || s.fill || s.protection)) { return false; } return true; } }, { key: "headerCount", get: function get() { return this.headers.length; } }, { key: "values", get: function get() { var v = []; this.eachCell(function (cell, rowNumber) { if (cell && cell.type !== Enums.ValueType.Null) { v[rowNumber] = cell.value; } }); return v; }, set: function set(v) { var _this2 = this; if (!v) { return; } var colNumber = this.number; var offset = 0; if (v.hasOwnProperty('0')) { // assume contiguous array, start at row 1 offset = 1; } v.forEach(function (value, index) { _this2._worksheet.getCell(index + offset, colNumber).value = value; }); } }, { key: "numFmt", get: function get() { return this.style.numFmt; }, set: function set(value) { this._applyStyle('numFmt', value); } }, { key: "font", get: function get() { return this.style.font; }, set: function set(value) { this._applyStyle('font', value); } }, { key: "alignment", get: function get() { return this.style.alignment; }, set: function set(value) { this._applyStyle('alignment', value); } }, { key: "protection", get: function get() { return this.style.protection; }, set: function set(value) { this._applyStyle('protection', value); } }, { key: "border", get: function get() { return this.style.border; }, set: function set(value) { this._applyStyle('border', value); } }, { key: "fill", get: function get() { return this.style.fill; }, set: function set(value) { this._applyStyle('fill', value); } // ============================================================================= // static functions }], [{ key: "toModel", value: function toModel(columns) { // Convert array of Column into compressed list cols var cols = []; var col = null; if (columns) { columns.forEach(function (column, index) { if (column.isDefault) { if (col) { col = null; } } else if (!col || !column.equivalentTo(col)) { col = { min: index + 1, max: index + 1, width: column.width !== undefined ? column.width : DEFAULT_COLUMN_WIDTH, style: column.style, isCustomWidth: column.isCustomWidth, hidden: column.hidden, outlineLevel: column.outlineLevel, collapsed: column.collapsed }; cols.push(col); } else { col.max = index + 1; } }); } return cols.length ? cols : undefined; } }, { key: "fromModel", value: function fromModel(worksheet, cols) { cols = cols || []; var columns = []; var count = 1; var index = 0; while (index < cols.length) { var col = cols[index++]; while (count < col.min) { columns.push(new Column(worksheet, count++)); } while (count <= col.max) { columns.push(new Column(worksheet, count++, col)); } } return columns.length ? columns : null; } }]); return Column; }(); module.exports = Column; },{"../utils/col-cache":19,"../utils/under-dash":25,"./enums":7}],5:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var DataValidations = /*#__PURE__*/function () { function DataValidations(model) { _classCallCheck(this, DataValidations); this.model = model || {}; } _createClass(DataValidations, [{ key: "add", value: function add(address, validation) { return this.model[address] = validation; } }, { key: "find", value: function find(address) { return this.model[address]; } }, { key: "remove", value: function remove(address) { this.model[address] = undefined; } }]); return DataValidations; }(); module.exports = DataValidations; },{}],6:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../utils/under-dash'); var colCache = require('../utils/col-cache'); var CellMatrix = require('../utils/cell-matrix'); var Range = require('./range'); var rangeRegexp = /[$](\w+)[$](\d+)(:[$](\w+)[$](\d+))?/; var DefinedNames = /*#__PURE__*/function () { function DefinedNames() { _classCallCheck(this, DefinedNames); this.matrixMap = {}; } _createClass(DefinedNames, [{ key: "getMatrix", value: function getMatrix(name) { var matrix = this.matrixMap[name] || (this.matrixMap[name] = new CellMatrix()); return matrix; } // add a name to a cell. locStr in the form SheetName!$col$row or SheetName!$c1$r1:$c2:$r2 }, { key: "add", value: function add(locStr, name) { var location = colCache.decodeEx(locStr); this.addEx(location, name); } }, { key: "addEx", value: function addEx(location, name) { var matrix = this.getMatrix(name); if (location.top) { for (var col = location.left; col <= location.right; col++) { for (var row = location.top; row <= location.bottom; row++) { var address = { sheetName: location.sheetName, address: colCache.n2l(col) + row, row: row, col: col }; matrix.addCellEx(address); } } } else { matrix.addCellEx(location); } } }, { key: "remove", value: function remove(locStr, name) { var location = colCache.decodeEx(locStr); this.removeEx(location, name); } }, { key: "removeEx", value: function removeEx(location, name) { var matrix = this.getMatrix(name); matrix.removeCellEx(location); } }, { key: "removeAllNames", value: function removeAllNames(location) { _.each(this.matrixMap, function (matrix) { matrix.removeCellEx(location); }); } }, { key: "forEach", value: function forEach(callback) { _.each(this.matrixMap, function (matrix, name) { matrix.forEach(function (cell) { callback(name, cell); }); }); } // get all the names of a cell }, { key: "getNames", value: function getNames(addressStr) { return this.getNamesEx(colCache.decodeEx(addressStr)); } }, { key: "getNamesEx", value: function getNamesEx(address) { return _.map(this.matrixMap, function (matrix, name) { return matrix.findCellEx(address) && name; }).filter(Boolean); } }, { key: "_explore", value: function _explore(matrix, cell) { cell.mark = false; var sheetName = cell.sheetName; var range = new Range(cell.row, cell.col, cell.row, cell.col, sheetName); var x; var y; // grow vertical - only one col to worry about function vGrow(yy, edge) { var c = matrix.findCellAt(sheetName, yy, cell.col); if (!c || !c.mark) { return false; } range[edge] = yy; c.mark = false; return true; } for (y = cell.row - 1; vGrow(y, 'top'); y--) { ; } for (y = cell.row + 1; vGrow(y, 'bottom'); y++) { ; } // grow horizontal - ensure all rows can grow function hGrow(xx, edge) { var cells = []; for (y = range.top; y <= range.bottom; y++) { var c = matrix.findCellAt(sheetName, y, xx); if (c && c.mark) { cells.push(c); } else { return false; } } range[edge] = xx; for (var i = 0; i < cells.length; i++) { cells[i].mark = false; } return true; } for (x = cell.col - 1; hGrow(x, 'left'); x--) { ; } for (x = cell.col + 1; hGrow(x, 'right'); x++) { ; } return range; } }, { key: "getRanges", value: function getRanges(name, matrix) { var _this = this; matrix = matrix || this.matrixMap[name]; if (!matrix) { return { name: name, ranges: [] }; } // mark and sweep! matrix.forEach(function (cell) { cell.mark = true; }); var ranges = matrix.map(function (cell) { return cell.mark && _this._explore(matrix, cell); }).filter(Boolean).map(function (range) { return range.$shortRange; }); return { name: name, ranges: ranges }; } }, { key: "normaliseMatrix", value: function normaliseMatrix(matrix, sheetName) { // some of the cells might have shifted on specified sheet // need to reassign rows, cols matrix.forEachInSheet(sheetName, function (cell, row, col) { if (cell) { if (cell.row !== row || cell.col !== col) { cell.row = row; cell.col = col; cell.address = colCache.n2l(col) + row; } } }); } }, { key: "spliceRows", value: function spliceRows(sheetName, start, numDelete, numInsert) { var _this2 = this; _.each(this.matrixMap, function (matrix) { matrix.spliceRows(sheetName, start, numDelete, numInsert); _this2.normaliseMatrix(matrix, sheetName); }); } }, { key: "spliceColumns", value: function spliceColumns(sheetName, start, numDelete, numInsert) { var _this3 = this; _.each(this.matrixMap, function (matrix) { matrix.spliceColumns(sheetName, start, numDelete, numInsert); _this3.normaliseMatrix(matrix, sheetName); }); } }, { key: "model", get: function get() { var _this4 = this; // To get names per cell - just iterate over all names finding cells if they exist return _.map(this.matrixMap, function (matrix, name) { return _this4.getRanges(name, matrix); }).filter(function (definedName) { return definedName.ranges.length; }); }, set: function set(value) { // value is [ { name, ranges }, ... ] var matrixMap = this.matrixMap = {}; value.forEach(function (definedName) { var matrix = matrixMap[definedName.name] = new CellMatrix(); definedName.ranges.forEach(function (rangeStr) { if (rangeRegexp.test(rangeStr.split('!').pop() || '')) { matrix.addCell(rangeStr); } }); }); } }]); return DefinedNames; }(); module.exports = DefinedNames; },{"../utils/cell-matrix":18,"../utils/col-cache":19,"../utils/under-dash":25,"./range":10}],7:[function(require,module,exports){ 'use strict'; module.exports = { ValueType: { Null: 0, Merge: 1, Number: 2, String: 3, Date: 4, Hyperlink: 5, Formula: 6, SharedString: 7, RichText: 8, Boolean: 9, Error: 10 }, FormulaType: { None: 0, Master: 1, Shared: 2 }, RelationshipType: { None: 0, OfficeDocument: 1, Worksheet: 2, CalcChain: 3, SharedStrings: 4, Styles: 5, Theme: 6, Hyperlink: 7 }, DocumentType: { Xlsx: 1 }, ReadingOrder: { LeftToRight: 1, RightToLeft: 2 }, ErrorValue: { NotApplicable: '#N/A', Ref: '#REF!', Name: '#NAME?', DivZero: '#DIV/0!', Null: '#NULL!', Value: '#VALUE!', Num: '#NUM!' } }; },{}],8:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var colCache = require('../utils/col-cache'); var Anchor = require('./anchor'); var Image = /*#__PURE__*/function () { function Image(worksheet, model) { _classCallCheck(this, Image); this.worksheet = worksheet; this.model = model; } _createClass(Image, [{ key: "model", get: function get() { switch (this.type) { case 'background': return { type: this.type, imageId: this.imageId }; case 'image': return { type: this.type, imageId: this.imageId, hyperlinks: this.range.hyperlinks, range: { tl: this.range.tl.model, br: this.range.br && this.range.br.model, ext: this.range.ext, editAs: this.range.editAs } }; default: throw new Error('Invalid Image Type'); } }, set: function set(_ref) { var type = _ref.type, imageId = _ref.imageId, range = _ref.range, hyperlinks = _ref.hyperlinks; this.type = type; this.imageId = imageId; if (type === 'image') { if (typeof range === 'string') { var decoded = colCache.decode(range); this.range = { tl: new Anchor(this.worksheet, { col: decoded.left, row: decoded.top }, -1), br: new Anchor(this.worksheet, { col: decoded.right, row: decoded.bottom }, 0), editAs: 'oneCell' }; } else { this.range = { tl: new Anchor(this.worksheet, range.tl, 0), br: range.br && new Anchor(this.worksheet, range.br, 0), ext: range.ext, editAs: range.editAs, hyperlinks: hyperlinks || range.hyperlinks }; } } } }]); return Image; }(); module.exports = Image; },{"../utils/col-cache":19,"./anchor":2}],9:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../utils/under-dash'); var Note = /*#__PURE__*/function () { function Note(note) { _classCallCheck(this, Note); this.note = note; } _createClass(Note, [{ key: "model", get: function get() { var value = null; switch (_typeof(this.note)) { case 'string': value = { type: 'note', note: { texts: [{ text: this.note }] } }; break; default: value = { type: 'note', note: this.note }; break; } // Suitable for all cell comments return _.deepMerge({}, Note.DEFAULT_CONFIGS, value); }, set: function set(value) { var note = value.note; var texts = note.texts; if (texts.length === 1 && Object.keys(texts[0]).length === 1) { this.note = texts[0].text; } else { this.note = note; } } }], [{ key: "fromModel", value: function fromModel(model) { var note = new Note(); note.model = model; return note; } }]); return Note; }(); Note.DEFAULT_CONFIGS = { note: { margins: { insetmode: 'auto', inset: [0.13, 0.13, 0.25, 0.25] }, protection: { locked: 'True', lockText: 'True' }, editAs: 'absolute' } }; module.exports = Note; },{"../utils/under-dash":25}],10:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var colCache = require('../utils/col-cache'); // used by worksheet to calculate sheet dimensions var Range = /*#__PURE__*/function () { function Range() { _classCallCheck(this, Range); this.decode(arguments); } _createClass(Range, [{ key: "setTLBR", value: function setTLBR(t, l, b, r, s) { if (arguments.length < 4) { // setTLBR(tl, br, s) var tl = colCache.decodeAddress(t); var br = colCache.decodeAddress(l); this.model = { top: Math.min(tl.row, br.row), left: Math.min(tl.col, br.col), bottom: Math.max(tl.row, br.row), right: Math.max(tl.col, br.col), sheetName: b }; this.setTLBR(tl.row, tl.col, br.row, br.col, s); } else { // setTLBR(t, l, b, r, s) this.model = { top: Math.min(t, b), left: Math.min(l, r), bottom: Math.max(t, b), right: Math.max(l, r), sheetName: s }; } } }, { key: "decode", value: function decode(argv) { switch (argv.length) { case 5: // [t,l,b,r,s] this.setTLBR(argv[0], argv[1], argv[2], argv[3], argv[4]); break; case 4: // [t,l,b,r] this.setTLBR(argv[0], argv[1], argv[2], argv[3]); break; case 3: // [tl,br,s] this.setTLBR(argv[0], argv[1], argv[2]); break; case 2: // [tl,br] this.setTLBR(argv[0], argv[1]); break; case 1: { var value = argv[0]; if (value instanceof Range) { // copy constructor this.model = { top: value.model.top, left: value.model.left, bottom: value.model.bottom, right: value.model.right, sheetName: value.sheetName }; } else if (value instanceof Array) { // an arguments array this.decode(value); } else if (value.top && value.left && value.bottom && value.right) { // a model this.model = { top: value.top, left: value.left, bottom: value.bottom, right: value.right, sheetName: value.sheetName }; } else { // [sheetName!]tl:br var tlbr = colCache.decodeEx(value); if (tlbr.top) { this.model = { top: tlbr.top, left: tlbr.left, bottom: tlbr.bottom, right: tlbr.right, sheetName: tlbr.sheetName }; } else { this.model = { top: tlbr.row, left: tlbr.col, bottom: tlbr.row, right: tlbr.col, sheetName: tlbr.sheetName }; } } break; } case 0: this.model = { top: 0, left: 0, bottom: 0, right: 0 }; break; default: throw new Error("Invalid number of arguments to _getDimensions() - ".concat(argv.length)); } } }, { key: "expand", value: function expand(top, left, bottom, right) { if (!this.model.top || top < this.top) this.top = top; if (!this.model.left || left < this.left) this.left = left; if (!this.model.bottom || bottom > this.bottom) this.bottom = bottom; if (!this.model.right || right > this.right) this.right = right; } }, { key: "expandRow", value: function expandRow(row) { if (row) { var dimensions = row.dimensions, number = row.number; if (dimensions) { this.expand(number, dimensions.min, number, dimensions.max); } } } }, { key: "expandToAddress", value: function expandToAddress(addressStr) { var address = colCache.decodeEx(addressStr); this.expand(address.row, address.col, address.row, address.col); } }, { key: "toString", value: function toString() { return this.range; } }, { key: "intersects", value: function intersects(other) { if (other.sheetName && this.sheetName && other.sheetName !== this.sheetName) return false; if (other.bottom < this.top) return false; if (other.top > this.bottom) return false; if (other.right < this.left) return false; if (other.left > this.right) return false; return true; } }, { key: "contains", value: function contains(addressStr) { var address = colCache.decodeEx(addressStr); return this.containsEx(address); } }, { key: "containsEx", value: function containsEx(address) { if (address.sheetName && this.sheetName && address.sheetName !== this.sheetName) return false; return address.row >= this.top && address.row <= this.bottom && address.col >= this.left && address.col <= this.right; } }, { key: "forEachAddress", value: function forEachAddress(cb) { for (var col = this.left; col <= this.right; col++) { for (var row = this.top; row <= this.bottom; row++) { cb(colCache.encodeAddress(row, col), row, col); } } } }, { key: "top", get: function get() { return this.model.top || 1; }, set: function set(value) { this.model.top = value; } }, { key: "left", get: function get() { return this.model.left || 1; }, set: function set(value) { this.model.left = value; } }, { key: "bottom", get: function get() { return this.model.bottom || 1; }, set: function set(value) { this.model.bottom = value; } }, { key: "right", get: function get() { return this.model.right || 1; }, set: function set(value) { this.model.right = value; } }, { key: "sheetName", get: function get() { return this.model.sheetName; }, set: function set(value) { this.model.sheetName = value; } }, { key: "_serialisedSheetName", get: function get() { var sheetName = this.model.sheetName; if (sheetName) { if (/^[a-zA-Z0-9]*$/.test(sheetName)) { return "".concat(sheetName, "!"); } return "'".concat(sheetName, "'!"); } return ''; } }, { key: "tl", get: function get() { return colCache.n2l(this.left) + this.top; } }, { key: "$t$l", get: function get() { return "$".concat(colCache.n2l(this.left), "$").concat(this.top); } }, { key: "br", get: function get() { return colCache.n2l(this.right) + this.bottom; } }, { key: "$b$r", get: function get() { return "$".concat(colCache.n2l(this.right), "$").concat(this.bottom); } }, { key: "range", get: function get() { return "".concat(this._serialisedSheetName + this.tl, ":").concat(this.br); } }, { key: "$range", get: function get() { return "".concat(this._serialisedSheetName + this.$t$l, ":").concat(this.$b$r); } }, { key: "shortRange", get: function get() { return this.count > 1 ? this.range : this._serialisedSheetName + this.tl; } }, { key: "$shortRange", get: function get() { return this.count > 1 ? this.$range : this._serialisedSheetName + this.$t$l; } }, { key: "count", get: function get() { return (1 + this.bottom - this.top) * (1 + this.right - this.left); } }]); return Range; }(); module.exports = Range; },{"../utils/col-cache":19}],11:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../utils/under-dash'); var Enums = require('./enums'); var colCache = require('../utils/col-cache'); var Cell = require('./cell'); var Row = /*#__PURE__*/function () { function Row(worksheet, number) { _classCallCheck(this, Row); this._worksheet = worksheet; this._number = number; this._cells = []; this.style = {}; this.outlineLevel = 0; } // return the row number _createClass(Row, [{ key: "commit", // Inform Streaming Writer that this row (and all rows before it) are complete // and ready to write. Has no effect on Worksheet document value: function commit() { this._worksheet._commitRow(this); // eslint-disable-line no-underscore-dangle } // helps GC by breaking cyclic references }, { key: "destroy", value: function destroy() { delete this._worksheet; delete this._cells; delete this.style; } }, { key: "findCell", value: function findCell(colNumber) { return this._cells[colNumber - 1]; } // given {address, row, col}, find or create new cell }, { key: "getCellEx", value: function getCellEx(address) { var cell = this._cells[address.col - 1]; if (!cell) { var column = this._worksheet.getColumn(address.col); cell = new Cell(this, column, address.address); this._cells[address.col - 1] = cell; } return cell; } // get cell by key, letter or column number }, { key: "getCell", value: function getCell(col) { if (typeof col === 'string') { // is it a key? var column = this._worksheet.getColumnKey(col); if (column) { col = column.number; } else { col = colCache.l2n(col); } } return this._cells[col - 1] || this.getCellEx({ address: colCache.encodeAddress(this._number, col), row: this._number, col: col }); } // remove cell(s) and shift all higher cells down by count }, { key: "splice", value: function splice(start, count) { var nKeep = start + count; for (var _len = arguments.length, inserts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { inserts[_key - 2] = arguments[_key]; } var nExpand = inserts.length - count; var nEnd = this._cells.length; var i; var cSrc; var cDst; if (nExpand < 0) { // remove cells for (i = start + inserts.length; i <= nEnd; i++) { cDst = this._cells[i - 1]; cSrc = this._cells[i - nExpand - 1]; if (cSrc) { cDst = this.getCell(i); cDst.value = cSrc.value; cDst.style = cSrc.style; // eslint-disable-next-line no-underscore-dangle cDst._comment = cSrc._comment; } else if (cDst) { cDst.value = null; cDst.style = {}; // eslint-disable-next-line no-underscore-dangle cDst._comment = undefined; } } } else if (nExpand > 0) { // insert new cells for (i = nEnd; i >= nKeep; i--) { cSrc = this._cells[i - 1]; if (cSrc) { cDst = this.getCell(i + nExpand); cDst.value = cSrc.value; cDst.style = cSrc.style; // eslint-disable-next-line no-underscore-dangle cDst._comment = cSrc._comment; } else { this._cells[i + nExpand - 1] = undefined; } } } // now add the new values for (i = 0; i < inserts.length; i++) { cDst = this.getCell(start + i); cDst.value = inserts[i]; cDst.style = {}; // eslint-disable-next-line no-underscore-dangle cDst._comment = undefined; } } // Iterate over all non-null cells in this row }, { key: "eachCell", value: function eachCell(options, iteratee) { if (!iteratee) { iteratee = options; options = null; } if (options && options.includeEmpty) { var n = this._cells.length; for (var i = 1; i <= n; i++) { iteratee(this.getCell(i), i); } } else { this._cells.forEach(function (cell, index) { if (cell && cell.type !== Enums.ValueType.Null) { iteratee(cell, index + 1); } }); } } // =========================================================================== // Page Breaks }, { key: "addPageBreak", value: function addPageBreak(lft, rght) { var ws = this._worksheet; var left = Math.max(0, lft - 1) || 0; var right = Math.max(0, rght - 1) || 16838; var pb = { id: this._number, max: right, man: 1 }; if (left) pb.min = left; ws.rowBreaks.push(pb); } // return a sparse array of cell values }, { key: "_applyStyle", // ========================================================================= // styles value: function _applyStyle(name, value) { this.style[name] = value; this._cells.forEach(function (cell) { if (cell) { cell[name] = value; } }); return value; } }, { key: "number", get: function get() { return this._number; } }, { key: "worksheet", get: function get() { return this._worksheet; } }, { key: "values", get: function get() { var values = []; this._cells.forEach(function (cell) { if (cell && cell.type !== Enums.ValueType.Null) { values[cell.col] = cell.value; } }); return values; } // set the values by contiguous or sparse array, or by key'd object literal , set: function set(value) { var _this = this; // this operation is not additive - any prior cells are removed this._cells = []; if (!value) {// empty row } else if (value instanceof Array) { var offset = 0; if (value.hasOwnProperty('0')) { // contiguous array - start at column 1 offset = 1; } value.forEach(function (item, index) { if (item !== undefined) { _this.getCellEx({ address: colCache.encodeAddress(_this._number, index + offset), row: _this._number, col: index + offset }).value = item; } }); } else { // assume object with column keys this._worksheet.eachColumnKey(function (column, key) { if (value[key] !== undefined) { _this.getCellEx({ address: colCache.encodeAddress(_this._number, column.number), row: _this._number, col: column.number }).value = value[key]; } }); } } // returns true if the row includes at least one cell with a value }, { key: "hasValues", get: function get() { return _.some(this._cells, function (cell) { return cell && cell.type !== Enums.ValueType.Null; }); } }, { key: "cellCount", get: function get() { return this._cells.length; } }, { key: "actualCellCount", get: function get() { var count = 0; this.eachCell(function () { count++; }); return count; } // get the min and max column number for the non-null cells in this row or null }, { key: "dimensions", get: function get() { var min = 0; var max = 0; this._cells.forEach(function (cell) { if (cell && cell.type !== Enums.ValueType.Null) { if (!min || min > cell.col) { min = cell.col; } if (max < cell.col) { max = cell.col; } } }); return min > 0 ? { min: min, max: max } : null; } }, { key: "numFmt", get: function get() { return this.style.numFmt; }, set: function set(value) { this._applyStyle('numFmt', value); } }, { key: "font", get: function get() { return this.style.font; }, set: function set(value) { this._applyStyle('font', value); } }, { key: "alignment", get: function get() { return this.style.alignment; }, set: function set(value) { this._applyStyle('alignment', value); } }, { key: "protection", get: function get() { return this.style.protection; }, set: function set(value) { this._applyStyle('protection', value); } }, { key: "border", get: function get() { return this.style.border; }, set: function set(value) { this._applyStyle('border', value); } }, { key: "fill", get: function get() { return this.style.fill; }, set: function set(value) { this._applyStyle('fill', value); } }, { key: "hidden", get: function get() { return !!this._hidden; }, set: function set(value) { this._hidden = value; } }, { key: "outlineLevel", get: function get() { return this._outlineLevel || 0; }, set: function set(value) { this._outlineLevel = value; } }, { key: "collapsed", get: function get() { return !!(this._outlineLevel && this._outlineLevel >= this._worksheet.properties.outlineLevelRow); } // ========================================================================= }, { key: "model", get: function get() { var cells = []; var min = 0; var max = 0; this._cells.forEach(function (cell) { if (cell) { var cellModel = cell.model; if (cellModel) { if (!min || min > cell.col) { min = cell.col; } if (max < cell.col) { max = cell.col; } cells.push(cellModel); } } }); return this.height || cells.length ? { cells: cells, number: this.number, min: min, max: max, height: this.height, style: this.style, hidden: this.hidden, outlineLevel: this.outlineLevel, collapsed: this.collapsed } : null; }, set: function set(value) { var _this2 = this; if (value.number !== this._number) { throw new Error('Invalid row number in model'); } this._cells = []; var previousAddress; value.cells.forEach(function (cellModel) { switch (cellModel.type) { case Cell.Types.Merge: // special case - don't add this types break; default: { var address; if (cellModel.address) { address = colCache.decodeAddress(cellModel.address); } else if (previousAddress) { // This is a element without an r attribute // Assume that it's the cell for the next column var _previousAddress = previousAddress, row = _previousAddress.row; var col = previousAddress.col + 1; address = { row: row, col: col, address: colCache.encodeAddress(row, col), $col$row: "$".concat(colCache.n2l(col), "$").concat(row) }; } previousAddress = address; var cell = _this2.getCellEx(address); cell.model = cellModel; break; } } }); if (value.height) { this.height = value.height; } else { delete this.height; } this.hidden = value.hidden; this.outlineLevel = value.outlineLevel || 0; this.style = value.style && JSON.parse(JSON.stringify(value.style)) || {}; } }]); return Row; }(); module.exports = Row; },{"../utils/col-cache":19,"../utils/under-dash":25,"./cell":3,"./enums":7}],12:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /* eslint-disable max-classes-per-file */ var colCache = require('../utils/col-cache'); var Column = /*#__PURE__*/function () { // wrapper around column model, allowing access and manipulation function Column(table, column, index) { _classCallCheck(this, Column); this.table = table; this.column = column; this.index = index; } _createClass(Column, [{ key: "_set", value: function _set(name, value) { this.table.cacheState(); this.column[name] = value; } /* eslint-disable lines-between-class-members */ }, { key: "name", get: function get() { return this.column.name; }, set: function set(value) { this._set('name', value); } }, { key: "filterButton", get: function get() { return this.column.filterButton; }, set: function set(value) { this.column.filterButton = value; } }, { key: "style", get: function get() { return this.column.style; }, set: function set(value) { this.column.style = value; } }, { key: "totalsRowLabel", get: function get() { return this.column.totalsRowLabel; }, set: function set(value) { this._set('totalsRowLabel', value); } }, { key: "totalsRowFunction", get: function get() { return this.column.totalsRowFunction; }, set: function set(value) { this._set('totalsRowFunction', value); } }, { key: "totalsRowResult", get: function get() { return this.column.totalsRowResult; }, set: function set(value) { this._set('totalsRowResult', value); } }, { key: "totalsRowFormula", get: function get() { return this.column.totalsRowFormula; }, set: function set(value) { this._set('totalsRowFormula', value); } /* eslint-enable lines-between-class-members */ }]); return Column; }(); var Table = /*#__PURE__*/function () { function Table(worksheet, table) { _classCallCheck(this, Table); this.worksheet = worksheet; if (table) { this.table = table; // check things are ok first this.validate(); this.store(); } } _createClass(Table, [{ key: "getFormula", value: function getFormula(column) { // get the correct formula to apply to the totals row switch (column.totalsRowFunction) { case 'none': return null; case 'average': return "SUBTOTAL(101,".concat(this.table.name, "[").concat(column.name, "])"); case 'countNums': return "SUBTOTAL(102,".concat(this.table.name, "[").concat(column.name, "])"); case 'count': return "SUBTOTAL(103,".concat(this.table.name, "[").concat(column.name, "])"); case 'max': return "SUBTOTAL(104,".concat(this.table.name, "[").concat(column.name, "])"); case 'min': return "SUBTOTAL(105,".concat(this.table.name, "[").concat(column.name, "])"); case 'stdDev': return "SUBTOTAL(106,".concat(this.table.name, "[").concat(column.name, "])"); case 'var': return "SUBTOTAL(107,".concat(this.table.name, "[").concat(column.name, "])"); case 'sum': return "SUBTOTAL(109,".concat(this.table.name, "[").concat(column.name, "])"); case 'custom': return column.totalsRowFormula; default: throw new Error("Invalid Totals Row Function: ".concat(column.totalsRowFunction)); } } }, { key: "validate", value: function validate() { var _this = this; var table = this.table; // set defaults and check is valid var assign = function assign(o, name, dflt) { if (o[name] === undefined) { o[name] = dflt; } }; assign(table, 'headerRow', true); assign(table, 'totalsRow', false); assign(table, 'style', {}); assign(table.style, 'theme', 'TableStyleMedium2'); assign(table.style, 'showFirstColumn', false); assign(table.style, 'showLastColumn', false); assign(table.style, 'showRowStripes', false); assign(table.style, 'showColumnStripes', false); var assert = function assert(test, message) { if (!test) { throw new Error(message); } }; assert(table.ref, 'Table must have ref'); assert(table.columns, 'Table must have column definitions'); assert(table.rows, 'Table must have row definitions'); table.tl = colCache.decodeAddress(table.ref); var _table$tl = table.tl, row = _table$tl.row, col = _table$tl.col; assert(row > 0, 'Table must be on valid row'); assert(col > 0, 'Table must be on valid col'); var width = this.width, filterHeight = this.filterHeight, tableHeight = this.tableHeight; // autoFilterRef is a range that includes optional headers only table.autoFilterRef = colCache.encode(row, col, row + filterHeight - 1, col + width - 1); // tableRef is a range that includes optional headers and totals table.tableRef = colCache.encode(row, col, row + tableHeight - 1, col + width - 1); table.columns.forEach(function (column, i) { assert(column.name, "Column ".concat(i, " must have a name")); if (i === 0) { assign(column, 'totalsRowLabel', 'Total'); } else { assign(column, 'totalsRowFunction', 'none'); column.totalsRowFormula = _this.getFormula(column); } }); } }, { key: "store", value: function store() { var _this2 = this; // where the table needs to store table data, headers, footers in // the sheet... var assignStyle = function assignStyle(cell, style) { if (style) { Object.keys(style).forEach(function (key) { cell[key] = style[key]; }); } }; var worksheet = this.worksheet, table = this.table; var _table$tl2 = table.tl, row = _table$tl2.row, col = _table$tl2.col; var count = 0; if (table.headerRow) { var r = worksheet.getRow(row + count++); table.columns.forEach(function (column, j) { var style = column.style, name = column.name; var cell = r.getCell(col + j); cell.value = name; assignStyle(cell, style); }); } table.rows.forEach(function (data) { var r = worksheet.getRow(row + count++); data.forEach(function (value, j) { var cell = r.getCell(col + j); cell.value = value; assignStyle(cell, table.columns[j].style); }); }); if (table.totalsRow) { var _r = worksheet.getRow(row + count++); table.columns.forEach(function (column, j) { var cell = _r.getCell(col + j); if (j === 0) { cell.value = column.totalsRowLabel; } else { var formula = _this2.getFormula(column); if (formula) { cell.value = { formula: column.totalsRowFormula, result: column.totalsRowResult }; } else { cell.value = null; } } assignStyle(cell, column.style); }); } } }, { key: "load", value: function load(worksheet) { var _this3 = this; // where the table will read necessary features from a loaded sheet var table = this.table; var _table$tl3 = table.tl, row = _table$tl3.row, col = _table$tl3.col; var count = 0; if (table.headerRow) { var r = worksheet.getRow(row + count++); table.columns.forEach(function (column, j) { var cell = r.getCell(col + j); cell.value = column.name; }); } table.rows.forEach(function (data) { var r = worksheet.getRow(row + count++); data.forEach(function (value, j) { var cell = r.getCell(col + j); cell.value = value; }); }); if (table.totalsRow) { var _r2 = worksheet.getRow(row + count++); table.columns.forEach(function (column, j) { var cell = _r2.getCell(col + j); if (j === 0) { cell.value = column.totalsRowLabel; } else { var formula = _this3.getFormula(column); if (formula) { cell.value = { formula: column.totalsRowFormula, result: column.totalsRowResult }; } } }); } } }, { key: "cacheState", // ================================================================ // TODO: Mutating methods value: function cacheState() { if (!this._cache) { this._cache = { ref: this.ref, width: this.width, tableHeight: this.tableHeight }; } } }, { key: "commit", value: function commit() { // changes may have been made that might have on-sheet effects if (!this._cache) { return; } // check things are ok first this.validate(); var ref = colCache.decodeAddress(this._cache.ref); if (this.ref !== this._cache.ref) { // wipe out whole table footprint at previous location for (var i = 0; i < this._cache.tableHeight; i++) { var row = this.worksheet.getRow(ref.row + i); for (var j = 0; j < this._cache.width; j++) { var cell = row.getCell(ref.col + j); cell.value = null; } } } else { // clear out below table if it has shrunk for (var _i = this.tableHeight; _i < this._cache.tableHeight; _i++) { var _row = this.worksheet.getRow(ref.row + _i); for (var _j = 0; _j < this._cache.width; _j++) { var _cell = _row.getCell(ref.col + _j); _cell.value = null; } } // clear out to right of table if it has lost columns for (var _i2 = 0; _i2 < this.tableHeight; _i2++) { var _row2 = this.worksheet.getRow(ref.row + _i2); for (var _j2 = this.width; _j2 < this._cache.width; _j2++) { var _cell2 = _row2.getCell(ref.col + _j2); _cell2.value = null; } } } this.store(); } }, { key: "addRow", value: function addRow(values, rowNumber) { // Add a row of data, either insert at rowNumber or append this.cacheState(); if (rowNumber === undefined) { this.table.rows.push(values); } else { this.table.rows.splice(rowNumber, 0, values); } } }, { key: "removeRows", value: function removeRows(rowIndex) { var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; // Remove a rows of data this.cacheState(); this.table.rows.splice(rowIndex, count); } }, { key: "getColumn", value: function getColumn(colIndex) { var column = this.table.columns[colIndex]; return new Column(this, column, colIndex); } }, { key: "addColumn", value: function addColumn(column, values, colIndex) { // Add a new column, including column defn and values // Inserts at colNumber or adds to the right this.cacheState(); if (colIndex === undefined) { this.table.columns.push(column); this.table.rows.forEach(function (row, i) { row.push(values[i]); }); } else { this.table.columns.splice(colIndex, 0, column); this.table.rows.forEach(function (row, i) { row.splice(colIndex, 0, values[i]); }); } } }, { key: "removeColumns", value: function removeColumns(colIndex) { var count = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; // Remove a column with data this.cacheState(); this.table.columns.splice(colIndex, count); this.table.rows.forEach(function (row) { row.splice(colIndex, count); }); } }, { key: "_assign", value: function _assign(target, prop, value) { this.cacheState(); target[prop] = value; } /* eslint-disable lines-between-class-members */ }, { key: "width", get: function get() { // width of the table return this.table.columns.length; } }, { key: "height", get: function get() { // height of the table data return this.table.rows.length; } }, { key: "filterHeight", get: function get() { // height of the table data plus optional header row return this.height + (this.table.headerRow ? 1 : 0); } }, { key: "tableHeight", get: function get() { // full height of the table on the sheet return this.filterHeight + (this.table.totalsRow ? 1 : 0); } }, { key: "model", get: function get() { return this.table; }, set: function set(value) { this.table = value; } }, { key: "ref", get: function get() { return this.table.ref; }, set: function set(value) { this._assign(this.table, 'ref', value); } }, { key: "name", get: function get() { return this.table.name; }, set: function set(value) { this.table.name = value; } }, { key: "displayName", get: function get() { return this.table.displyName || this.table.name; } }, { key: "displayNamename", set: function set(value) { this.table.displayName = value; } }, { key: "headerRow", get: function get() { return this.table.headerRow; }, set: function set(value) { this._assign(this.table, 'headerRow', value); } }, { key: "totalsRow", get: function get() { return this.table.totalsRow; }, set: function set(value) { this._assign(this.table, 'totalsRow', value); } }, { key: "theme", get: function get() { return this.table.style.name; }, set: function set(value) { this.table.style.name = value; } }, { key: "showFirstColumn", get: function get() { return this.table.style.showFirstColumn; }, set: function set(value) { this.table.style.showFirstColumn = value; } }, { key: "showLastColumn", get: function get() { return this.table.style.showLastColumn; }, set: function set(value) { this.table.style.showLastColumn = value; } }, { key: "showRowStripes", get: function get() { return this.table.style.showRowStripes; }, set: function set(value) { this.table.style.showRowStripes = value; } }, { key: "showColumnStripes", get: function get() { return this.table.style.showColumnStripes; }, set: function set(value) { this.table.style.showColumnStripes = value; } /* eslint-enable lines-between-class-members */ }]); return Table; }(); module.exports = Table; },{"../utils/col-cache":19}],13:[function(require,module,exports){ 'use strict'; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var Worksheet = require('./worksheet'); var DefinedNames = require('./defined-names'); var XLSX = require('../xlsx/xlsx'); var CSV = require('../csv/csv'); // Workbook requirements // Load and Save from file and stream // Access/Add/Delete individual worksheets // Manage String table, Hyperlink table, etc. // Manage scaffolding for contained objects to write to/read from var Workbook = /*#__PURE__*/function () { function Workbook() { _classCallCheck(this, Workbook); this.category = ''; this.company = ''; this.created = new Date(); this.description = ''; this.keywords = ''; this.manager = ''; this.modified = this.created; this.properties = {}; this.calcProperties = {}; this._worksheets = []; this.subject = ''; this.title = ''; this.views = []; this.media = []; this._definedNames = new DefinedNames(); } _createClass(Workbook, [{ key: "addWorksheet", value: function addWorksheet(name, options) { var id = this.nextId; if (name && name.length > 31) { // eslint-disable-next-line no-console console.warn("Worksheet name ".concat(name, " exceeds 31 chars. This will be truncated")); } // Illegal character in worksheet name: asterisk (*), question mark (?), // colon (:), forward slash (/ \), or bracket ([]) if (/[*?:/\\[\]]/.test(name)) { throw new Error("Worksheet name ".concat(name, " cannot include any of the following characters: * ? : \\ / [ ]")); } if (/(^')|('$)/.test(name)) { throw new Error("The first or last character of worksheet name cannot be a single quotation mark: ".concat(name)); } name = (name || "sheet".concat(id)).substring(0, 31); if (this._worksheets.find(function (ws) { return ws && ws.name.toLowerCase() === name.toLowerCase(); })) { throw new Error("Worksheet name already exists: ".concat(name)); } // if options is a color, call it tabColor (and signal deprecated message) if (options) { if (typeof options === 'string') { // eslint-disable-next-line no-console console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'); options = { properties: { tabColor: { argb: options } } }; } else if (options.argb || options.theme || options.indexed) { // eslint-disable-next-line no-console console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }'); options = { properties: { tabColor: options } }; } } var lastOrderNo = this._worksheets.reduce(function (acc, ws) { return (ws && ws.orderNo) > acc ? ws.orderNo : acc; }, 0); var worksheetOptions = Object.assign({}, options, { id: id, name: name, orderNo: lastOrderNo + 1, workbook: this }); var worksheet = new Worksheet(worksheetOptions); this._worksheets[id] = worksheet; return worksheet; } }, { key: "removeWorksheetEx", value: function removeWorksheetEx(worksheet) { delete this._worksheets[worksheet.id]; } }, { key: "removeWorksheet", value: function removeWorksheet(id) { var worksheet = this.getWorksheet(id); if (worksheet) { worksheet.destroy(); } } }, { key: "getWorksheet", value: function getWorksheet(id) { if (id === undefined) { return this._worksheets.find(Boolean); } if (typeof id === 'number') { return this._worksheets[id]; } if (typeof id === 'string') { return this._worksheets.find(function (worksheet) { return worksheet && worksheet.name === id; }); } return undefined; } }, { key: "eachSheet", value: function eachSheet(iteratee) { this.worksheets.forEach(function (sheet) { iteratee(sheet, sheet.id); }); } }, { key: "clearThemes", value: function clearThemes() { // Note: themes are not an exposed feature, meddle at your peril! this._themes = undefined; } }, { key: "addImage", value: function addImage(image) { // TODO: validation? var id = this.media.length; this.media.push(Object.assign({}, image, { type: 'image' })); return id; } }, { key: "getImage", value: function getImage(id) { return this.media[id]; } }, { key: "xlsx", get: function get() { if (!this._xlsx) this._xlsx = new XLSX(this); return this._xlsx; } }, { key: "csv", get: function get() { if (!this._csv) this._csv = new CSV(this); return this._csv; } }, { key: "nextId", get: function get() { // find the next unique spot to add worksheet for (var i = 1; i < this._worksheets.length; i++) { if (!this._worksheets[i]) { return i; } } return this._worksheets.length || 1; } }, { key: "worksheets", get: function get() { // return a clone of _worksheets return this._worksheets.slice(1).sort(function (a, b) { return a.orderNo - b.orderNo; }).filter(Boolean); } }, { key: "definedNames", get: function get() { return this._definedNames; } }, { key: "model", get: function get() { return { creator: this.creator || 'Unknown', lastModifiedBy: this.lastModifiedBy || 'Unknown', lastPrinted: this.lastPrinted, created: this.created, modified: this.modified, properties: this.properties, worksheets: this.worksheets.map(function (worksheet) { return worksheet.model; }), sheets: this.worksheets.map(function (ws) { return ws.model; }).filter(Boolean), definedNames: this._definedNames.model, views: this.views, company: this.company, manager: this.manager, title: this.title, subject: this.subject, keywords: this.keywords, category: this.category, description: this.description, language: this.language, revision: this.revision, contentStatus: this.contentStatus, themes: this._themes, media: this.media, calcProperties: this.calcProperties }; }, set: function set(value) { var _this = this; this.creator = value.creator; this.lastModifiedBy = value.lastModifiedBy; this.lastPrinted = value.lastPrinted; this.created = value.created; this.modified = value.modified; this.company = value.company; this.manager = value.manager; this.title = value.title; this.subject = value.subject; this.keywords = value.keywords; this.category = value.category; this.description = value.description; this.language = value.language; this.revision = value.revision; this.contentStatus = value.contentStatus; this.properties = value.properties; this.calcProperties = value.calcProperties; this._worksheets = []; value.worksheets.forEach(function (worksheetModel) { var id = worksheetModel.id, name = worksheetModel.name, state = worksheetModel.state; var orderNo = value.sheets && value.sheets.findIndex(function (ws) { return ws.id === id; }); var worksheet = _this._worksheets[id] = new Worksheet({ id: id, name: name, orderNo: orderNo, state: state, workbook: _this }); worksheet.model = worksheetModel; }); this._definedNames.model = value.definedNames; this.views = value.views; this._themes = value.themes; this.media = value.media || []; } }]); return Workbook; }(); module.exports = Workbook; },{"../csv/csv":1,"../xlsx/xlsx":141,"./defined-names":6,"./worksheet":14}],14:[function(require,module,exports){ "use strict"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../utils/under-dash'); var colCache = require('../utils/col-cache'); var Range = require('./range'); var Row = require('./row'); var Column = require('./column'); var Enums = require('./enums'); var Image = require('./image'); var Table = require('./table'); var DataValidations = require('./data-validations'); var Encryptor = require('../utils/encryptor'); // Worksheet requirements // Operate as sheet inside workbook or standalone // Load and Save from file and stream // Access/Add/Delete individual cells // Manage column widths and row heights var Worksheet = /*#__PURE__*/function () { function Worksheet(options) { _classCallCheck(this, Worksheet); options = options || {}; // in a workbook, each sheet will have a number this.id = options.id; this.orderNo = options.orderNo; // and a name this.name = options.name || "Sheet".concat(this.id); // add a state this.state = options.state || 'visible'; // rows allows access organised by row. Sparse array of arrays indexed by row-1, col // Note: _rows is zero based. Must subtract 1 to go from cell.row to index this._rows = []; // column definitions this._columns = null; // column keys (addRow convenience): key ==> this._collumns index this._keys = {}; // keep record of all merges this._merges = {}; // record of all row and column pageBreaks this.rowBreaks = []; this._workbook = options.workbook; // for tabColor, default row height, outline levels, etc this.properties = Object.assign({}, { defaultRowHeight: 15, dyDescent: 55, outlineLevelCol: 0, outlineLevelRow: 0 }, options.properties); // for all things printing this.pageSetup = Object.assign({}, { margins: { left: 0.7, right: 0.7, top: 0.75, bottom: 0.75, header: 0.3, footer: 0.3 }, orientation: 'portrait', horizontalDpi: 4294967295, verticalDpi: 4294967295, fitToPage: !!(options.pageSetup && (options.pageSetup.fitToWidth || options.pageSetup.fitToHeight) && !options.pageSetup.scale), pageOrder: 'downThenOver', blackAndWhite: false, draft: false, cellComments: 'None', errors: 'displayed', scale: 100, fitToWidth: 1, fitToHeight: 1, paperSize: undefined, showRowColHeaders: false, showGridLines: false, firstPageNumber: undefined, horizontalCentered: false, verticalCentered: false, rowBreaks: null, colBreaks: null }, options.pageSetup); this.headerFooter = Object.assign({}, { differentFirst: false, differentOddEven: false, oddHeader: null, oddFooter: null, evenHeader: null, evenFooter: null, firstHeader: null, firstFooter: null }, options.headerFooter); this.dataValidations = new DataValidations(); // for freezepanes, split, zoom, gridlines, etc this.views = options.views || []; this.autoFilter = options.autoFilter || null; // for images, etc this._media = []; // worksheet protection this.sheetProtection = null; // for tables this.tables = {}; this.conditionalFormattings = []; } _createClass(Worksheet, [{ key: "destroy", // when you're done with this worksheet, call this to remove from workbook value: function destroy() { this._workbook.removeWorksheetEx(this); } // Get the bounding range of the cells in this worksheet }, { key: "getColumnKey", value: function getColumnKey(key) { return this._keys[key]; } }, { key: "setColumnKey", value: function setColumnKey(key, value) { this._keys[key] = value; } }, { key: "deleteColumnKey", value: function deleteColumnKey(key) { delete this._keys[key]; } }, { key: "eachColumnKey", value: function eachColumnKey(f) { _.each(this._keys, f); } // get a single column by col number. If it doesn't exist, create it and any gaps before it }, { key: "getColumn", value: function getColumn(c) { if (typeof c === 'string') { // if it matches a key'd column, return that var col = this._keys[c]; if (col) return col; // otherwise, assume letter c = colCache.l2n(c); } if (!this._columns) { this._columns = []; } if (c > this._columns.length) { var n = this._columns.length + 1; while (n <= c) { this._columns.push(new Column(this, n++)); } } return this._columns[c - 1]; } }, { key: "spliceColumns", value: function spliceColumns(start, count) { var _this = this; var rows = this._rows; var nRows = rows.length; for (var _len = arguments.length, inserts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { inserts[_key - 2] = arguments[_key]; } if (inserts.length > 0) { var _loop = function _loop(i) { var rowArguments = [start, count]; // eslint-disable-next-line no-loop-func inserts.forEach(function (insert) { rowArguments.push(insert[i] || null); }); var row = _this.getRow(i + 1); // eslint-disable-next-line prefer-spread row.splice.apply(row, rowArguments); }; // must iterate over all rows whether they exist yet or not for (var i = 0; i < nRows; i++) { _loop(i); } } else { // nothing to insert, so just splice all rows this._rows.forEach(function (r) { if (r) { r.splice(start, count); } }); } // splice column definitions var nExpand = inserts.length - count; var nKeep = start + count; var nEnd = this._columns.length; if (nExpand < 0) { for (var _i = start + inserts.length; _i <= nEnd; _i++) { this.getColumn(_i).defn = this.getColumn(_i - nExpand).defn; } } else if (nExpand > 0) { for (var _i2 = nEnd; _i2 >= nKeep; _i2--) { this.getColumn(_i2 + nExpand).defn = this.getColumn(_i2).defn; } } for (var _i3 = start; _i3 < start + inserts.length; _i3++) { this.getColumn(_i3).defn = null; } // account for defined names this.workbook.definedNames.spliceColumns(this.name, start, count, inserts.length); } }, { key: "_commitRow", // ========================================================================= // Rows value: function _commitRow() {// nop - allows streaming reader to fill a document } }, { key: "findRow", // find a row (if exists) by row number value: function findRow(r) { return this._rows[r - 1]; } // find multiple rows (if exists) by row number }, { key: "findRows", value: function findRows(start, length) { return this._rows.slice(start - 1, start - 1 + length); } }, { key: "getRow", // get a row by row number. value: function getRow(r) { var row = this._rows[r - 1]; if (!row) { row = this._rows[r - 1] = new Row(this, r); } return row; } // get multiple rows by row number. }, { key: "getRows", value: function getRows(start, length) { if (length < 1) return undefined; var rows = []; for (var i = start; i < start + length; i++) { rows.push(this.getRow(i)); } return rows; } }, { key: "addRow", value: function addRow(value) { var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n'; var rowNo = this._nextRow; var row = this.getRow(rowNo); row.values = value; this._setStyleOption(rowNo, style[0] === 'i' ? style : 'n'); return row; } }, { key: "addRows", value: function addRows(value) { var _this2 = this; var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n'; var rows = []; value.forEach(function (row) { rows.push(_this2.addRow(row, style)); }); return rows; } }, { key: "insertRow", value: function insertRow(pos, value) { var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n'; this.spliceRows(pos, 0, value); this._setStyleOption(pos, style); return this.getRow(pos); } }, { key: "insertRows", value: function insertRows(pos, values) { var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'n'; this.spliceRows.apply(this, [pos, 0].concat(_toConsumableArray(values))); if (style !== 'n') { // copy over the styles for (var i = 0; i < values.length; i++) { if (style[0] === 'o' && this.findRow(values.length + pos + i) !== undefined) { this._copyStyle(values.length + pos + i, pos + i, style[1] === '+'); } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) { this._copyStyle(pos - 1, pos + i, style[1] === '+'); } } } return this.getRows(pos, values.length); } // set row at position to same style as of either pervious row (option 'i') or next row (option 'o') }, { key: "_setStyleOption", value: function _setStyleOption(pos) { var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'n'; if (style[0] === 'o' && this.findRow(pos + 1) !== undefined) { this._copyStyle(pos + 1, pos, style[1] === '+'); } else if (style[0] === 'i' && this.findRow(pos - 1) !== undefined) { this._copyStyle(pos - 1, pos, style[1] === '+'); } } }, { key: "_copyStyle", value: function _copyStyle(src, dest) { var styleEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var rSrc = this.getRow(src); var rDst = this.getRow(dest); rDst.style = Object.freeze(_objectSpread({}, rSrc.style)); // eslint-disable-next-line no-loop-func rSrc.eachCell({ includeEmpty: styleEmpty }, function (cell, colNumber) { rDst.getCell(colNumber).style = Object.freeze(_objectSpread({}, cell.style)); }); rDst.height = rSrc.height; } }, { key: "duplicateRow", value: function duplicateRow(rowNum, count) { var _this3 = this; var insert = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; // create count duplicates of rowNum // either inserting new or overwriting existing rows var rSrc = this._rows[rowNum - 1]; var inserts = new Array(count).fill(rSrc.values); this.spliceRows.apply(this, [rowNum + 1, insert ? 0 : count].concat(_toConsumableArray(inserts))); // now copy styles... var _loop2 = function _loop2(i) { var rDst = _this3._rows[rowNum + i]; rDst.style = rSrc.style; rDst.height = rSrc.height; // eslint-disable-next-line no-loop-func rSrc.eachCell({ includeEmpty: true }, function (cell, colNumber) { rDst.getCell(colNumber).style = cell.style; }); }; for (var i = 0; i < count; i++) { _loop2(i); } } }, { key: "spliceRows", value: function spliceRows(start, count) { var _this4 = this; // same problem as row.splice, except worse. var nKeep = start + count; for (var _len2 = arguments.length, inserts = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { inserts[_key2 - 2] = arguments[_key2]; } var nInserts = inserts.length; var nExpand = nInserts - count; var nEnd = this._rows.length; var i; var rSrc; if (nExpand < 0) { // remove rows for (i = nKeep; i <= nEnd; i++) { rSrc = this._rows[i - 1]; if (rSrc) { (function () { var rDst = _this4.getRow(i + nExpand); rDst.values = rSrc.values; rDst.style = rSrc.style; rDst.height = rSrc.height; // eslint-disable-next-line no-loop-func rSrc.eachCell({ includeEmpty: true }, function (cell, colNumber) { rDst.getCell(colNumber).style = cell.style; }); _this4._rows[i - 1] = undefined; })(); } else { this._rows[i + nExpand - 1] = undefined; } } } else if (nExpand > 0) { // insert new cells for (i = nEnd; i >= nKeep; i--) { rSrc = this._rows[i - 1]; if (rSrc) { (function () { var rDst = _this4.getRow(i + nExpand); rDst.values = rSrc.values; rDst.style = rSrc.style; rDst.height = rSrc.height; // eslint-disable-next-line no-loop-func rSrc.eachCell({ includeEmpty: true }, function (cell, colNumber) { rDst.getCell(colNumber).style = cell.style; // remerge cells accounting for insert offset if (cell._value.constructor.name === 'MergeValue') { var cellToBeMerged = _this4.getRow(cell._row._number + nInserts).getCell(colNumber); var prevMaster = cell._value._master; var newMaster = _this4.getRow(prevMaster._row._number + nInserts).getCell(prevMaster._column._number); cellToBeMerged.merge(newMaster); } }); })(); } else { this._rows[i + nExpand - 1] = undefined; } } } // now copy over the new values for (i = 0; i < nInserts; i++) { var rDst = this.getRow(start + i); rDst.style = {}; rDst.values = inserts[i]; } // account for defined names this.workbook.definedNames.spliceRows(this.name, start, count, nInserts); } // iterate over every row in the worksheet, including maybe empty rows }, { key: "eachRow", value: function eachRow(options, iteratee) { if (!iteratee) { iteratee = options; options = undefined; } if (options && options.includeEmpty) { var n = this._rows.length; for (var i = 1; i <= n; i++) { iteratee(this.getRow(i), i); } } else { this._rows.forEach(function (row) { if (row && row.hasValues) { iteratee(row, row.number); } }); } } // return all rows as sparse array }, { key: "getSheetValues", value: function getSheetValues() { var rows = []; this._rows.forEach(function (row) { if (row) { rows[row.number] = row.values; } }); return rows; } // ========================================================================= // Cells // returns the cell at [r,c] or address given by r. If not found, return undefined }, { key: "findCell", value: function findCell(r, c) { var address = colCache.getAddress(r, c); var row = this._rows[address.row - 1]; return row ? row.findCell(address.col) : undefined; } // return the cell at [r,c] or address given by r. If not found, create a new one. }, { key: "getCell", value: function getCell(r, c) { var address = colCache.getAddress(r, c); var row = this.getRow(address.row); return row.getCellEx(address); } // ========================================================================= // Merge // convert the range defined by ['tl:br'], [tl,br] or [t,l,b,r] into a single 'merged' cell }, { key: "mergeCells", value: function mergeCells() { for (var _len3 = arguments.length, cells = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { cells[_key3] = arguments[_key3]; } var dimensions = new Range(cells); this._mergeCellsInternal(dimensions); } }, { key: "mergeCellsWithoutStyle", value: function mergeCellsWithoutStyle() { for (var _len4 = arguments.length, cells = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { cells[_key4] = arguments[_key4]; } var dimensions = new Range(cells); this._mergeCellsInternal(dimensions, true); } }, { key: "_mergeCellsInternal", value: function _mergeCellsInternal(dimensions, ignoreStyle) { // check cells aren't already merged _.each(this._merges, function (merge) { if (merge.intersects(dimensions)) { throw new Error('Cannot merge already merged cells'); } }); // apply merge var master = this.getCell(dimensions.top, dimensions.left); for (var i = dimensions.top; i <= dimensions.bottom; i++) { for (var j = dimensions.left; j <= dimensions.right; j++) { // merge all but the master cell if (i > dimensions.top || j > dimensions.left) { this.getCell(i, j).merge(master, ignoreStyle); } } } // index merge this._merges[master.address] = dimensions; } }, { key: "_unMergeMaster", value: function _unMergeMaster(master) { // master is always top left of a rectangle var merge = this._merges[master.address]; if (merge) { for (var i = merge.top; i <= merge.bottom; i++) { for (var j = merge.left; j <= merge.right; j++) { this.getCell(i, j).unmerge(); } } delete this._merges[master.address]; } } }, { key: "unMergeCells", // scan the range defined by ['tl:br'], [tl,br] or [t,l,b,r] and if any cell is part of a merge, // un-merge the group. Note this function can affect multiple merges and merge-blocks are // atomic - either they're all merged or all un-merged. value: function unMergeCells() { for (var _len5 = arguments.length, cells = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { cells[_key5] = arguments[_key5]; } var dimensions = new Range(cells); // find any cells in that range and unmerge them for (var i = dimensions.top; i <= dimensions.bottom; i++) { for (var j = dimensions.left; j <= dimensions.right; j++) { var cell = this.findCell(i, j); if (cell) { if (cell.type === Enums.ValueType.Merge) { // this cell merges to another master this._unMergeMaster(cell.master); } else if (this._merges[cell.address]) { // this cell is a master this._unMergeMaster(cell); } } } } } // =========================================================================== // Shared/Array Formula }, { key: "fillFormula", value: function fillFormula(range, formula, results) { var shareType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'shared'; // Define formula for top-left cell and share to rest var decoded = colCache.decode(range); var top = decoded.top, left = decoded.left, bottom = decoded.bottom, right = decoded.right; var width = right - left + 1; var masterAddress = colCache.encodeAddress(top, left); var isShared = shareType === 'shared'; // work out result accessor var getResult; if (typeof results === 'function') { getResult = results; } else if (Array.isArray(results)) { if (Array.isArray(results[0])) { getResult = function getResult(row, col) { return results[row - top][col - left]; }; } else { // eslint-disable-next-line no-mixed-operators getResult = function getResult(row, col) { return results[(row - top) * width + (col - left)]; }; } } else { getResult = function getResult() { return undefined; }; } var first = true; for (var r = top; r <= bottom; r++) { for (var c = left; c <= right; c++) { if (first) { this.getCell(r, c).value = { shareType: shareType, formula: formula, ref: range, result: getResult(r, c) }; first = false; } else { this.getCell(r, c).value = isShared ? { sharedFormula: masterAddress, result: getResult(r, c) } : getResult(r, c); } } } } // ========================================================================= // Images }, { key: "addImage", value: function addImage(imageId, range) { var model = { type: 'image', imageId: imageId, range: range }; this._media.push(new Image(this, model)); } }, { key: "getImages", value: function getImages() { return this._media.filter(function (m) { return m.type === 'image'; }); } }, { key: "addBackgroundImage", value: function addBackgroundImage(imageId) { var model = { type: 'background', imageId: imageId }; this._media.push(new Image(this, model)); } }, { key: "getBackgroundImageId", value: function getBackgroundImageId() { var image = this._media.find(function (m) { return m.type === 'background'; }); return image && image.imageId; } // ========================================================================= // Worksheet Protection }, { key: "protect", value: function protect(password, options) { var _this5 = this; // TODO: make this function truly async // perhaps marshal to worker thread or something return new Promise(function (resolve) { _this5.sheetProtection = { sheet: true }; if (options && 'spinCount' in options) { // force spinCount to be integer >= 0 options.spinCount = Number.isFinite(options.spinCount) ? Math.round(Math.max(0, options.spinCount)) : 100000; } if (password) { _this5.sheetProtection.algorithmName = 'SHA-512'; _this5.sheetProtection.saltValue = Encryptor.randomBytes(16).toString('base64'); _this5.sheetProtection.spinCount = options && 'spinCount' in options ? options.spinCount : 100000; // allow user specified spinCount _this5.sheetProtection.hashValue = Encryptor.convertPasswordToHash(password, 'SHA512', _this5.sheetProtection.saltValue, _this5.sheetProtection.spinCount); } if (options) { _this5.sheetProtection = Object.assign(_this5.sheetProtection, options); if (!password && 'spinCount' in options) { delete _this5.sheetProtection.spinCount; } } resolve(); }); } }, { key: "unprotect", value: function unprotect() { this.sheetProtection = null; } // ========================================================================= // Tables }, { key: "addTable", value: function addTable(model) { var table = new Table(this, model); this.tables[model.name] = table; return table; } }, { key: "getTable", value: function getTable(name) { return this.tables[name]; } }, { key: "removeTable", value: function removeTable(name) { delete this.tables[name]; } }, { key: "getTables", value: function getTables() { return Object.values(this.tables); } // =========================================================================== // Conditional Formatting }, { key: "addConditionalFormatting", value: function addConditionalFormatting(cf) { this.conditionalFormattings.push(cf); } }, { key: "removeConditionalFormatting", value: function removeConditionalFormatting(filter) { if (typeof filter === 'number') { this.conditionalFormattings.splice(filter, 1); } else if (filter instanceof Function) { this.conditionalFormattings = this.conditionalFormattings.filter(filter); } else { this.conditionalFormattings = []; } } // =========================================================================== // Deprecated }, { key: "_parseRows", value: function _parseRows(model) { var _this6 = this; this._rows = []; model.rows.forEach(function (rowModel) { var row = new Row(_this6, rowModel.number); _this6._rows[row.number - 1] = row; row.model = rowModel; }); } }, { key: "_parseMergeCells", value: function _parseMergeCells(model) { var _this7 = this; _.each(model.mergeCells, function (merge) { // Do not merge styles when importing an Excel file // since each cell may have different styles intentionally. _this7.mergeCellsWithoutStyle(merge); }); } }, { key: "workbook", get: function get() { return this._workbook; } }, { key: "dimensions", get: function get() { var dimensions = new Range(); this._rows.forEach(function (row) { if (row) { var rowDims = row.dimensions; if (rowDims) { dimensions.expand(row.number, rowDims.min, row.number, rowDims.max); } } }); return dimensions; } // ========================================================================= // Columns // get the current columns array. }, { key: "columns", get: function get() { return this._columns; } // set the columns from an array of column definitions. // Note: any headers defined will overwrite existing values. , set: function set(value) { var _this8 = this; // calculate max header row count this._headerRowCount = value.reduce(function (pv, cv) { var headerCount = cv.header && 1 || cv.headers && cv.headers.length || 0; return Math.max(pv, headerCount); }, 0); // construct Column objects var count = 1; var columns = this._columns = []; value.forEach(function (defn) { var column = new Column(_this8, count++, false); columns.push(column); column.defn = defn; }); } }, { key: "lastColumn", get: function get() { return this.getColumn(this.columnCount); } }, { key: "columnCount", get: function get() { var maxCount = 0; this.eachRow(function (row) { maxCount = Math.max(maxCount, row.cellCount); }); return maxCount; } }, { key: "actualColumnCount", get: function get() { // performance nightmare - for each row, counts all the columns used var counts = []; var count = 0; this.eachRow(function (row) { row.eachCell(function (_ref) { var col = _ref.col; if (!counts[col]) { counts[col] = true; count++; } }); }); return count; } }, { key: "_lastRowNumber", get: function get() { // need to cope with results of splice var rows = this._rows; var n = rows.length; while (n > 0 && rows[n - 1] === undefined) { n--; } return n; } }, { key: "_nextRow", get: function get() { return this._lastRowNumber + 1; } }, { key: "lastRow", get: function get() { if (this._rows.length) { return this._rows[this._rows.length - 1]; } return undefined; } }, { key: "rowCount", get: function get() { return this._lastRowNumber; } }, { key: "actualRowCount", get: function get() { // counts actual rows that have actual data var count = 0; this.eachRow(function () { count++; }); return count; } }, { key: "hasMerges", get: function get() { // return true if this._merges has a merge object return _.some(this._merges, Boolean); } }, { key: "tabColor", get: function get() { // eslint-disable-next-line no-console console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor'); return this.properties.tabColor; }, set: function set(value) { // eslint-disable-next-line no-console console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor'); this.properties.tabColor = value; } // =========================================================================== // Model }, { key: "model", get: function get() { var model = { id: this.id, name: this.name, dataValidations: this.dataValidations.model, properties: this.properties, state: this.state, pageSetup: this.pageSetup, headerFooter: this.headerFooter, rowBreaks: this.rowBreaks, views: this.views, autoFilter: this.autoFilter, media: this._media.map(function (medium) { return medium.model; }), sheetProtection: this.sheetProtection, tables: Object.values(this.tables).map(function (table) { return table.model; }), conditionalFormattings: this.conditionalFormattings }; // ================================================= // columns model.cols = Column.toModel(this.columns); // ========================================================== // Rows var rows = model.rows = []; var dimensions = model.dimensions = new Range(); this._rows.forEach(function (row) { var rowModel = row && row.model; if (rowModel) { dimensions.expand(rowModel.number, rowModel.min, rowModel.number, rowModel.max); rows.push(rowModel); } }); // ========================================================== // Merges model.merges = []; _.each(this._merges, function (merge) { model.merges.push(merge.range); }); return model; }, set: function set(value) { var _this9 = this; this.name = value.name; this._columns = Column.fromModel(this, value.cols); this._parseRows(value); this._parseMergeCells(value); this.dataValidations = new DataValidations(value.dataValidations); this.properties = value.properties; this.pageSetup = value.pageSetup; this.headerFooter = value.headerFooter; this.views = value.views; this.autoFilter = value.autoFilter; this._media = value.media.map(function (medium) { return new Image(_this9, medium); }); this.sheetProtection = value.sheetProtection; this.tables = value.tables.reduce(function (tables, table) { var t = new Table(); t.model = table; tables[table.name] = t; return tables; }, {}); this.conditionalFormattings = value.conditionalFormattings; } }]); return Worksheet; }(); module.exports = Worksheet; },{"../utils/col-cache":19,"../utils/encryptor":20,"../utils/under-dash":25,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(require,module,exports){ "use strict"; /* eslint-disable import/no-extraneous-dependencies,node/no-unpublished-require */ require('core-js/modules/es.promise'); require('core-js/modules/es.object.assign'); require('core-js/modules/es.object.keys'); require('core-js/modules/es.object.values'); require('core-js/modules/es.symbol'); require('core-js/modules/es.symbol.async-iterator'); // required by core-js/modules/es.promise Promise.all require('core-js/modules/es.array.iterator'); // required by node_modules/saxes/saxes.js SaxesParser.captureTo require('core-js/modules/es.array.includes'); // required by lib/doc/workbook.js Workbook.model require('core-js/modules/es.array.find-index'); // required by lib/doc/workbook.js Workbook.addWorksheet and Workbook.getWorksheet require('core-js/modules/es.array.find'); // required by node_modules/saxes/saxes.js SaxesParser.getCode10 require('core-js/modules/es.string.from-code-point'); // required by lib/xlsx/xform/sheet/data-validations-xform.js DataValidationsXform.parseClose require('core-js/modules/es.string.includes'); // required by lib/utils/utils.js utils.validInt and lib/csv/csv.js CSV.read require('core-js/modules/es.number.is-nan'); require('regenerator-runtime/runtime'); var ExcelJS = { Workbook: require('./doc/workbook') }; // Object.assign mono-fill var Enums = require('./doc/enums'); Object.keys(Enums).forEach(function (key) { ExcelJS[key] = Enums[key]; }); module.exports = ExcelJS; },{"./doc/enums":7,"./doc/workbook":13,"core-js/modules/es.array.find":316,"core-js/modules/es.array.find-index":315,"core-js/modules/es.array.includes":317,"core-js/modules/es.array.iterator":318,"core-js/modules/es.number.is-nan":319,"core-js/modules/es.object.assign":320,"core-js/modules/es.object.keys":321,"core-js/modules/es.object.values":322,"core-js/modules/es.promise":323,"core-js/modules/es.string.from-code-point":324,"core-js/modules/es.string.includes":325,"core-js/modules/es.symbol":327,"core-js/modules/es.symbol.async-iterator":326,"regenerator-runtime/runtime":492}],16:[function(require,module,exports){ "use strict"; // eslint-disable-next-line node/no-unsupported-features/node-builtins var textDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf-8'); function bufferToString(chunk) { if (typeof chunk === 'string') { return chunk; } if (textDecoder) { return textDecoder.decode(chunk); } return chunk.toString(); } exports.bufferToString = bufferToString; },{}],17:[function(require,module,exports){ "use strict"; // eslint-disable-next-line node/no-unsupported-features/node-builtins var textEncoder = typeof TextEncoder === 'undefined' ? null : new TextEncoder('utf-8'); var _require = require('buffer'), Buffer = _require.Buffer; function stringToBuffer(str) { if (typeof str !== 'string') { return str; } if (textEncoder) { return Buffer.from(textEncoder.encode(str).buffer); } return Buffer.from(str); } exports.stringToBuffer = stringToBuffer; },{"buffer":216}],18:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('./under-dash'); var colCache = require('./col-cache'); var CellMatrix = /*#__PURE__*/function () { function CellMatrix(template) { _classCallCheck(this, CellMatrix); this.template = template; this.sheets = {}; } _createClass(CellMatrix, [{ key: "addCell", value: function addCell(addressStr) { this.addCellEx(colCache.decodeEx(addressStr)); } }, { key: "getCell", value: function getCell(addressStr) { return this.findCellEx(colCache.decodeEx(addressStr), true); } }, { key: "findCell", value: function findCell(addressStr) { return this.findCellEx(colCache.decodeEx(addressStr), false); } }, { key: "findCellAt", value: function findCellAt(sheetName, rowNumber, colNumber) { var sheet = this.sheets[sheetName]; var row = sheet && sheet[rowNumber]; return row && row[colNumber]; } }, { key: "addCellEx", value: function addCellEx(address) { if (address.top) { for (var row = address.top; row <= address.bottom; row++) { for (var col = address.left; col <= address.right; col++) { this.getCellAt(address.sheetName, row, col); } } } else { this.findCellEx(address, true); } } }, { key: "getCellEx", value: function getCellEx(address) { return this.findCellEx(address, true); } }, { key: "findCellEx", value: function findCellEx(address, create) { var sheet = this.findSheet(address, create); var row = this.findSheetRow(sheet, address, create); return this.findRowCell(row, address, create); } }, { key: "getCellAt", value: function getCellAt(sheetName, rowNumber, colNumber) { var sheet = this.sheets[sheetName] || (this.sheets[sheetName] = []); var row = sheet[rowNumber] || (sheet[rowNumber] = []); var cell = row[colNumber] || (row[colNumber] = { sheetName: sheetName, address: colCache.n2l(colNumber) + rowNumber, row: rowNumber, col: colNumber }); return cell; } }, { key: "removeCellEx", value: function removeCellEx(address) { var sheet = this.findSheet(address); if (!sheet) { return; } var row = this.findSheetRow(sheet, address); if (!row) { return; } delete row[address.col]; } }, { key: "forEachInSheet", value: function forEachInSheet(sheetName, callback) { var sheet = this.sheets[sheetName]; if (sheet) { sheet.forEach(function (row, rowNumber) { if (row) { row.forEach(function (cell, colNumber) { if (cell) { callback(cell, rowNumber, colNumber); } }); } }); } } }, { key: "forEach", value: function forEach(callback) { var _this = this; _.each(this.sheets, function (sheet, sheetName) { _this.forEachInSheet(sheetName, callback); }); } }, { key: "map", value: function map(callback) { var results = []; this.forEach(function (cell) { results.push(callback(cell)); }); return results; } }, { key: "findSheet", value: function findSheet(address, create) { var name = address.sheetName; if (this.sheets[name]) { return this.sheets[name]; } if (create) { return this.sheets[name] = []; } return undefined; } }, { key: "findSheetRow", value: function findSheetRow(sheet, address, create) { var row = address.row; if (sheet && sheet[row]) { return sheet[row]; } if (create) { return sheet[row] = []; } return undefined; } }, { key: "findRowCell", value: function findRowCell(row, address, create) { var col = address.col; if (row && row[col]) { return row[col]; } if (create) { return row[col] = this.template ? Object.assign(address, JSON.parse(JSON.stringify(this.template))) : address; } return undefined; } }, { key: "spliceRows", value: function spliceRows(sheetName, start, numDelete, numInsert) { var sheet = this.sheets[sheetName]; if (sheet) { var inserts = []; for (var i = 0; i < numInsert; i++) { inserts.push([]); } sheet.splice.apply(sheet, [start, numDelete].concat(inserts)); } } }, { key: "spliceColumns", value: function spliceColumns(sheetName, start, numDelete, numInsert) { var sheet = this.sheets[sheetName]; if (sheet) { var inserts = []; for (var i = 0; i < numInsert; i++) { inserts.push(null); } _.each(sheet, function (row) { row.splice.apply(row, [start, numDelete].concat(inserts)); }); } } }]); return CellMatrix; }(); module.exports = CellMatrix; },{"./col-cache":19,"./under-dash":25}],19:[function(require,module,exports){ "use strict"; function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var addressRegex = /^[A-Z]+\d+$/; // ========================================================================= // Column Letter to Number conversion var colCache = { _dictionary: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], _l2nFill: 0, _l2n: {}, _n2l: [], _level: function _level(n) { if (n <= 26) { return 1; } if (n <= 26 * 26) { return 2; } return 3; }, _fill: function _fill(level) { var c; var v; var l1; var l2; var l3; var n = 1; if (level >= 4) { throw new Error('Out of bounds. Excel supports columns from 1 to 16384'); } if (this._l2nFill < 1 && level >= 1) { while (n <= 26) { c = this._dictionary[n - 1]; this._n2l[n] = c; this._l2n[c] = n; n++; } this._l2nFill = 1; } if (this._l2nFill < 2 && level >= 2) { n = 27; while (n <= 26 + 26 * 26) { v = n - (26 + 1); l1 = v % 26; l2 = Math.floor(v / 26); c = this._dictionary[l2] + this._dictionary[l1]; this._n2l[n] = c; this._l2n[c] = n; n++; } this._l2nFill = 2; } if (this._l2nFill < 3 && level >= 3) { n = 26 + 26 * 26 + 1; while (n <= 16384) { v = n - (26 * 26 + 26 + 1); l1 = v % 26; l2 = Math.floor(v / 26) % 26; l3 = Math.floor(v / (26 * 26)); c = this._dictionary[l3] + this._dictionary[l2] + this._dictionary[l1]; this._n2l[n] = c; this._l2n[c] = n; n++; } this._l2nFill = 3; } }, l2n: function l2n(l) { if (!this._l2n[l]) { this._fill(l.length); } if (!this._l2n[l]) { throw new Error("Out of bounds. Invalid column letter: ".concat(l)); } return this._l2n[l]; }, n2l: function n2l(n) { if (n < 1 || n > 16384) { throw new Error("".concat(n, " is out of bounds. Excel supports columns from 1 to 16384")); } if (!this._n2l[n]) { this._fill(this._level(n)); } return this._n2l[n]; }, // ========================================================================= // Address processing _hash: {}, // check if value looks like an address validateAddress: function validateAddress(value) { if (!addressRegex.test(value)) { throw new Error("Invalid Address: ".concat(value)); } return true; }, // convert address string into structure decodeAddress: function decodeAddress(value) { var addr = value.length < 5 && this._hash[value]; if (addr) { return addr; } var hasCol = false; var col = ''; var colNumber = 0; var hasRow = false; var row = ''; var rowNumber = 0; for (var i = 0, char; i < value.length; i++) { char = value.charCodeAt(i); // col should before row if (!hasRow && char >= 65 && char <= 90) { // 65 = 'A'.charCodeAt(0) // 90 = 'Z'.charCodeAt(0) hasCol = true; col += value[i]; // colNumber starts from 1 colNumber = colNumber * 26 + char - 64; } else if (char >= 48 && char <= 57) { // 48 = '0'.charCodeAt(0) // 57 = '9'.charCodeAt(0) hasRow = true; row += value[i]; // rowNumber starts from 0 rowNumber = rowNumber * 10 + char - 48; } else if (hasRow && hasCol && char !== 36) { // 36 = '$'.charCodeAt(0) break; } } if (!hasCol) { colNumber = undefined; } else if (colNumber > 16384) { throw new Error("Out of bounds. Invalid column letter: ".concat(col)); } if (!hasRow) { rowNumber = undefined; } // in case $row$col value = col + row; var address = { address: value, col: colNumber, row: rowNumber, $col$row: "$".concat(col, "$").concat(row) }; // mem fix - cache only the tl 100x100 square if (colNumber <= 100 && rowNumber <= 100) { this._hash[value] = address; this._hash[address.$col$row] = address; } return address; }, // convert r,c into structure (if only 1 arg, assume r is address string) getAddress: function getAddress(r, c) { if (c) { var address = this.n2l(c) + r; return this.decodeAddress(address); } return this.decodeAddress(r); }, // convert [address], [tl:br] into address structures decode: function decode(value) { var parts = value.split(':'); if (parts.length === 2) { var tl = this.decodeAddress(parts[0]); var br = this.decodeAddress(parts[1]); var result = { top: Math.min(tl.row, br.row), left: Math.min(tl.col, br.col), bottom: Math.max(tl.row, br.row), right: Math.max(tl.col, br.col) }; // reconstruct tl, br and dimensions result.tl = this.n2l(result.left) + result.top; result.br = this.n2l(result.right) + result.bottom; result.dimensions = "".concat(result.tl, ":").concat(result.br); return result; } return this.decodeAddress(value); }, // convert [sheetName!][$]col[$]row[[$]col[$]row] into address or range structures decodeEx: function decodeEx(value) { var groups = value.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/); var sheetName = groups[1] || groups[2]; // Qouted and unqouted groups var reference = groups[3]; // Remaining address var parts = reference.split(':'); if (parts.length > 1) { var tl = this.decodeAddress(parts[0]); var br = this.decodeAddress(parts[1]); var top = Math.min(tl.row, br.row); var left = Math.min(tl.col, br.col); var bottom = Math.max(tl.row, br.row); var right = Math.max(tl.col, br.col); tl = this.n2l(left) + top; br = this.n2l(right) + bottom; return { top: top, left: left, bottom: bottom, right: right, sheetName: sheetName, tl: { address: tl, col: left, row: top, $col$row: "$".concat(this.n2l(left), "$").concat(top), sheetName: sheetName }, br: { address: br, col: right, row: bottom, $col$row: "$".concat(this.n2l(right), "$").concat(bottom), sheetName: sheetName }, dimensions: "".concat(tl, ":").concat(br) }; } if (reference.startsWith('#')) { return sheetName ? { sheetName: sheetName, error: reference } : { error: reference }; } var address = this.decodeAddress(reference); return sheetName ? _objectSpread({ sheetName: sheetName }, address) : address; }, // convert row,col into address string encodeAddress: function encodeAddress(row, col) { return colCache.n2l(col) + row; }, // convert row,col into string address or t,l,b,r into range encode: function encode() { switch (arguments.length) { case 2: return colCache.encodeAddress(arguments[0], arguments[1]); case 4: return "".concat(colCache.encodeAddress(arguments[0], arguments[1]), ":").concat(colCache.encodeAddress(arguments[2], arguments[3])); default: throw new Error('Can only encode with 2 or 4 arguments'); } }, // return true if address is contained within range inRange: function inRange(range, address) { var _range = _slicedToArray(range, 5), left = _range[0], top = _range[1], right = _range[3], bottom = _range[4]; var _address = _slicedToArray(address, 2), col = _address[0], row = _address[1]; return col >= left && col <= right && row >= top && row <= bottom; } }; module.exports = colCache; },{}],20:[function(require,module,exports){ (function (Buffer){ 'use strict'; var crypto = require('crypto'); var Encryptor = { /** * Calculate a hash of the concatenated buffers with the given algorithm. * @param {string} algorithm - The hash algorithm. * @returns {Buffer} The hash */ hash: function hash(algorithm) { var hash = crypto.createHash(algorithm); for (var _len = arguments.length, buffers = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { buffers[_key - 1] = arguments[_key]; } hash.update(Buffer.concat(buffers)); return hash.digest(); }, /** * Convert a password into an encryption key * @param {string} password - The password * @param {string} hashAlgorithm - The hash algoritm * @param {string} saltValue - The salt value * @param {number} spinCount - The spin count * @param {number} keyBits - The length of the key in bits * @param {Buffer} blockKey - The block key * @returns {Buffer} The encryption key */ convertPasswordToHash: function convertPasswordToHash(password, hashAlgorithm, saltValue, spinCount) { hashAlgorithm = hashAlgorithm.toLowerCase(); var hashes = crypto.getHashes(); if (hashes.indexOf(hashAlgorithm) < 0) { throw new Error("Hash algorithm '".concat(hashAlgorithm, "' not supported!")); } // Password must be in unicode buffer var passwordBuffer = Buffer.from(password, 'utf16le'); // Generate the initial hash var key = this.hash(hashAlgorithm, Buffer.from(saltValue, 'base64'), passwordBuffer); // Now regenerate until spin count for (var i = 0; i < spinCount; i++) { var iterator = Buffer.alloc(4); // this is the 'special' element of Excel password hashing // that stops us from using crypto.pbkdf2() iterator.writeUInt32LE(i, 0); key = this.hash(hashAlgorithm, key, iterator); } return key.toString('base64'); }, /** * Generates cryptographically strong pseudo-random data. * @param size The size argument is a number indicating the number of bytes to generate. */ randomBytes: function randomBytes(size) { return crypto.randomBytes(size); } }; module.exports = Encryptor; }).call(this,require("buffer").Buffer) },{"buffer":216,"crypto":335}],21:[function(require,module,exports){ "use strict"; function _awaitAsyncGenerator(value) { return new _AwaitValue(value); } function _wrapAsyncGenerator(fn) { return function () { return new _AsyncGenerator(fn.apply(this, arguments)); }; } function _AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; var wrappedAwait = value instanceof _AwaitValue; Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) { if (wrappedAwait) { resume(key === "return" ? "return" : "next", arg); return; } settle(result.done ? "return" : "normal", arg); }, function (err) { resume("throw", err); }); } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } if (typeof Symbol === "function" && Symbol.asyncIterator) { _AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } _AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; _AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; _AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; function _AwaitValue(value) { this.wrapped = value; } function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); } var _require = require('saxes'), SaxesParser = _require.SaxesParser; var _require2 = require('readable-stream'), PassThrough = _require2.PassThrough; var _require3 = require('./browser-buffer-decode'), bufferToString = _require3.bufferToString; module.exports = /*#__PURE__*/function () { var _ref = _wrapAsyncGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(iterable) { var saxesParser, error, events, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: // TODO: Remove once node v8 is deprecated // Detect and upgrade old streams if (iterable.pipe && !iterable[Symbol.asyncIterator]) { iterable = iterable.pipe(new PassThrough()); } saxesParser = new SaxesParser(); saxesParser.on('error', function (err) { error = err; }); events = []; saxesParser.on('opentag', function (value) { return events.push({ eventType: 'opentag', value: value }); }); saxesParser.on('text', function (value) { return events.push({ eventType: 'text', value: value }); }); saxesParser.on('closetag', function (value) { return events.push({ eventType: 'closetag', value: value }); }); _iteratorNormalCompletion = true; _didIteratorError = false; _context.prev = 9; _iterator = _asyncIterator(iterable); case 11: _context.next = 13; return _awaitAsyncGenerator(_iterator.next()); case 13: _step = _context.sent; _iteratorNormalCompletion = _step.done; _context.next = 17; return _awaitAsyncGenerator(_step.value); case 17: _value = _context.sent; if (_iteratorNormalCompletion) { _context.next = 29; break; } chunk = _value; saxesParser.write(bufferToString(chunk)); // saxesParser.write and saxesParser.on() are synchronous, // so we can only reach the below line once all events have been emitted if (!error) { _context.next = 23; break; } throw error; case 23: _context.next = 25; return events; case 25: events = []; case 26: _iteratorNormalCompletion = true; _context.next = 11; break; case 29: _context.next = 35; break; case 31: _context.prev = 31; _context.t0 = _context["catch"](9); _didIteratorError = true; _iteratorError = _context.t0; case 35: _context.prev = 35; _context.prev = 36; if (!(!_iteratorNormalCompletion && _iterator.return != null)) { _context.next = 40; break; } _context.next = 40; return _awaitAsyncGenerator(_iterator.return()); case 40: _context.prev = 40; if (!_didIteratorError) { _context.next = 43; break; } throw _iteratorError; case 43: return _context.finish(40); case 44: return _context.finish(35); case 45: case "end": return _context.stop(); } } }, _callee, null, [[9, 31, 35, 45], [36,, 40, 44]]); })); return function (_x) { return _ref.apply(this, arguments); }; }(); },{"./browser-buffer-decode":16,"readable-stream":491,"saxes":496}],22:[function(require,module,exports){ "use strict"; var colCache = require('./col-cache'); // const cellRefRegex = /(([a-z_\-0-9]*)!)?[$]?([a-z]+)[$]?([1-9][0-9]*)/i; var replacementCandidateRx = /(([a-z_\-0-9]*)!)?([a-z0-9_$]{2,})([(])?/gi; var CRrx = /^([$])?([a-z]+)([$])?([1-9][0-9]*)$/i; function slideFormula(formula, fromCell, toCell) { var offset = colCache.decode(fromCell); var to = colCache.decode(toCell); return formula.replace(replacementCandidateRx, function (refMatch, sheet, sheetMaybe, addrPart, trailingParen) { if (trailingParen) { return refMatch; } var match = CRrx.exec(addrPart); if (match) { var colDollar = match[1]; var colStr = match[2].toUpperCase(); var rowDollar = match[3]; var rowStr = match[4]; if (colStr.length > 3 || colStr.length === 3 && colStr > 'XFD') { // > XFD is the highest col number in excel 2007 and beyond, so this is a named range return refMatch; } var col = colCache.l2n(colStr); var row = parseInt(rowStr, 10); if (!colDollar) { col += to.col - offset.col; } if (!rowDollar) { row += to.row - offset.row; } var res = (sheet || '') + (colDollar || '') + colCache.n2l(col) + (rowDollar || '') + row; return res; } return refMatch; }); } module.exports = { slideFormula: slideFormula }; },{"./col-cache":19}],23:[function(require,module,exports){ (function (process,Buffer){ "use strict"; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /* eslint-disable max-classes-per-file */ var Stream = require('readable-stream'); var utils = require('./utils'); var StringBuf = require('./string-buf'); // ============================================================================= // data chunks - encapsulating incoming data var StringChunk = /*#__PURE__*/function () { function StringChunk(data, encoding) { _classCallCheck(this, StringChunk); this._data = data; this._encoding = encoding; } _createClass(StringChunk, [{ key: "copy", // copy to target buffer value: function copy(target, targetOffset, offset, length) { return this.toBuffer().copy(target, targetOffset, offset, length); } }, { key: "toBuffer", value: function toBuffer() { if (!this._buffer) { this._buffer = Buffer.from(this._data, this._encoding); } return this._buffer; } }, { key: "length", get: function get() { return this.toBuffer().length; } }]); return StringChunk; }(); var StringBufChunk = /*#__PURE__*/function () { function StringBufChunk(data) { _classCallCheck(this, StringBufChunk); this._data = data; } _createClass(StringBufChunk, [{ key: "copy", // copy to target buffer value: function copy(target, targetOffset, offset, length) { // eslint-disable-next-line no-underscore-dangle return this._data._buf.copy(target, targetOffset, offset, length); } }, { key: "toBuffer", value: function toBuffer() { return this._data.toBuffer(); } }, { key: "length", get: function get() { return this._data.length; } }]); return StringBufChunk; }(); var BufferChunk = /*#__PURE__*/function () { function BufferChunk(data) { _classCallCheck(this, BufferChunk); this._data = data; } _createClass(BufferChunk, [{ key: "copy", // copy to target buffer value: function copy(target, targetOffset, offset, length) { this._data.copy(target, targetOffset, offset, length); } }, { key: "toBuffer", value: function toBuffer() { return this._data; } }, { key: "length", get: function get() { return this._data.length; } }]); return BufferChunk; }(); // ============================================================================= // ReadWriteBuf - a single buffer supporting simple read-write var ReadWriteBuf = /*#__PURE__*/function () { function ReadWriteBuf(size) { _classCallCheck(this, ReadWriteBuf); this.size = size; // the buffer this.buffer = Buffer.alloc(size); // read index this.iRead = 0; // write index this.iWrite = 0; } _createClass(ReadWriteBuf, [{ key: "toBuffer", value: function toBuffer() { if (this.iRead === 0 && this.iWrite === this.size) { return this.buffer; } var buf = Buffer.alloc(this.iWrite - this.iRead); this.buffer.copy(buf, 0, this.iRead, this.iWrite); return buf; } }, { key: "read", value: function read(size) { var buf; // read size bytes from buffer and return buffer if (size === 0) { // special case - return null if no data requested return null; } if (size === undefined || size >= this.length) { // if no size specified or size is at least what we have then return all of the bytes buf = this.toBuffer(); this.iRead = this.iWrite; return buf; } // otherwise return a chunk buf = Buffer.alloc(size); this.buffer.copy(buf, 0, this.iRead, size); this.iRead += size; return buf; } }, { key: "write", value: function write(chunk, offset, length) { // write as many bytes from data from optional source offset // and return number of bytes written var size = Math.min(length, this.size - this.iWrite); chunk.copy(this.buffer, this.iWrite, offset, offset + size); this.iWrite += size; return size; } }, { key: "length", get: function get() { return this.iWrite - this.iRead; } }, { key: "eod", get: function get() { return this.iRead === this.iWrite; } }, { key: "full", get: function get() { return this.iWrite === this.size; } }]); return ReadWriteBuf; }(); // ============================================================================= // StreamBuf - a multi-purpose read-write stream // As MemBuf - write as much data as you like. Then call toBuffer() to consolidate // As StreamHub - pipe to multiple writables // As readable stream - feed data into the writable part and have some other code read from it. // Note: Not sure why but StreamBuf does not like JS "class" sugar. It fails the // integration tests var StreamBuf = function StreamBuf(options) { options = options || {}; this.bufSize = options.bufSize || 1024 * 1024; this.buffers = []; // batch mode fills a buffer completely before passing the data on // to pipes or 'readable' event listeners this.batch = options.batch || false; this.corked = false; // where in the current writable buffer we're up to this.inPos = 0; // where in the current readable buffer we've read up to this.outPos = 0; // consuming pipe streams go here this.pipes = []; // controls emit('data') this.paused = false; this.encoding = null; }; utils.inherits(StreamBuf, Stream.Duplex, { toBuffer: function toBuffer() { switch (this.buffers.length) { case 0: return null; case 1: return this.buffers[0].toBuffer(); default: return Buffer.concat(this.buffers.map(function (rwBuf) { return rwBuf.toBuffer(); })); } }, // writable // event drain - if write returns false (which it won't), indicates when safe to write again. // finish - end() has been called // pipe(src) - pipe() has been called on readable // unpipe(src) - unpipe() has been called on readable // error - duh _getWritableBuffer: function _getWritableBuffer() { if (this.buffers.length) { var last = this.buffers[this.buffers.length - 1]; if (!last.full) { return last; } } var buf = new ReadWriteBuf(this.bufSize); this.buffers.push(buf); return buf; }, _pipe: function _pipe(chunk) { var _this = this; return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var write; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: write = function write(pipe) { return new Promise(function (resolve) { pipe.write(chunk.toBuffer(), function () { resolve(); }); }); }; _context.next = 3; return Promise.all(_this.pipes.map(write)); case 3: case "end": return _context.stop(); } } }, _callee); }))(); }, _writeToBuffers: function _writeToBuffers(chunk) { var inPos = 0; var inLen = chunk.length; while (inPos < inLen) { // find writable buffer var buffer = this._getWritableBuffer(); // write some data inPos += buffer.write(chunk, inPos, inLen - inPos); } }, write: function write(data, encoding, callback) { var _this2 = this; return _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() { var chunk; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (encoding instanceof Function) { callback = encoding; encoding = 'utf8'; } callback = callback || utils.nop; // encapsulate data into a chunk if (!(data instanceof StringBuf)) { _context2.next = 6; break; } chunk = new StringBufChunk(data); _context2.next = 15; break; case 6: if (!(data instanceof Buffer)) { _context2.next = 10; break; } chunk = new BufferChunk(data); _context2.next = 15; break; case 10: if (!(typeof data === 'string' || data instanceof String || data instanceof ArrayBuffer)) { _context2.next = 14; break; } chunk = new StringChunk(data, encoding); _context2.next = 15; break; case 14: throw new Error('Chunk must be one of type String, Buffer or StringBuf.'); case 15: if (!_this2.pipes.length) { _context2.next = 31; break; } if (!_this2.batch) { _context2.next = 21; break; } _this2._writeToBuffers(chunk); while (!_this2.corked && _this2.buffers.length > 1) { _this2._pipe(_this2.buffers.shift()); } _context2.next = 29; break; case 21: if (_this2.corked) { _context2.next = 27; break; } _context2.next = 24; return _this2._pipe(chunk); case 24: callback(); _context2.next = 29; break; case 27: _this2._writeToBuffers(chunk); process.nextTick(callback); case 29: _context2.next = 34; break; case 31: if (!_this2.paused) { _this2.emit('data', chunk.toBuffer()); } _this2._writeToBuffers(chunk); _this2.emit('readable'); case 34: return _context2.abrupt("return", true); case 35: case "end": return _context2.stop(); } } }, _callee2); }))(); }, cork: function cork() { this.corked = true; }, _flush: function _flush() /* destination */ { // if we have comsumers... if (this.pipes.length) { // and there's stuff not written while (this.buffers.length) { this._pipe(this.buffers.shift()); } } }, uncork: function uncork() { this.corked = false; this._flush(); }, end: function end(chunk, encoding, callback) { var _this3 = this; var writeComplete = function writeComplete(error) { if (error) { callback(error); } else { _this3._flush(); _this3.pipes.forEach(function (pipe) { pipe.end(); }); _this3.emit('finish'); } }; if (chunk) { this.write(chunk, encoding, writeComplete); } else { writeComplete(); } }, // readable // event readable - some data is now available // event data - switch to flowing mode - feeds chunks to handler // event end - no more data // event close - optional, indicates upstream close // event error - duh read: function read(size) { var buffers; // read min(buffer, size || infinity) if (size) { buffers = []; while (size && this.buffers.length && !this.buffers[0].eod) { var first = this.buffers[0]; var buffer = first.read(size); size -= buffer.length; buffers.push(buffer); if (first.eod && first.full) { this.buffers.shift(); } } return Buffer.concat(buffers); } buffers = this.buffers.map(function (buf) { return buf.toBuffer(); }).filter(Boolean); this.buffers = []; return Buffer.concat(buffers); }, setEncoding: function setEncoding(encoding) { // causes stream.read or stream.on('data) to return strings of encoding instead of Buffer objects this.encoding = encoding; }, pause: function pause() { this.paused = true; }, resume: function resume() { this.paused = false; }, isPaused: function isPaused() { return !!this.paused; }, pipe: function pipe(destination) { // add destination to pipe list & write current buffer this.pipes.push(destination); if (!this.paused && this.buffers.length) { this.end(); } }, unpipe: function unpipe(destination) { // remove destination from pipe list this.pipes = this.pipes.filter(function (pipe) { return pipe !== destination; }); }, unshift: function unshift() /* chunk */ { // some numpty has read some data that's not for them and they want to put it back! // Might implement this some day throw new Error('Not Implemented'); }, wrap: function wrap() /* stream */ { // not implemented throw new Error('Not Implemented'); } }); module.exports = StreamBuf; }).call(this,require('_process'),require("buffer").Buffer) },{"./string-buf":24,"./utils":26,"_process":467,"buffer":216,"readable-stream":491}],24:[function(require,module,exports){ (function (Buffer){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } // StringBuf - a way to keep string memory operations to a minimum // while building the strings for the xml files var StringBuf = /*#__PURE__*/function () { function StringBuf(options) { _classCallCheck(this, StringBuf); this._buf = Buffer.alloc(options && options.size || 16384); this._encoding = options && options.encoding || 'utf8'; // where in the buffer we are at this._inPos = 0; // for use by toBuffer() this._buffer = undefined; } _createClass(StringBuf, [{ key: "toBuffer", value: function toBuffer() { // return the current data as a single enclosing buffer if (!this._buffer) { this._buffer = Buffer.alloc(this.length); this._buf.copy(this._buffer, 0, 0, this.length); } return this._buffer; } }, { key: "reset", value: function reset(position) { position = position || 0; this._buffer = undefined; this._inPos = position; } }, { key: "_grow", value: function _grow(min) { var size = this._buf.length * 2; while (size < min) { size *= 2; } var buf = Buffer.alloc(size); this._buf.copy(buf, 0); this._buf = buf; } }, { key: "addText", value: function addText(text) { this._buffer = undefined; var inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding); // if we've hit (or nearing capacity), grow the buf while (inPos >= this._buf.length - 4) { this._grow(this._inPos + text.length); // keep trying to write until we've completely written the text inPos = this._inPos + this._buf.write(text, this._inPos, this._encoding); } this._inPos = inPos; } }, { key: "addStringBuf", value: function addStringBuf(inBuf) { if (inBuf.length) { this._buffer = undefined; if (this.length + inBuf.length > this.capacity) { this._grow(this.length + inBuf.length); } // eslint-disable-next-line no-underscore-dangle inBuf._buf.copy(this._buf, this._inPos, 0, inBuf.length); this._inPos += inBuf.length; } } }, { key: "length", get: function get() { return this._inPos; } }, { key: "capacity", get: function get() { return this._buf.length; } }, { key: "buffer", get: function get() { return this._buf; } }]); return StringBuf; }(); module.exports = StringBuf; }).call(this,require("buffer").Buffer) },{"buffer":216}],25:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var toString = Object.prototype.toString; var escapeHtmlRegex = /["&<>]/; var _ = { each: function each(obj, cb) { if (obj) { if (Array.isArray(obj)) { obj.forEach(cb); } else { Object.keys(obj).forEach(function (key) { cb(obj[key], key); }); } } }, some: function some(obj, cb) { if (obj) { if (Array.isArray(obj)) { return obj.some(cb); } return Object.keys(obj).some(function (key) { return cb(obj[key], key); }); } return false; }, every: function every(obj, cb) { if (obj) { if (Array.isArray(obj)) { return obj.every(cb); } return Object.keys(obj).every(function (key) { return cb(obj[key], key); }); } return true; }, map: function map(obj, cb) { if (obj) { if (Array.isArray(obj)) { return obj.map(cb); } return Object.keys(obj).map(function (key) { return cb(obj[key], key); }); } return []; }, keyBy: function keyBy(a, p) { return a.reduce(function (o, v) { o[v[p]] = v; return o; }, {}); }, isEqual: function isEqual(a, b) { var aType = _typeof(a); var bType = _typeof(b); var aArray = Array.isArray(a); var bArray = Array.isArray(b); if (aType !== bType) { return false; } switch (_typeof(a)) { case 'object': if (aArray || bArray) { if (aArray && bArray) { return a.length === b.length && a.every(function (aValue, index) { var bValue = b[index]; return _.isEqual(aValue, bValue); }); } return false; } return _.every(a, function (aValue, key) { var bValue = b[key]; return _.isEqual(aValue, bValue); }); default: return a === b; } }, escapeHtml: function escapeHtml(html) { var regexResult = escapeHtmlRegex.exec(html); if (!regexResult) return html; var result = ''; var escape = ''; var lastIndex = 0; var i = regexResult.index; for (; i < html.length; i++) { switch (html.charAt(i)) { case '"': escape = '"'; break; case '&': escape = '&'; break; case '\'': escape = '''; break; case '<': escape = '<'; break; case '>': escape = '>'; break; default: continue; } if (lastIndex !== i) result += html.substring(lastIndex, i); lastIndex = i + 1; result += escape; } if (lastIndex !== i) return result + html.substring(lastIndex, i); return result; }, strcmp: function strcmp(a, b) { if (a < b) return -1; if (a > b) return 1; return 0; }, isUndefined: function isUndefined(val) { return toString.call(val) === '[object Undefined]'; }, isObject: function isObject(val) { return toString.call(val) === '[object Object]'; }, deepMerge: function deepMerge() { var target = arguments[0] || {}; var length = arguments.length; // eslint-disable-next-line one-var var src, clone, copyIsArray; function assignValue(val, key) { src = target[key]; copyIsArray = Array.isArray(val); if (_.isObject(val) || copyIsArray) { if (copyIsArray) { copyIsArray = false; clone = src && Array.isArray(src) ? src : []; } else { clone = src && _.isObject(src) ? src : {}; } target[key] = _.deepMerge(clone, val); } else if (!_.isUndefined(val)) { target[key] = val; } } for (var i = 0; i < length; i++) { _.each(arguments[i], assignValue); } return target; } }; module.exports = _; },{}],26:[function(require,module,exports){ (function (global,setImmediate){ "use strict"; var fs = require('fs'); // useful stuff var inherits = function inherits(cls, superCtor, statics, prototype) { // eslint-disable-next-line no-underscore-dangle cls.super_ = superCtor; if (!prototype) { prototype = statics; statics = null; } if (statics) { Object.keys(statics).forEach(function (i) { Object.defineProperty(cls, i, Object.getOwnPropertyDescriptor(statics, i)); }); } var properties = { constructor: { value: cls, enumerable: false, writable: false, configurable: true } }; if (prototype) { Object.keys(prototype).forEach(function (i) { properties[i] = Object.getOwnPropertyDescriptor(prototype, i); }); } cls.prototype = Object.create(superCtor.prototype, properties); }; // eslint-disable-next-line no-control-regex var xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/; var utils = { nop: function nop() {}, promiseImmediate: function promiseImmediate(value) { return new Promise(function (resolve) { if (global.setImmediate) { setImmediate(function () { resolve(value); }); } else { // poorman's setImmediate - must wait at least 1ms setTimeout(function () { resolve(value); }, 1); } }); }, inherits: inherits, dateToExcel: function dateToExcel(d, date1904) { return 25569 + d.getTime() / (24 * 3600 * 1000) - (date1904 ? 1462 : 0); }, excelToDate: function excelToDate(v, date1904) { var millisecondSinceEpoch = Math.round((v - 25569 + (date1904 ? 1462 : 0)) * 24 * 3600 * 1000); return new Date(millisecondSinceEpoch); }, parsePath: function parsePath(filepath) { var last = filepath.lastIndexOf('/'); return { path: filepath.substring(0, last), name: filepath.substring(last + 1) }; }, getRelsPath: function getRelsPath(filepath) { var path = utils.parsePath(filepath); return "".concat(path.path, "/_rels/").concat(path.name, ".rels"); }, xmlEncode: function xmlEncode(text) { var regexResult = xmlDecodeRegex.exec(text); if (!regexResult) return text; var result = ''; var escape = ''; var lastIndex = 0; var i = regexResult.index; for (; i < text.length; i++) { var charCode = text.charCodeAt(i); switch (charCode) { case 34: // " escape = '"'; break; case 38: // & escape = '&'; break; case 39: // ' escape = '''; break; case 60: // < escape = '<'; break; case 62: // > escape = '>'; break; case 127: escape = ''; break; default: { if (charCode <= 31 && (charCode <= 8 || charCode >= 11 && charCode !== 13)) { escape = ''; break; } continue; } } if (lastIndex !== i) result += text.substring(lastIndex, i); lastIndex = i + 1; if (escape) result += escape; } if (lastIndex !== i) return result + text.substring(lastIndex, i); return result; }, xmlDecode: function xmlDecode(text) { return text.replace(/&([a-z]*);/g, function (c) { switch (c) { case '<': return '<'; case '>': return '>'; case '&': return '&'; case ''': return '\''; case '"': return '"'; default: return c; } }); }, validInt: function validInt(value) { var i = parseInt(value, 10); return !Number.isNaN(i) ? i : 0; }, isDateFmt: function isDateFmt(fmt) { if (!fmt) { return false; } // must remove all chars inside quotes and [] fmt = fmt.replace(/\[[^\]]*]/g, ''); fmt = fmt.replace(/"[^"]*"/g, ''); // then check for date formatting chars var result = fmt.match(/[ymdhMsb]+/) !== null; return result; }, fs: { exists: function exists(path) { return new Promise(function (resolve) { fs.access(path, fs.constants.F_OK, function (err) { resolve(!err); }); }); } }, toIsoDateString: function toIsoDateString(dt) { return dt.toIsoString().subsstr(0, 10); } }; module.exports = utils; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("timers").setImmediate) },{"fs":215,"timers":521}],27:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('./under-dash'); var utils = require('./utils'); // constants var OPEN_ANGLE = '<'; var CLOSE_ANGLE = '>'; var OPEN_ANGLE_SLASH = ''; var EQUALS_QUOTE = '="'; var QUOTE = '"'; var SPACE = ' '; function pushAttribute(xml, name, value) { xml.push(SPACE); xml.push(name); xml.push(EQUALS_QUOTE); xml.push(utils.xmlEncode(value.toString())); xml.push(QUOTE); } function pushAttributes(xml, attributes) { if (attributes) { _.each(attributes, function (value, name) { if (value !== undefined) { pushAttribute(xml, name, value); } }); } } var XmlStream = /*#__PURE__*/function () { function XmlStream() { _classCallCheck(this, XmlStream); this._xml = []; this._stack = []; this._rollbacks = []; } _createClass(XmlStream, [{ key: "openXml", value: function openXml(docAttributes) { var xml = this._xml; // xml.push('\n'); } }, { key: "openNode", value: function openNode(name, attributes) { var parent = this.tos; var xml = this._xml; if (parent && this.open) { xml.push(CLOSE_ANGLE); } this._stack.push(name); // start streaming node xml.push(OPEN_ANGLE); xml.push(name); pushAttributes(xml, attributes); this.leaf = true; this.open = true; } }, { key: "addAttribute", value: function addAttribute(name, value) { if (!this.open) { throw new Error('Cannot write attributes to node if it is not open'); } if (value !== undefined) { pushAttribute(this._xml, name, value); } } }, { key: "addAttributes", value: function addAttributes(attrs) { if (!this.open) { throw new Error('Cannot write attributes to node if it is not open'); } pushAttributes(this._xml, attrs); } }, { key: "writeText", value: function writeText(text) { var xml = this._xml; if (this.open) { xml.push(CLOSE_ANGLE); this.open = false; } this.leaf = false; xml.push(utils.xmlEncode(text.toString())); } }, { key: "writeXml", value: function writeXml(xml) { if (this.open) { this._xml.push(CLOSE_ANGLE); this.open = false; } this.leaf = false; this._xml.push(xml); } }, { key: "closeNode", value: function closeNode() { var node = this._stack.pop(); var xml = this._xml; if (this.leaf) { xml.push(CLOSE_SLASH_ANGLE); } else { xml.push(OPEN_ANGLE_SLASH); xml.push(node); xml.push(CLOSE_ANGLE); } this.open = false; this.leaf = false; } }, { key: "leafNode", value: function leafNode(name, attributes, text) { this.openNode(name, attributes); if (text !== undefined) { // zeros need to be written this.writeText(text); } this.closeNode(); } }, { key: "closeAll", value: function closeAll() { while (this._stack.length) { this.closeNode(); } } }, { key: "addRollback", value: function addRollback() { this._rollbacks.push({ xml: this._xml.length, stack: this._stack.length, leaf: this.leaf, open: this.open }); return this.cursor; } }, { key: "commit", value: function commit() { this._rollbacks.pop(); } }, { key: "rollback", value: function rollback() { var r = this._rollbacks.pop(); if (this._xml.length > r.xml) { this._xml.splice(r.xml, this._xml.length - r.xml); } if (this._stack.length > r.stack) { this._stack.splice(r.stack, this._stack.length - r.stack); } this.leaf = r.leaf; this.open = r.open; } }, { key: "tos", get: function get() { return this._stack.length ? this._stack[this._stack.length - 1] : undefined; } }, { key: "cursor", get: function get() { // handy way to track whether anything has been added return this._xml.length; } }, { key: "xml", get: function get() { this.closeAll(); return this._xml.join(''); } }]); return XmlStream; }(); XmlStream.StdDocAttributes = { version: '1.0', encoding: 'UTF-8', standalone: 'yes' }; module.exports = XmlStream; },{"./under-dash":25,"./utils":26}],28:[function(require,module,exports){ (function (process){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var events = require('events'); var JSZip = require('jszip'); var StreamBuf = require('./stream-buf'); var _require = require('./browser-buffer-encode'), stringToBuffer = _require.stringToBuffer; // ============================================================================= // The ZipWriter class // Packs streamed data into an output zip stream var ZipWriter = /*#__PURE__*/function (_events$EventEmitter) { _inherits(ZipWriter, _events$EventEmitter); var _super = _createSuper(ZipWriter); function ZipWriter(options) { var _this; _classCallCheck(this, ZipWriter); _this = _super.call(this); _this.options = Object.assign({ type: 'nodebuffer', compression: 'DEFLATE' }, options); _this.zip = new JSZip(); _this.stream = new StreamBuf(); return _this; } _createClass(ZipWriter, [{ key: "append", value: function append(data, options) { if (options.hasOwnProperty('base64') && options.base64) { this.zip.file(options.name, data, { base64: true }); } else { // https://www.npmjs.com/package/process if (process.browser && typeof data === 'string') { // use TextEncoder in browser data = stringToBuffer(data); } this.zip.file(options.name, data); } } }, { key: "finalize", value: function () { var _finalize = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() { var content; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.zip.generateAsync(this.options); case 2: content = _context.sent; this.stream.end(content); this.emit('finish'); case 5: case "end": return _context.stop(); } } }, _callee, this); })); function finalize() { return _finalize.apply(this, arguments); } return finalize; }() // ========================================================================== // Stream.Readable interface }, { key: "read", value: function read(size) { return this.stream.read(size); } }, { key: "setEncoding", value: function setEncoding(encoding) { return this.stream.setEncoding(encoding); } }, { key: "pause", value: function pause() { return this.stream.pause(); } }, { key: "resume", value: function resume() { return this.stream.resume(); } }, { key: "isPaused", value: function isPaused() { return this.stream.isPaused(); } }, { key: "pipe", value: function pipe(destination, options) { return this.stream.pipe(destination, options); } }, { key: "unpipe", value: function unpipe(destination) { return this.stream.unpipe(destination); } }, { key: "unshift", value: function unshift(chunk) { return this.stream.unshift(chunk); } }, { key: "wrap", value: function wrap(stream) { return this.stream.wrap(stream); } }]); return ZipWriter; }(events.EventEmitter); // ============================================================================= module.exports = { ZipWriter: ZipWriter }; }).call(this,require('_process')) },{"./browser-buffer-encode":17,"./stream-buf":23,"_process":467,"events":367,"jszip":399}],29:[function(require,module,exports){ "use strict"; module.exports = { 0: { f: 'General' }, 1: { f: '0' }, 2: { f: '0.00' }, 3: { f: '#,##0' }, 4: { f: '#,##0.00' }, 9: { f: '0%' }, 10: { f: '0.00%' }, 11: { f: '0.00E+00' }, 12: { f: '# ?/?' }, 13: { f: '# ??/??' }, 14: { f: 'mm-dd-yy' }, 15: { f: 'd-mmm-yy' }, 16: { f: 'd-mmm' }, 17: { f: 'mmm-yy' }, 18: { f: 'h:mm AM/PM' }, 19: { f: 'h:mm:ss AM/PM' }, 20: { f: 'h:mm' }, 21: { f: 'h:mm:ss' }, 22: { f: 'm/d/yy "h":mm' }, 27: { 'zh-tw': '[$-404]e/m/d', 'zh-cn': 'yyyy"年"m"月"', 'ja-jp': '[$-411]ge.m.d', 'ko-kr': 'yyyy"年" mm"月" dd"日"' }, 28: { 'zh-tw': '[$-404]e"年"m"月"d"日"', 'zh-cn': 'm"月"d"日"', 'ja-jp': '[$-411]ggge"年"m"月"d"日"', 'ko-kr': 'mm-dd' }, 29: { 'zh-tw': '[$-404]e"年"m"月"d"日"', 'zh-cn': 'm"月"d"日"', 'ja-jp': '[$-411]ggge"年"m"月"d"日"', 'ko-kr': 'mm-dd' }, 30: { 'zh-tw': 'm/d/yy ', 'zh-cn': 'm-d-yy', 'ja-jp': 'm/d/yy', 'ko-kr': 'mm-dd-yy' }, 31: { 'zh-tw': 'yyyy"年"m"月"d"日"', 'zh-cn': 'yyyy"年"m"月"d"日"', 'ja-jp': 'yyyy"年"m"月"d"日"', 'ko-kr': 'yyyy"년" mm"월" dd"일"' }, 32: { 'zh-tw': 'hh"時"mm"分"', 'zh-cn': 'h"时"mm"分"', 'ja-jp': 'h"時"mm"分"', 'ko-kr': 'h"시" mm"분"' }, 33: { 'zh-tw': 'hh"時"mm"分"ss"秒"', 'zh-cn': 'h"时"mm"分"ss"秒"', 'ja-jp': 'h"時"mm"分"ss"秒"', 'ko-kr': 'h"시" mm"분" ss"초"' }, 34: { 'zh-tw': '上午/下午 hh"時"mm"分"', 'zh-cn': '上午/下午 h"时"mm"分"', 'ja-jp': 'yyyy"年"m"月"', 'ko-kr': 'yyyy-mm-dd' }, 35: { 'zh-tw': '上午/下午 hh"時"mm"分"ss"秒"', 'zh-cn': '上午/下午 h"时"mm"分"ss"秒"', 'ja-jp': 'm"月"d"日"', 'ko-kr': 'yyyy-mm-dd' }, 36: { 'zh-tw': '[$-404]e/m/d', 'zh-cn': 'yyyy"年"m"月"', 'ja-jp': '[$-411]ge.m.d', 'ko-kr': 'yyyy"年" mm"月" dd"日"' }, 37: { f: '#,##0 ;(#,##0)' }, 38: { f: '#,##0 ;[Red](#,##0)' }, 39: { f: '#,##0.00 ;(#,##0.00)' }, 40: { f: '#,##0.00 ;[Red](#,##0.00)' }, 45: { f: 'mm:ss' }, 46: { f: '[h]:mm:ss' }, 47: { f: 'mmss.0' }, 48: { f: '##0.0E+0' }, 49: { f: '@' }, 50: { 'zh-tw': '[$-404]e/m/d', 'zh-cn': 'yyyy"年"m"月"', 'ja-jp': '[$-411]ge.m.d', 'ko-kr': 'yyyy"年" mm"月" dd"日"' }, 51: { 'zh-tw': '[$-404]e"年"m"月"d"日"', 'zh-cn': 'm"月"d"日"', 'ja-jp': '[$-411]ggge"年"m"月"d"日"', 'ko-kr': 'mm-dd' }, 52: { 'zh-tw': '上午/下午 hh"時"mm"分"', 'zh-cn': 'yyyy"年"m"月"', 'ja-jp': 'yyyy"年"m"月"', 'ko-kr': 'yyyy-mm-dd' }, 53: { 'zh-tw': '上午/下午 hh"時"mm"分"ss"秒"', 'zh-cn': 'm"月"d"日"', 'ja-jp': 'm"月"d"日"', 'ko-kr': 'yyyy-mm-dd' }, 54: { 'zh-tw': '[$-404]e"年"m"月"d"日"', 'zh-cn': 'm"月"d"日"', 'ja-jp': '[$-411]ggge"年"m"月"d"日"', 'ko-kr': 'mm-dd' }, 55: { 'zh-tw': '上午/下午 hh"時"mm"分"', 'zh-cn': '上午/下午 h"时"mm"分"', 'ja-jp': 'yyyy"年"m"月"', 'ko-kr': 'yyyy-mm-dd' }, 56: { 'zh-tw': '上午/下午 hh"時"mm"分"ss"秒"', 'zh-cn': '上午/下午 h"时"mm"分"ss"秒"', 'ja-jp': 'm"月"d"日"', 'ko-kr': 'yyyy-mm-dd' }, 57: { 'zh-tw': '[$-404]e/m/d', 'zh-cn': 'yyyy"年"m"月"', 'ja-jp': '[$-411]ge.m.d', 'ko-kr': 'yyyy"年" mm"月" dd"日"' }, 58: { 'zh-tw': '[$-404]e"年"m"月"d"日"', 'zh-cn': 'm"月"d"日"', 'ja-jp': '[$-411]ggge"年"m"月"d"日"', 'ko-kr': 'mm-dd' }, 59: { 'th-th': 't0' }, 60: { 'th-th': 't0.00' }, 61: { 'th-th': 't#,##0' }, 62: { 'th-th': 't#,##0.00' }, 67: { 'th-th': 't0%' }, 68: { 'th-th': 't0.00%' }, 69: { 'th-th': 't# ?/?' }, 70: { 'th-th': 't# ??/??' }, 81: { 'th-th': 'd/m/bb' } }; },{}],30:[function(require,module,exports){ 'use strict'; module.exports = { OfficeDocument: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument', Worksheet: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet', CalcChain: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/calcChain', SharedStrings: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings', Styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles', Theme: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme', Hyperlink: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink', Image: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', CoreProperties: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties', ExtenderProperties: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', Comments: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments', VmlDrawing: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing', Table: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/table' }; },{}],31:[function(require,module,exports){ "use strict"; function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); } var parseSax = require('../../utils/parse-sax'); var XmlStream = require('../../utils/xml-stream'); /* 'virtual' methods used as a form of documentation */ /* eslint-disable class-methods-use-this */ // Base class for Xforms var BaseXform = /*#__PURE__*/function () { function BaseXform() { _classCallCheck(this, BaseXform); } _createClass(BaseXform, [{ key: "prepare", // constructor(/* model, name */) {} // ============================================================ // Virtual Interface value: function prepare() /* model, options */ {// optional preparation (mutation) of model so it is ready for write } }, { key: "render", value: function render() /* xmlStream, model */ {// convert model to xml } }, { key: "parseOpen", value: function parseOpen(node) {// XML node opened } }, { key: "parseText", value: function parseText(text) {// chunk of text encountered for current node } }, { key: "parseClose", value: function parseClose(name) {// XML node closed } }, { key: "reconcile", value: function reconcile(model, options) {// optional post-parse step (opposite to prepare) } // ============================================================ }, { key: "reset", value: function reset() { // to make sure parses don't bleed to next iteration this.model = null; // if we have a map - reset them too if (this.map) { Object.values(this.map).forEach(function (xform) { if (xform instanceof BaseXform) { xform.reset(); } else if (xform.xform) { xform.xform.reset(); } }); } } }, { key: "mergeModel", value: function mergeModel(obj) { // set obj's props to this.model this.model = Object.assign(this.model || {}, obj); } }, { key: "parse", value: function () { var _parse = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(saxParser) { var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, events, _iterator2, _step2, _step2$value, eventType, value; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _iteratorNormalCompletion = true; _didIteratorError = false; _context.prev = 2; _iterator = _asyncIterator(saxParser); case 4: _context.next = 6; return _iterator.next(); case 6: _step = _context.sent; _iteratorNormalCompletion = _step.done; _context.next = 10; return _step.value; case 10: _value = _context.sent; if (_iteratorNormalCompletion) { _context.next = 42; break; } events = _value; _iterator2 = _createForOfIteratorHelper(events); _context.prev = 14; _iterator2.s(); case 16: if ((_step2 = _iterator2.n()).done) { _context.next = 31; break; } _step2$value = _step2.value, eventType = _step2$value.eventType, value = _step2$value.value; if (!(eventType === 'opentag')) { _context.next = 22; break; } this.parseOpen(value); _context.next = 29; break; case 22: if (!(eventType === 'text')) { _context.next = 26; break; } this.parseText(value); _context.next = 29; break; case 26: if (!(eventType === 'closetag')) { _context.next = 29; break; } if (this.parseClose(value.name)) { _context.next = 29; break; } return _context.abrupt("return", this.model); case 29: _context.next = 16; break; case 31: _context.next = 36; break; case 33: _context.prev = 33; _context.t0 = _context["catch"](14); _iterator2.e(_context.t0); case 36: _context.prev = 36; _iterator2.f(); return _context.finish(36); case 39: _iteratorNormalCompletion = true; _context.next = 4; break; case 42: _context.next = 48; break; case 44: _context.prev = 44; _context.t1 = _context["catch"](2); _didIteratorError = true; _iteratorError = _context.t1; case 48: _context.prev = 48; _context.prev = 49; if (!(!_iteratorNormalCompletion && _iterator.return != null)) { _context.next = 53; break; } _context.next = 53; return _iterator.return(); case 53: _context.prev = 53; if (!_didIteratorError) { _context.next = 56; break; } throw _iteratorError; case 56: return _context.finish(53); case 57: return _context.finish(48); case 58: return _context.abrupt("return", this.model); case 59: case "end": return _context.stop(); } } }, _callee, this, [[2, 44, 48, 58], [14, 33, 36, 39], [49,, 53, 57]]); })); function parse(_x) { return _parse.apply(this, arguments); } return parse; }() }, { key: "parseStream", value: function () { var _parseStream = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(stream) { return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: return _context2.abrupt("return", this.parse(parseSax(stream))); case 1: case "end": return _context2.stop(); } } }, _callee2, this); })); function parseStream(_x2) { return _parseStream.apply(this, arguments); } return parseStream; }() }, { key: "toXml", value: function toXml(model) { var xmlStream = new XmlStream(); this.render(xmlStream, model); return xmlStream.xml; } // ============================================================ // Useful Utilities }, { key: "xml", get: function get() { // convenience function to get the xml of this.model // useful for manager types that are built during the prepare phase return this.toXml(this.model); } }], [{ key: "toAttribute", value: function toAttribute(value, dflt) { var always = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (value === undefined) { if (always) { return dflt; } } else if (always || value !== dflt) { return value.toString(); } return undefined; } }, { key: "toStringAttribute", value: function toStringAttribute(value, dflt) { var always = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; return BaseXform.toAttribute(value, dflt, always); } }, { key: "toStringValue", value: function toStringValue(attr, dflt) { return attr === undefined ? dflt : attr; } }, { key: "toBoolAttribute", value: function toBoolAttribute(value, dflt) { var always = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; if (value === undefined) { if (always) { return dflt; } } else if (always || value !== dflt) { return value ? '1' : '0'; } return undefined; } }, { key: "toBoolValue", value: function toBoolValue(attr, dflt) { return attr === undefined ? dflt : attr === '1'; } }, { key: "toIntAttribute", value: function toIntAttribute(value, dflt) { var always = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; return BaseXform.toAttribute(value, dflt, always); } }, { key: "toIntValue", value: function toIntValue(attr, dflt) { return attr === undefined ? dflt : parseInt(attr, 10); } }, { key: "toFloatAttribute", value: function toFloatAttribute(value, dflt) { var always = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; return BaseXform.toAttribute(value, dflt, always); } }, { key: "toFloatValue", value: function toFloatValue(attr, dflt) { return attr === undefined ? dflt : parseFloat(attr); } }]); return BaseXform; }(); module.exports = BaseXform; },{"../../utils/parse-sax":21,"../../utils/xml-stream":27}],32:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var colCache = require('../../../utils/col-cache'); var DefinedNamesXform = /*#__PURE__*/function (_BaseXform) { _inherits(DefinedNamesXform, _BaseXform); var _super = _createSuper(DefinedNamesXform); function DefinedNamesXform() { _classCallCheck(this, DefinedNamesXform); return _super.apply(this, arguments); } _createClass(DefinedNamesXform, [{ key: "render", value: function render(xmlStream, model) { // // name.ranges.join(',') // name.ranges.join(',') // xmlStream.openNode('definedName', { name: model.name, localSheetId: model.localSheetId }); xmlStream.writeText(model.ranges.join(',')); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'definedName': this._parsedName = node.attributes.name; this._parsedLocalSheetId = node.attributes.localSheetId; this._parsedText = []; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { this._parsedText.push(text); } }, { key: "parseClose", value: function parseClose() { this.model = { name: this._parsedName, ranges: extractRanges(this._parsedText.join('')) }; if (this._parsedLocalSheetId !== undefined) { this.model.localSheetId = parseInt(this._parsedLocalSheetId, 10); } return false; } }]); return DefinedNamesXform; }(BaseXform); function isValidRange(range) { try { colCache.decodeEx(range); return true; } catch (err) { return false; } } function extractRanges(parsedText) { var ranges = []; var quotesOpened = false; var last = ''; parsedText.split(',').forEach(function (item) { if (!item) { return; } var quotes = (item.match(/'/g) || []).length; if (!quotes) { if (quotesOpened) { last += "".concat(item, ","); } else if (isValidRange(item)) { ranges.push(item); } return; } var quotesEven = quotes % 2 === 0; if (!quotesOpened && quotesEven && isValidRange(item)) { ranges.push(item); } else if (quotesOpened && !quotesEven) { quotesOpened = false; if (isValidRange(last + item)) { ranges.push(last + item); } last = ''; } else { quotesOpened = true; last += "".concat(item, ","); } }); return ranges; } module.exports = DefinedNamesXform; },{"../../../utils/col-cache":19,"../base-xform":31}],33:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var utils = require('../../../utils/utils'); var BaseXform = require('../base-xform'); var WorksheetXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorksheetXform, _BaseXform); var _super = _createSuper(WorksheetXform); function WorksheetXform() { _classCallCheck(this, WorksheetXform); return _super.apply(this, arguments); } _createClass(WorksheetXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('sheet', { sheetId: model.id, name: model.name, state: model.state, 'r:id': model.rId }); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'sheet') { this.model = { name: utils.xmlDecode(node.attributes.name), id: parseInt(node.attributes.sheetId, 10), state: node.attributes.state, rId: node.attributes['r:id'] }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return WorksheetXform; }(BaseXform); module.exports = WorksheetXform; },{"../../../utils/utils":26,"../base-xform":31}],34:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var WorkbookCalcPropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorkbookCalcPropertiesXform, _BaseXform); var _super = _createSuper(WorkbookCalcPropertiesXform); function WorkbookCalcPropertiesXform() { _classCallCheck(this, WorkbookCalcPropertiesXform); return _super.apply(this, arguments); } _createClass(WorkbookCalcPropertiesXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('calcPr', { calcId: 171027, fullCalcOnLoad: model.fullCalcOnLoad ? 1 : undefined }); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'calcPr') { this.model = {}; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return WorkbookCalcPropertiesXform; }(BaseXform); module.exports = WorkbookCalcPropertiesXform; },{"../base-xform":31}],35:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var WorksheetPropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorksheetPropertiesXform, _BaseXform); var _super = _createSuper(WorksheetPropertiesXform); function WorksheetPropertiesXform() { _classCallCheck(this, WorksheetPropertiesXform); return _super.apply(this, arguments); } _createClass(WorksheetPropertiesXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('workbookPr', { date1904: model.date1904 ? 1 : undefined, defaultThemeVersion: 164011, filterPrivacy: 1 }); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'workbookPr') { this.model = { date1904: node.attributes.date1904 === '1' }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return WorksheetPropertiesXform; }(BaseXform); module.exports = WorksheetPropertiesXform; },{"../base-xform":31}],36:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var WorkbookViewXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorkbookViewXform, _BaseXform); var _super = _createSuper(WorkbookViewXform); function WorkbookViewXform() { _classCallCheck(this, WorkbookViewXform); return _super.apply(this, arguments); } _createClass(WorkbookViewXform, [{ key: "render", value: function render(xmlStream, model) { var attributes = { xWindow: model.x || 0, yWindow: model.y || 0, windowWidth: model.width || 12000, windowHeight: model.height || 24000, firstSheet: model.firstSheet, activeTab: model.activeTab }; if (model.visibility && model.visibility !== 'visible') { attributes.visibility = model.visibility; } xmlStream.leafNode('workbookView', attributes); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'workbookView') { var model = this.model = {}; var addS = function addS(name, value, dflt) { var s = value !== undefined ? model[name] = value : dflt; if (s !== undefined) { model[name] = s; } }; var addN = function addN(name, value, dflt) { var n = value !== undefined ? model[name] = parseInt(value, 10) : dflt; if (n !== undefined) { model[name] = n; } }; addN('x', node.attributes.xWindow, 0); addN('y', node.attributes.yWindow, 0); addN('width', node.attributes.windowWidth, 25000); addN('height', node.attributes.windowHeight, 10000); addS('visibility', node.attributes.visibility, 'visible'); addN('activeTab', node.attributes.activeTab, undefined); addN('firstSheet', node.attributes.firstSheet, undefined); return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return WorkbookViewXform; }(BaseXform); module.exports = WorkbookViewXform; },{"../base-xform":31}],37:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var colCache = require('../../../utils/col-cache'); var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var StaticXform = require('../static-xform'); var ListXform = require('../list-xform'); var DefinedNameXform = require('./defined-name-xform'); var SheetXform = require('./sheet-xform'); var WorkbookViewXform = require('./workbook-view-xform'); var WorkbookPropertiesXform = require('./workbook-properties-xform'); var WorkbookCalcPropertiesXform = require('./workbook-calc-properties-xform'); var WorkbookXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorkbookXform, _BaseXform); var _super = _createSuper(WorkbookXform); function WorkbookXform() { var _this; _classCallCheck(this, WorkbookXform); _this = _super.call(this); _this.map = { fileVersion: WorkbookXform.STATIC_XFORMS.fileVersion, workbookPr: new WorkbookPropertiesXform(), bookViews: new ListXform({ tag: 'bookViews', count: false, childXform: new WorkbookViewXform() }), sheets: new ListXform({ tag: 'sheets', count: false, childXform: new SheetXform() }), definedNames: new ListXform({ tag: 'definedNames', count: false, childXform: new DefinedNameXform() }), calcPr: new WorkbookCalcPropertiesXform() }; return _this; } _createClass(WorkbookXform, [{ key: "prepare", value: function prepare(model) { model.sheets = model.worksheets; // collate all the print areas from all of the sheets and add them to the defined names var printAreas = []; var index = 0; // sheets is sparse array - calc index manually model.sheets.forEach(function (sheet) { if (sheet.pageSetup && sheet.pageSetup.printArea) { sheet.pageSetup.printArea.split('&&').forEach(function (printArea) { var printAreaComponents = printArea.split(':'); var definedName = { name: '_xlnm.Print_Area', ranges: ["'".concat(sheet.name, "'!$").concat(printAreaComponents[0], ":$").concat(printAreaComponents[1])], localSheetId: index }; printAreas.push(definedName); }); } if (sheet.pageSetup && (sheet.pageSetup.printTitlesRow || sheet.pageSetup.printTitlesColumn)) { var ranges = []; if (sheet.pageSetup.printTitlesColumn) { var titlesColumns = sheet.pageSetup.printTitlesColumn.split(':'); ranges.push("'".concat(sheet.name, "'!$").concat(titlesColumns[0], ":$").concat(titlesColumns[1])); } if (sheet.pageSetup.printTitlesRow) { var titlesRows = sheet.pageSetup.printTitlesRow.split(':'); ranges.push("'".concat(sheet.name, "'!$").concat(titlesRows[0], ":$").concat(titlesRows[1])); } var definedName = { name: '_xlnm.Print_Titles', ranges: ranges, localSheetId: index }; printAreas.push(definedName); } index++; }); if (printAreas.length) { model.definedNames = model.definedNames.concat(printAreas); } (model.media || []).forEach(function (medium, i) { // assign name medium.name = medium.type + (i + 1); }); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('workbook', WorkbookXform.WORKBOOK_ATTRIBUTES); this.map.fileVersion.render(xmlStream); this.map.workbookPr.render(xmlStream, model.properties); this.map.bookViews.render(xmlStream, model.views); this.map.sheets.render(xmlStream, model.sheets); this.map.definedNames.render(xmlStream, model.definedNames); this.map.calcPr.render(xmlStream, model.calcProperties); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'workbook': return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } return true; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case 'workbook': this.model = { sheets: this.map.sheets.model, properties: this.map.workbookPr.model || {}, views: this.map.bookViews.model, calcProperties: {} }; if (this.map.definedNames.model) { this.model.definedNames = this.map.definedNames.model; } return false; default: // not quite sure how we get here! return true; } } }, { key: "reconcile", value: function reconcile(model) { var rels = (model.workbookRels || []).reduce(function (map, rel) { map[rel.Id] = rel; return map; }, {}); // reconcile sheet ids, rIds and names var worksheets = []; var worksheet; var index = 0; (model.sheets || []).forEach(function (sheet) { var rel = rels[sheet.rId]; if (!rel) { return; } // if rel.Target start with `[space]/xl/` or `/xl/` , then it will be replaced with `''` and spliced behind `xl/`, // otherwise it will be spliced directly behind `xl/`. i.g. worksheet = model.worksheetHash["xl/".concat(rel.Target.replace(/^(\s|\/xl\/)+/, ''))]; // If there are "chartsheets" in the file, rel.Target will // come out as chartsheets/sheet1.xml or similar here, and // that won't be in model.worksheetHash. // As we don't have the infrastructure to support chartsheets, // we will ignore them for now: if (worksheet) { worksheet.name = sheet.name; worksheet.id = sheet.id; worksheet.state = sheet.state; worksheets[index++] = worksheet; } }); // reconcile print areas var definedNames = []; _.each(model.definedNames, function (definedName) { if (definedName.name === '_xlnm.Print_Area') { worksheet = worksheets[definedName.localSheetId]; if (worksheet) { if (!worksheet.pageSetup) { worksheet.pageSetup = {}; } var range = colCache.decodeEx(definedName.ranges[0]); worksheet.pageSetup.printArea = worksheet.pageSetup.printArea ? "".concat(worksheet.pageSetup.printArea, "&&").concat(range.dimensions) : range.dimensions; } } else if (definedName.name === '_xlnm.Print_Titles') { worksheet = worksheets[definedName.localSheetId]; if (worksheet) { if (!worksheet.pageSetup) { worksheet.pageSetup = {}; } var rangeString = definedName.ranges.join(','); var dollarRegex = /\$/g; var rowRangeRegex = /\$\d+:\$\d+/; var rowRangeMatches = rangeString.match(rowRangeRegex); if (rowRangeMatches && rowRangeMatches.length) { var _range = rowRangeMatches[0]; worksheet.pageSetup.printTitlesRow = _range.replace(dollarRegex, ''); } var columnRangeRegex = /\$[A-Z]+:\$[A-Z]+/; var columnRangeMatches = rangeString.match(columnRangeRegex); if (columnRangeMatches && columnRangeMatches.length) { var _range2 = columnRangeMatches[0]; worksheet.pageSetup.printTitlesColumn = _range2.replace(dollarRegex, ''); } } } else { definedNames.push(definedName); } }); model.definedNames = definedNames; // used by sheets to build their image models model.media.forEach(function (media, i) { media.index = i; }); } }]); return WorkbookXform; }(BaseXform); WorkbookXform.WORKBOOK_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006', 'mc:Ignorable': 'x15', 'xmlns:x15': 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main' }; WorkbookXform.STATIC_XFORMS = { fileVersion: new StaticXform({ tag: 'fileVersion', $: { appName: 'xl', lastEdited: 5, lowestEdited: 5, rupBuild: 9303 } }) }; module.exports = WorkbookXform; },{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./defined-name-xform":32,"./sheet-xform":33,"./workbook-calc-properties-xform":34,"./workbook-properties-xform":35,"./workbook-view-xform":36}],38:[function(require,module,exports){ "use strict"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var RichTextXform = require('../strings/rich-text-xform'); var utils = require('../../../utils/utils'); var BaseXform = require('../base-xform'); /** 51422: test */ var CommentXform = module.exports = function (model) { this.model = model; }; utils.inherits(CommentXform, BaseXform, { get tag() { return 'r'; }, get richTextXform() { if (!this._richTextXform) { this._richTextXform = new RichTextXform(); } return this._richTextXform; }, render: function render(xmlStream, model) { var _this = this; model = model || this.model; xmlStream.openNode('comment', { ref: model.ref, authorId: 0 }); xmlStream.openNode('text'); if (model && model.note && model.note.texts) { model.note.texts.forEach(function (text) { _this.richTextXform.render(xmlStream, text); }); } xmlStream.closeNode(); xmlStream.closeNode(); }, parseOpen: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'comment': this.model = _objectSpread({ type: 'note', note: { texts: [] } }, node.attributes); return true; case 'r': this.parser = this.richTextXform; this.parser.parseOpen(node); return true; default: return false; } }, parseText: function parseText(text) { if (this.parser) { this.parser.parseText(text); } }, parseClose: function parseClose(name) { switch (name) { case 'comment': return false; case 'r': this.model.note.texts.push(this.parser.model); this.parser = undefined; return true; default: if (this.parser) { this.parser.parseClose(name); } return true; } } }); },{"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],39:[function(require,module,exports){ "use strict"; var XmlStream = require('../../../utils/xml-stream'); var utils = require('../../../utils/utils'); var BaseXform = require('../base-xform'); var CommentXform = require('./comment-xform'); var CommentsXform = module.exports = function () { this.map = { comment: new CommentXform() }; }; utils.inherits(CommentsXform, BaseXform, { COMMENTS_ATTRIBUTES: { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main' } }, { render: function render(xmlStream, model) { var _this = this; model = model || this.model; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('comments', CommentsXform.COMMENTS_ATTRIBUTES); // authors // TODO: support authors properly xmlStream.openNode('authors'); xmlStream.leafNode('author', null, 'Author'); xmlStream.closeNode(); // comments xmlStream.openNode('commentList'); model.comments.forEach(function (comment) { _this.map.comment.render(xmlStream, comment); }); xmlStream.closeNode(); xmlStream.closeNode(); }, parseOpen: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'commentList': this.model = { comments: [] }; return true; case 'comment': this.parser = this.map.comment; this.parser.parseOpen(node); return true; default: return false; } }, parseText: function parseText(text) { if (this.parser) { this.parser.parseText(text); } }, parseClose: function parseClose(name) { switch (name) { case 'commentList': return false; case 'comment': this.model.comments.push(this.parser.model); this.parser = undefined; return true; default: if (this.parser) { this.parser.parseClose(name); } return true; } } }); },{"../../../utils/utils":26,"../../../utils/xml-stream":27,"../base-xform":31,"./comment-xform":38}],40:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var VmlPositionXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlPositionXform, _BaseXform); var _super = _createSuper(VmlPositionXform); function VmlPositionXform(model) { var _this; _classCallCheck(this, VmlPositionXform); _this = _super.call(this); _this._model = model; return _this; } _createClass(VmlPositionXform, [{ key: "render", value: function render(xmlStream, model, type) { if (model === type[2]) { xmlStream.leafNode(this.tag); } else if (this.tag === 'x:SizeWithCells' && model === type[1]) { xmlStream.leafNode(this.tag); } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = {}; this.model[this.tag] = true; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return this._model && this._model.tag; } }]); return VmlPositionXform; }(BaseXform); module.exports = VmlPositionXform; },{"../../base-xform":31}],41:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var VmlProtectionXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlProtectionXform, _BaseXform); var _super = _createSuper(VmlProtectionXform); function VmlProtectionXform(model) { var _this; _classCallCheck(this, VmlProtectionXform); _this = _super.call(this); _this._model = model; return _this; } _createClass(VmlProtectionXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, null, model); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.text = ''; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { this.text = text; } }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return this._model && this._model.tag; } }]); return VmlProtectionXform; }(BaseXform); module.exports = VmlProtectionXform; },{"../../base-xform":31}],42:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); // render the triangle in the cell for the comment var VmlAnchorXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlAnchorXform, _BaseXform); var _super = _createSuper(VmlAnchorXform); function VmlAnchorXform() { _classCallCheck(this, VmlAnchorXform); return _super.apply(this, arguments); } _createClass(VmlAnchorXform, [{ key: "getAnchorRect", value: function getAnchorRect(anchor) { var l = Math.floor(anchor.left); var lf = Math.floor((anchor.left - l) * 68); var t = Math.floor(anchor.top); var tf = Math.floor((anchor.top - t) * 18); var r = Math.floor(anchor.right); var rf = Math.floor((anchor.right - r) * 68); var b = Math.floor(anchor.bottom); var bf = Math.floor((anchor.bottom - b) * 18); return [l, lf, t, tf, r, rf, b, bf]; } }, { key: "getDefaultRect", value: function getDefaultRect(ref) { var l = ref.col; var lf = 6; var t = Math.max(ref.row - 2, 0); var tf = 14; var r = l + 2; var rf = 2; var b = t + 4; var bf = 16; return [l, lf, t, tf, r, rf, b, bf]; } }, { key: "render", value: function render(xmlStream, model) { var rect = model.anchor ? this.getAnchorRect(model.anchor) : this.getDefaultRect(model.refAddress); xmlStream.leafNode('x:Anchor', null, rect.join(', ')); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.text = ''; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { this.text = text; } }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'x:Anchor'; } }]); return VmlAnchorXform; }(BaseXform); module.exports = VmlAnchorXform; },{"../base-xform":31}],43:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var VmlAnchorXform = require('./vml-anchor-xform'); var VmlProtectionXform = require('./style/vml-protection-xform'); var VmlPositionXform = require('./style/vml-position-xform'); var POSITION_TYPE = ['twoCells', 'oneCells', 'absolute']; var VmlClientDataXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlClientDataXform, _BaseXform); var _super = _createSuper(VmlClientDataXform); function VmlClientDataXform() { var _this; _classCallCheck(this, VmlClientDataXform); _this = _super.call(this); _this.map = { 'x:Anchor': new VmlAnchorXform(), 'x:Locked': new VmlProtectionXform({ tag: 'x:Locked' }), 'x:LockText': new VmlProtectionXform({ tag: 'x:LockText' }), 'x:SizeWithCells': new VmlPositionXform({ tag: 'x:SizeWithCells' }), 'x:MoveWithCells': new VmlPositionXform({ tag: 'x:MoveWithCells' }) }; return _this; } _createClass(VmlClientDataXform, [{ key: "render", value: function render(xmlStream, model) { var _model$note = model.note, protection = _model$note.protection, editAs = _model$note.editAs; xmlStream.openNode(this.tag, { ObjectType: 'Note' }); this.map['x:MoveWithCells'].render(xmlStream, editAs, POSITION_TYPE); this.map['x:SizeWithCells'].render(xmlStream, editAs, POSITION_TYPE); this.map['x:Anchor'].render(xmlStream, model); this.map['x:Locked'].render(xmlStream, protection.locked); xmlStream.leafNode('x:AutoFill', null, 'False'); this.map['x:LockText'].render(xmlStream, protection.lockText); xmlStream.leafNode('x:Row', null, model.refAddress.row - 1); xmlStream.leafNode('x:Column', null, model.refAddress.col - 1); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.reset(); this.model = { anchor: [], protection: {}, editAs: '' }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.normalizeModel(); return false; default: return true; } } }, { key: "normalizeModel", value: function normalizeModel() { var position = Object.assign({}, this.map['x:MoveWithCells'].model, this.map['x:SizeWithCells'].model); var len = Object.keys(position).length; this.model.editAs = POSITION_TYPE[len]; this.model.anchor = this.map['x:Anchor'].text; this.model.protection.locked = this.map['x:Locked'].text; this.model.protection.lockText = this.map['x:LockText'].text; } }, { key: "tag", get: function get() { return 'x:ClientData'; } }]); return VmlClientDataXform; }(BaseXform); module.exports = VmlClientDataXform; },{"../base-xform":31,"./style/vml-position-xform":40,"./style/vml-protection-xform":41,"./vml-anchor-xform":42}],44:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var VmlShapeXform = require('./vml-shape-xform'); // This class is (currently) single purposed to insert the triangle // drawing icons on commented cells var VmlNotesXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlNotesXform, _BaseXform); var _super = _createSuper(VmlNotesXform); function VmlNotesXform() { var _this; _classCallCheck(this, VmlNotesXform); _this = _super.call(this); _this.map = { 'v:shape': new VmlShapeXform() }; return _this; } _createClass(VmlNotesXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode(this.tag, VmlNotesXform.DRAWING_ATTRIBUTES); xmlStream.openNode('o:shapelayout', { 'v:ext': 'edit' }); xmlStream.leafNode('o:idmap', { 'v:ext': 'edit', data: 1 }); xmlStream.closeNode(); xmlStream.openNode('v:shapetype', { id: '_x0000_t202', coordsize: '21600,21600', 'o:spt': 202, path: 'm,l,21600r21600,l21600,xe' }); xmlStream.leafNode('v:stroke', { joinstyle: 'miter' }); xmlStream.leafNode('v:path', { gradientshapeok: 't', 'o:connecttype': 'rect' }); xmlStream.closeNode(); model.comments.forEach(function (item, index) { _this2.map['v:shape'].render(xmlStream, item, index); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); this.model = { comments: [] }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.comments.push(this.parser.model); this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: // could be some unrecognised tags return true; } } }, { key: "reconcile", value: function reconcile(model, options) { var _this3 = this; model.anchors.forEach(function (anchor) { if (anchor.br) { _this3.map['xdr:twoCellAnchor'].reconcile(anchor, options); } else { _this3.map['xdr:oneCellAnchor'].reconcile(anchor, options); } }); } }, { key: "tag", get: function get() { return 'xml'; } }]); return VmlNotesXform; }(BaseXform); VmlNotesXform.DRAWING_ATTRIBUTES = { 'xmlns:v': 'urn:schemas-microsoft-com:vml', 'xmlns:o': 'urn:schemas-microsoft-com:office:office', 'xmlns:x': 'urn:schemas-microsoft-com:office:excel' }; module.exports = VmlNotesXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"./vml-shape-xform":45}],45:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var VmlTextboxXform = require('./vml-textbox-xform'); var VmlClientDataXform = require('./vml-client-data-xform'); var VmlShapeXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlShapeXform, _BaseXform); var _super = _createSuper(VmlShapeXform); function VmlShapeXform() { var _this; _classCallCheck(this, VmlShapeXform); _this = _super.call(this); _this.map = { 'v:textbox': new VmlTextboxXform(), 'x:ClientData': new VmlClientDataXform() }; return _this; } _createClass(VmlShapeXform, [{ key: "render", value: function render(xmlStream, model, index) { xmlStream.openNode('v:shape', VmlShapeXform.V_SHAPE_ATTRIBUTES(model, index)); xmlStream.leafNode('v:fill', { color2: 'infoBackground [80]' }); xmlStream.leafNode('v:shadow', { color: 'none [81]', obscured: 't' }); xmlStream.leafNode('v:path', { 'o:connecttype': 'none' }); this.map['v:textbox'].render(xmlStream, model); this.map['x:ClientData'].render(xmlStream, model); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); this.model = { margins: { insetmode: node.attributes['o:insetmode'] }, anchor: '', editAs: '', protection: {} }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model.margins.inset = this.map['v:textbox'].model && this.map['v:textbox'].model.inset; this.model.protection = this.map['x:ClientData'].model && this.map['x:ClientData'].model.protection; this.model.anchor = this.map['x:ClientData'].model && this.map['x:ClientData'].model.anchor; this.model.editAs = this.map['x:ClientData'].model && this.map['x:ClientData'].model.editAs; return false; default: return true; } } }, { key: "tag", get: function get() { return 'v:shape'; } }]); return VmlShapeXform; }(BaseXform); VmlShapeXform.V_SHAPE_ATTRIBUTES = function (model, index) { return { id: "_x0000_s".concat(1025 + index), type: '#_x0000_t202', style: 'position:absolute; margin-left:105.3pt;margin-top:10.5pt;width:97.8pt;height:59.1pt;z-index:1;visibility:hidden', fillcolor: 'infoBackground [80]', strokecolor: 'none [81]', 'o:insetmode': model.note.margins && model.note.margins.insetmode }; }; module.exports = VmlShapeXform; },{"../base-xform":31,"./vml-client-data-xform":43,"./vml-textbox-xform":46}],46:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var VmlTextboxXform = /*#__PURE__*/function (_BaseXform) { _inherits(VmlTextboxXform, _BaseXform); var _super = _createSuper(VmlTextboxXform); function VmlTextboxXform() { _classCallCheck(this, VmlTextboxXform); return _super.apply(this, arguments); } _createClass(VmlTextboxXform, [{ key: "conversionUnit", value: function conversionUnit(value, multiple, unit) { return "".concat(parseFloat(value) * multiple.toFixed(2)).concat(unit); } }, { key: "reverseConversionUnit", value: function reverseConversionUnit(inset) { var _this = this; return (inset || '').split(',').map(function (margin) { return Number(parseFloat(_this.conversionUnit(parseFloat(margin), 0.1, '')).toFixed(2)); }); } }, { key: "render", value: function render(xmlStream, model) { var _this2 = this; var attributes = { style: 'mso-direction-alt:auto' }; if (model && model.note) { var _ref = model.note && model.note.margins, inset = _ref.inset; if (Array.isArray(inset)) { inset = inset.map(function (margin) { return _this2.conversionUnit(margin, 10, 'mm'); }).join(','); } if (inset) { attributes.inset = inset; } } xmlStream.openNode('v:textbox', attributes); xmlStream.leafNode('div', { style: 'text-align:left' }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { inset: this.reverseConversionUnit(node.attributes.inset) }; return true; default: return true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { switch (name) { case this.tag: return false; default: return true; } } }, { key: "tag", get: function get() { return 'v:textbox'; } }]); return VmlTextboxXform; }(BaseXform); module.exports = VmlTextboxXform; },{"../base-xform":31}],47:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('./base-xform'); /* 'virtual' methods used as a form of documentation */ /* eslint-disable class-methods-use-this */ // base class for xforms that are composed of other xforms // offers some default implementations var CompositeXform = /*#__PURE__*/function (_BaseXform) { _inherits(CompositeXform, _BaseXform); var _super = _createSuper(CompositeXform); function CompositeXform() { _classCallCheck(this, CompositeXform); return _super.apply(this, arguments); } _createClass(CompositeXform, [{ key: "createNewModel", value: function createNewModel(node) { return {}; } }, { key: "parseOpen", value: function parseOpen(node) { // Typical pattern for composite xform this.parser = this.parser || this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } if (node.name === this.tag) { this.model = this.createNewModel(node); return true; } return false; } }, { key: "parseText", value: function parseText(text) { // Default implementation. Send text to child parser if (this.parser) { this.parser.parseText(text); } } }, { key: "onParserClose", value: function onParserClose(name, parser) { // parseClose has seen a child parser close // now need to incorporate into this.model somehow this.model[name] = parser.model; } }, { key: "parseClose", value: function parseClose(name) { // Default implementation if (this.parser) { if (!this.parser.parseClose(name)) { this.onParserClose(name, this.parser); this.parser = undefined; } return true; } return name !== this.tag; } }]); return CompositeXform; }(BaseXform); module.exports = CompositeXform; },{"./base-xform":31}],48:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var AppHeadingPairsXform = /*#__PURE__*/function (_BaseXform) { _inherits(AppHeadingPairsXform, _BaseXform); var _super = _createSuper(AppHeadingPairsXform); function AppHeadingPairsXform() { _classCallCheck(this, AppHeadingPairsXform); return _super.apply(this, arguments); } _createClass(AppHeadingPairsXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('HeadingPairs'); xmlStream.openNode('vt:vector', { size: 2, baseType: 'variant' }); xmlStream.openNode('vt:variant'); xmlStream.leafNode('vt:lpstr', undefined, 'Worksheets'); xmlStream.closeNode(); xmlStream.openNode('vt:variant'); xmlStream.leafNode('vt:i4', undefined, model.length); xmlStream.closeNode(); xmlStream.closeNode(); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { // no parsing return node.name === 'HeadingPairs'; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { return name !== 'HeadingPairs'; } }]); return AppHeadingPairsXform; }(BaseXform); module.exports = AppHeadingPairsXform; },{"../base-xform":31}],49:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var AppTitlesOfPartsXform = /*#__PURE__*/function (_BaseXform) { _inherits(AppTitlesOfPartsXform, _BaseXform); var _super = _createSuper(AppTitlesOfPartsXform); function AppTitlesOfPartsXform() { _classCallCheck(this, AppTitlesOfPartsXform); return _super.apply(this, arguments); } _createClass(AppTitlesOfPartsXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('TitlesOfParts'); xmlStream.openNode('vt:vector', { size: model.length, baseType: 'lpstr' }); model.forEach(function (sheet) { xmlStream.leafNode('vt:lpstr', undefined, sheet.name); }); xmlStream.closeNode(); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { // no parsing return node.name === 'TitlesOfParts'; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { return name !== 'TitlesOfParts'; } }]); return AppTitlesOfPartsXform; }(BaseXform); module.exports = AppTitlesOfPartsXform; },{"../base-xform":31}],50:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var StringXform = require('../simple/string-xform'); var AppHeadingPairsXform = require('./app-heading-pairs-xform'); var AppTitleOfPartsXform = require('./app-titles-of-parts-xform'); var AppXform = /*#__PURE__*/function (_BaseXform) { _inherits(AppXform, _BaseXform); var _super = _createSuper(AppXform); function AppXform() { var _this; _classCallCheck(this, AppXform); _this = _super.call(this); _this.map = { Company: new StringXform({ tag: 'Company' }), Manager: new StringXform({ tag: 'Manager' }), HeadingPairs: new AppHeadingPairsXform(), TitleOfParts: new AppTitleOfPartsXform() }; return _this; } _createClass(AppXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('Properties', AppXform.PROPERTY_ATTRIBUTES); xmlStream.leafNode('Application', undefined, 'Microsoft Excel'); xmlStream.leafNode('DocSecurity', undefined, '0'); xmlStream.leafNode('ScaleCrop', undefined, 'false'); this.map.HeadingPairs.render(xmlStream, model.worksheets); this.map.TitleOfParts.render(xmlStream, model.worksheets); this.map.Company.render(xmlStream, model.company || ''); this.map.Manager.render(xmlStream, model.manager); xmlStream.leafNode('LinksUpToDate', undefined, 'false'); xmlStream.leafNode('SharedDoc', undefined, 'false'); xmlStream.leafNode('HyperlinksChanged', undefined, 'false'); xmlStream.leafNode('AppVersion', undefined, '16.0300'); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'Properties': return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } // there's a lot we don't bother to parse return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case 'Properties': this.model = { worksheets: this.map.TitleOfParts.model, company: this.map.Company.model, manager: this.map.Manager.model }; return false; default: return true; } } }]); return AppXform; }(BaseXform); AppXform.DateFormat = function (dt) { return dt.toISOString().replace(/[.]\d{3,6}/, ''); }; AppXform.DateAttrs = { 'xsi:type': 'dcterms:W3CDTF' }; AppXform.PROPERTY_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/officeDocument/2006/extended-properties', 'xmlns:vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes' }; module.exports = AppXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/string-xform":118,"./app-heading-pairs-xform":48,"./app-titles-of-parts-xform":49}],51:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); // used for rendering the [Content_Types].xml file // not used for parsing var ContentTypesXform = /*#__PURE__*/function (_BaseXform) { _inherits(ContentTypesXform, _BaseXform); var _super = _createSuper(ContentTypesXform); function ContentTypesXform() { _classCallCheck(this, ContentTypesXform); return _super.apply(this, arguments); } _createClass(ContentTypesXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('Types', ContentTypesXform.PROPERTY_ATTRIBUTES); var mediaHash = {}; (model.media || []).forEach(function (medium) { if (medium.type === 'image') { var imageType = medium.extension; if (!mediaHash[imageType]) { mediaHash[imageType] = true; xmlStream.leafNode('Default', { Extension: imageType, ContentType: "image/".concat(imageType) }); } } }); xmlStream.leafNode('Default', { Extension: 'rels', ContentType: 'application/vnd.openxmlformats-package.relationships+xml' }); xmlStream.leafNode('Default', { Extension: 'xml', ContentType: 'application/xml' }); xmlStream.leafNode('Override', { PartName: '/xl/workbook.xml', ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml' }); model.worksheets.forEach(function (worksheet) { var name = "/xl/worksheets/sheet".concat(worksheet.id, ".xml"); xmlStream.leafNode('Override', { PartName: name, ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml' }); }); xmlStream.leafNode('Override', { PartName: '/xl/theme/theme1.xml', ContentType: 'application/vnd.openxmlformats-officedocument.theme+xml' }); xmlStream.leafNode('Override', { PartName: '/xl/styles.xml', ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml' }); var hasSharedStrings = model.sharedStrings && model.sharedStrings.count; if (hasSharedStrings) { xmlStream.leafNode('Override', { PartName: '/xl/sharedStrings.xml', ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml' }); } if (model.tables) { model.tables.forEach(function (table) { xmlStream.leafNode('Override', { PartName: "/xl/tables/".concat(table.target), ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml' }); }); } if (model.drawings) { model.drawings.forEach(function (drawing) { xmlStream.leafNode('Override', { PartName: "/xl/drawings/".concat(drawing.name, ".xml"), ContentType: 'application/vnd.openxmlformats-officedocument.drawing+xml' }); }); } if (model.commentRefs) { xmlStream.leafNode('Default', { Extension: 'vml', ContentType: 'application/vnd.openxmlformats-officedocument.vmlDrawing' }); model.commentRefs.forEach(function (_ref) { var commentName = _ref.commentName; xmlStream.leafNode('Override', { PartName: "/xl/".concat(commentName, ".xml"), ContentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml' }); }); } xmlStream.leafNode('Override', { PartName: '/docProps/core.xml', ContentType: 'application/vnd.openxmlformats-package.core-properties+xml' }); xmlStream.leafNode('Override', { PartName: '/docProps/app.xml', ContentType: 'application/vnd.openxmlformats-officedocument.extended-properties+xml' }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen() { return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return ContentTypesXform; }(BaseXform); ContentTypesXform.PROPERTY_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/package/2006/content-types' }; module.exports = ContentTypesXform; },{"../../../utils/xml-stream":27,"../base-xform":31}],52:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var DateXform = require('../simple/date-xform'); var StringXform = require('../simple/string-xform'); var IntegerXform = require('../simple/integer-xform'); var CoreXform = /*#__PURE__*/function (_BaseXform) { _inherits(CoreXform, _BaseXform); var _super = _createSuper(CoreXform); function CoreXform() { var _this; _classCallCheck(this, CoreXform); _this = _super.call(this); _this.map = { 'dc:creator': new StringXform({ tag: 'dc:creator' }), 'dc:title': new StringXform({ tag: 'dc:title' }), 'dc:subject': new StringXform({ tag: 'dc:subject' }), 'dc:description': new StringXform({ tag: 'dc:description' }), 'dc:identifier': new StringXform({ tag: 'dc:identifier' }), 'dc:language': new StringXform({ tag: 'dc:language' }), 'cp:keywords': new StringXform({ tag: 'cp:keywords' }), 'cp:category': new StringXform({ tag: 'cp:category' }), 'cp:lastModifiedBy': new StringXform({ tag: 'cp:lastModifiedBy' }), 'cp:lastPrinted': new DateXform({ tag: 'cp:lastPrinted', format: CoreXform.DateFormat }), 'cp:revision': new IntegerXform({ tag: 'cp:revision' }), 'cp:version': new StringXform({ tag: 'cp:version' }), 'cp:contentStatus': new StringXform({ tag: 'cp:contentStatus' }), 'cp:contentType': new StringXform({ tag: 'cp:contentType' }), 'dcterms:created': new DateXform({ tag: 'dcterms:created', attrs: CoreXform.DateAttrs, format: CoreXform.DateFormat }), 'dcterms:modified': new DateXform({ tag: 'dcterms:modified', attrs: CoreXform.DateAttrs, format: CoreXform.DateFormat }) }; return _this; } _createClass(CoreXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('cp:coreProperties', CoreXform.CORE_PROPERTY_ATTRIBUTES); this.map['dc:creator'].render(xmlStream, model.creator); this.map['dc:title'].render(xmlStream, model.title); this.map['dc:subject'].render(xmlStream, model.subject); this.map['dc:description'].render(xmlStream, model.description); this.map['dc:identifier'].render(xmlStream, model.identifier); this.map['dc:language'].render(xmlStream, model.language); this.map['cp:keywords'].render(xmlStream, model.keywords); this.map['cp:category'].render(xmlStream, model.category); this.map['cp:lastModifiedBy'].render(xmlStream, model.lastModifiedBy); this.map['cp:lastPrinted'].render(xmlStream, model.lastPrinted); this.map['cp:revision'].render(xmlStream, model.revision); this.map['cp:version'].render(xmlStream, model.version); this.map['cp:contentStatus'].render(xmlStream, model.contentStatus); this.map['cp:contentType'].render(xmlStream, model.contentType); this.map['dcterms:created'].render(xmlStream, model.created); this.map['dcterms:modified'].render(xmlStream, model.modified); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'cp:coreProperties': case 'coreProperties': return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(node))); } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case 'cp:coreProperties': case 'coreProperties': this.model = { creator: this.map['dc:creator'].model, title: this.map['dc:title'].model, subject: this.map['dc:subject'].model, description: this.map['dc:description'].model, identifier: this.map['dc:identifier'].model, language: this.map['dc:language'].model, keywords: this.map['cp:keywords'].model, category: this.map['cp:category'].model, lastModifiedBy: this.map['cp:lastModifiedBy'].model, lastPrinted: this.map['cp:lastPrinted'].model, revision: this.map['cp:revision'].model, contentStatus: this.map['cp:contentStatus'].model, contentType: this.map['cp:contentType'].model, created: this.map['dcterms:created'].model, modified: this.map['dcterms:modified'].model }; return false; default: throw new Error("Unexpected xml node in parseClose: ".concat(name)); } } }]); return CoreXform; }(BaseXform); CoreXform.DateFormat = function (dt) { return dt.toISOString().replace(/[.]\d{3}/, ''); }; CoreXform.DateAttrs = { 'xsi:type': 'dcterms:W3CDTF' }; CoreXform.CORE_PROPERTY_ATTRIBUTES = { 'xmlns:cp': 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', 'xmlns:dc': 'http://purl.org/dc/elements/1.1/', 'xmlns:dcterms': 'http://purl.org/dc/terms/', 'xmlns:dcmitype': 'http://purl.org/dc/dcmitype/', 'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance' }; module.exports = CoreXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"../simple/date-xform":116,"../simple/integer-xform":117,"../simple/string-xform":118}],53:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var RelationshipXform = /*#__PURE__*/function (_BaseXform) { _inherits(RelationshipXform, _BaseXform); var _super = _createSuper(RelationshipXform); function RelationshipXform() { _classCallCheck(this, RelationshipXform); return _super.apply(this, arguments); } _createClass(RelationshipXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('Relationship', model); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'Relationship': this.model = node.attributes; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return RelationshipXform; }(BaseXform); module.exports = RelationshipXform; },{"../base-xform":31}],54:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var RelationshipXform = require('./relationship-xform'); var RelationshipsXform = /*#__PURE__*/function (_BaseXform) { _inherits(RelationshipsXform, _BaseXform); var _super = _createSuper(RelationshipsXform); function RelationshipsXform() { var _this; _classCallCheck(this, RelationshipsXform); _this = _super.call(this); _this.map = { Relationship: new RelationshipXform() }; return _this; } _createClass(RelationshipsXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; model = model || this._values; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('Relationships', RelationshipsXform.RELATIONSHIPS_ATTRIBUTES); model.forEach(function (relationship) { _this2.map.Relationship.render(xmlStream, relationship); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'Relationships': this.model = []; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(node))); } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.push(this.parser.model); this.parser = undefined; } return true; } switch (name) { case 'Relationships': return false; default: throw new Error("Unexpected xml node in parseClose: ".concat(name)); } } }]); return RelationshipsXform; }(BaseXform); RelationshipsXform.RELATIONSHIPS_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/package/2006/relationships' }; module.exports = RelationshipsXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"./relationship-xform":53}],55:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var BaseCellAnchorXform = /*#__PURE__*/function (_BaseXform) { _inherits(BaseCellAnchorXform, _BaseXform); var _super = _createSuper(BaseCellAnchorXform); function BaseCellAnchorXform() { _classCallCheck(this, BaseCellAnchorXform); return _super.apply(this, arguments); } _createClass(BaseCellAnchorXform, [{ key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); this.model = { range: { editAs: node.attributes.editAs || 'oneCell' } }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "reconcilePicture", value: function reconcilePicture(model, options) { if (model && model.rId) { var rel = options.rels[model.rId]; var match = rel.Target.match(/.*\/media\/(.+[.][a-zA-Z]{3,4})/); if (match) { var name = match[1]; var mediaId = options.mediaIndex[name]; return options.media[mediaId]; } } return undefined; } }]); return BaseCellAnchorXform; }(BaseXform); module.exports = BaseCellAnchorXform; },{"../base-xform":31}],56:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var BlipXform = require('./blip-xform'); var BlipFillXform = /*#__PURE__*/function (_BaseXform) { _inherits(BlipFillXform, _BaseXform); var _super = _createSuper(BlipFillXform); function BlipFillXform() { var _this; _classCallCheck(this, BlipFillXform); _this = _super.call(this); _this.map = { 'a:blip': new BlipXform() }; return _this; } _createClass(BlipFillXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); this.map['a:blip'].render(xmlStream, model); // TODO: options for this + parsing xmlStream.openNode('a:stretch'); xmlStream.leafNode('a:fillRect'); xmlStream.closeNode(); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model = this.map['a:blip'].model; return false; default: return true; } } }, { key: "tag", get: function get() { return 'xdr:blipFill'; } }]); return BlipFillXform; }(BaseXform); module.exports = BlipFillXform; },{"../base-xform":31,"./blip-xform":57}],57:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var BlipXform = /*#__PURE__*/function (_BaseXform) { _inherits(BlipXform, _BaseXform); var _super = _createSuper(BlipXform); function BlipXform() { _classCallCheck(this, BlipXform); return _super.apply(this, arguments); } _createClass(BlipXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', 'r:embed': model.rId, cstate: 'print' }); // TODO: handle children (e.g. a:extLst=>a:ext=>a14:useLocalDpi } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { rId: node.attributes['r:embed'] }; return true; default: return true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { switch (name) { case this.tag: return false; default: // unprocessed internal nodes return true; } } }, { key: "tag", get: function get() { return 'a:blip'; } }]); return BlipXform; }(BaseXform); module.exports = BlipXform; },{"../base-xform":31}],58:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var CNvPicPrXform = /*#__PURE__*/function (_BaseXform) { _inherits(CNvPicPrXform, _BaseXform); var _super = _createSuper(CNvPicPrXform); function CNvPicPrXform() { _classCallCheck(this, CNvPicPrXform); return _super.apply(this, arguments); } _createClass(CNvPicPrXform, [{ key: "render", value: function render(xmlStream) { xmlStream.openNode(this.tag); xmlStream.leafNode('a:picLocks', { noChangeAspect: '1' }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: return true; default: return true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { switch (name) { case this.tag: return false; default: // unprocessed internal nodes return true; } } }, { key: "tag", get: function get() { return 'xdr:cNvPicPr'; } }]); return CNvPicPrXform; }(BaseXform); module.exports = CNvPicPrXform; },{"../base-xform":31}],59:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var HlickClickXform = require('./hlink-click-xform'); var ExtLstXform = require('./ext-lst-xform'); var CNvPrXform = /*#__PURE__*/function (_BaseXform) { _inherits(CNvPrXform, _BaseXform); var _super = _createSuper(CNvPrXform); function CNvPrXform() { var _this; _classCallCheck(this, CNvPrXform); _this = _super.call(this); _this.map = { 'a:hlinkClick': new HlickClickXform(), 'a:extLst': new ExtLstXform() }; return _this; } _createClass(CNvPrXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { id: model.index, name: "Picture ".concat(model.index) }); this.map['a:hlinkClick'].render(xmlStream, model); this.map['a:extLst'].render(xmlStream, model); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model = this.map['a:hlinkClick'].model; return false; default: return true; } } }, { key: "tag", get: function get() { return 'xdr:cNvPr'; } }]); return CNvPrXform; }(BaseXform); module.exports = CNvPrXform; },{"../base-xform":31,"./ext-lst-xform":62,"./hlink-click-xform":64}],60:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var IntegerXform = require('../simple/integer-xform'); var CellPositionXform = /*#__PURE__*/function (_BaseXform) { _inherits(CellPositionXform, _BaseXform); var _super = _createSuper(CellPositionXform); function CellPositionXform(options) { var _this; _classCallCheck(this, CellPositionXform); _this = _super.call(this); _this.tag = options.tag; _this.map = { 'xdr:col': new IntegerXform({ tag: 'xdr:col', zero: true }), 'xdr:colOff': new IntegerXform({ tag: 'xdr:colOff', zero: true }), 'xdr:row': new IntegerXform({ tag: 'xdr:row', zero: true }), 'xdr:rowOff': new IntegerXform({ tag: 'xdr:rowOff', zero: true }) }; return _this; } _createClass(CellPositionXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); this.map['xdr:col'].render(xmlStream, model.nativeCol); this.map['xdr:colOff'].render(xmlStream, model.nativeColOff); this.map['xdr:row'].render(xmlStream, model.nativeRow); this.map['xdr:rowOff'].render(xmlStream, model.nativeRowOff); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model = { nativeCol: this.map['xdr:col'].model, nativeColOff: this.map['xdr:colOff'].model, nativeRow: this.map['xdr:row'].model, nativeRowOff: this.map['xdr:rowOff'].model }; return false; default: // not quite sure how we get here! return true; } } }]); return CellPositionXform; }(BaseXform); module.exports = CellPositionXform; },{"../base-xform":31,"../simple/integer-xform":117}],61:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var colCache = require('../../../utils/col-cache'); var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var TwoCellAnchorXform = require('./two-cell-anchor-xform'); var OneCellAnchorXform = require('./one-cell-anchor-xform'); function getAnchorType(model) { var range = typeof model.range === 'string' ? colCache.decode(model.range) : model.range; return range.br ? 'xdr:twoCellAnchor' : 'xdr:oneCellAnchor'; } var DrawingXform = /*#__PURE__*/function (_BaseXform) { _inherits(DrawingXform, _BaseXform); var _super = _createSuper(DrawingXform); function DrawingXform() { var _this; _classCallCheck(this, DrawingXform); _this = _super.call(this); _this.map = { 'xdr:twoCellAnchor': new TwoCellAnchorXform(), 'xdr:oneCellAnchor': new OneCellAnchorXform() }; return _this; } _createClass(DrawingXform, [{ key: "prepare", value: function prepare(model) { var _this2 = this; model.anchors.forEach(function (item, index) { item.anchorType = getAnchorType(item); var anchor = _this2.map[item.anchorType]; anchor.prepare(item, { index: index }); }); } }, { key: "render", value: function render(xmlStream, model) { var _this3 = this; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode(this.tag, DrawingXform.DRAWING_ATTRIBUTES); model.anchors.forEach(function (item) { var anchor = _this3.map[item.anchorType]; anchor.render(xmlStream, item); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); this.model = { anchors: [] }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.anchors.push(this.parser.model); this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: // could be some unrecognised tags return true; } } }, { key: "reconcile", value: function reconcile(model, options) { var _this4 = this; model.anchors.forEach(function (anchor) { if (anchor.br) { _this4.map['xdr:twoCellAnchor'].reconcile(anchor, options); } else { _this4.map['xdr:oneCellAnchor'].reconcile(anchor, options); } }); } }, { key: "tag", get: function get() { return 'xdr:wsDr'; } }]); return DrawingXform; }(BaseXform); DrawingXform.DRAWING_ATTRIBUTES = { 'xmlns:xdr': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing', 'xmlns:a': 'http://schemas.openxmlformats.org/drawingml/2006/main' }; module.exports = DrawingXform; },{"../../../utils/col-cache":19,"../../../utils/xml-stream":27,"../base-xform":31,"./one-cell-anchor-xform":66,"./two-cell-anchor-xform":69}],62:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var ExtLstXform = /*#__PURE__*/function (_BaseXform) { _inherits(ExtLstXform, _BaseXform); var _super = _createSuper(ExtLstXform); function ExtLstXform() { _classCallCheck(this, ExtLstXform); return _super.apply(this, arguments); } _createClass(ExtLstXform, [{ key: "render", value: function render(xmlStream) { xmlStream.openNode(this.tag); xmlStream.openNode('a:ext', { uri: '{FF2B5EF4-FFF2-40B4-BE49-F238E27FC236}' }); xmlStream.leafNode('a16:creationId', { 'xmlns:a16': 'http://schemas.microsoft.com/office/drawing/2014/main', id: '{00000000-0008-0000-0000-000002000000}' }); xmlStream.closeNode(); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: return true; default: return true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { switch (name) { case this.tag: return false; default: // unprocessed internal nodes return true; } } }, { key: "tag", get: function get() { return 'a:extLst'; } }]); return ExtLstXform; }(BaseXform); module.exports = ExtLstXform; },{"../base-xform":31}],63:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); /** https://en.wikipedia.org/wiki/Office_Open_XML_file_formats#DrawingML */ var EMU_PER_PIXEL_AT_96_DPI = 9525; var ExtXform = /*#__PURE__*/function (_BaseXform) { _inherits(ExtXform, _BaseXform); var _super = _createSuper(ExtXform); function ExtXform(options) { var _this; _classCallCheck(this, ExtXform); _this = _super.call(this); _this.tag = options.tag; _this.map = {}; return _this; } _createClass(ExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); var width = Math.floor(model.width * EMU_PER_PIXEL_AT_96_DPI); var height = Math.floor(model.height * EMU_PER_PIXEL_AT_96_DPI); xmlStream.addAttribute('cx', width); xmlStream.addAttribute('cy', height); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { this.model = { width: parseInt(node.attributes.cx || '0', 10) / EMU_PER_PIXEL_AT_96_DPI, height: parseInt(node.attributes.cy || '0', 10) / EMU_PER_PIXEL_AT_96_DPI }; return true; } return false; } }, { key: "parseText", value: function parseText() /* text */ {} }, { key: "parseClose", value: function parseClose() /* name */ { return false; } }]); return ExtXform; }(BaseXform); module.exports = ExtXform; },{"../base-xform":31}],64:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var HLinkClickXform = /*#__PURE__*/function (_BaseXform) { _inherits(HLinkClickXform, _BaseXform); var _super = _createSuper(HLinkClickXform); function HLinkClickXform() { _classCallCheck(this, HLinkClickXform); return _super.apply(this, arguments); } _createClass(HLinkClickXform, [{ key: "render", value: function render(xmlStream, model) { if (!(model.hyperlinks && model.hyperlinks.rId)) { return; } xmlStream.leafNode(this.tag, { 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', 'r:id': model.hyperlinks.rId, tooltip: model.hyperlinks.tooltip }); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { hyperlinks: { rId: node.attributes['r:id'], tooltip: node.attributes.tooltip } }; return true; default: return true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'a:hlinkClick'; } }]); return HLinkClickXform; }(BaseXform); module.exports = HLinkClickXform; },{"../base-xform":31}],65:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var CNvPrXform = require('./c-nv-pr-xform'); var CNvPicPrXform = require('./c-nv-pic-pr-xform'); var NvPicPrXform = /*#__PURE__*/function (_BaseXform) { _inherits(NvPicPrXform, _BaseXform); var _super = _createSuper(NvPicPrXform); function NvPicPrXform() { var _this; _classCallCheck(this, NvPicPrXform); _this = _super.call(this); _this.map = { 'xdr:cNvPr': new CNvPrXform(), 'xdr:cNvPicPr': new CNvPicPrXform() }; return _this; } _createClass(NvPicPrXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); this.map['xdr:cNvPr'].render(xmlStream, model); this.map['xdr:cNvPicPr'].render(xmlStream, model); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model = this.map['xdr:cNvPr'].model; return false; default: return true; } } }, { key: "tag", get: function get() { return 'xdr:nvPicPr'; } }]); return NvPicPrXform; }(BaseXform); module.exports = NvPicPrXform; },{"../base-xform":31,"./c-nv-pic-pr-xform":58,"./c-nv-pr-xform":59}],66:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseCellAnchorXform = require('./base-cell-anchor-xform'); var StaticXform = require('../static-xform'); var CellPositionXform = require('./cell-position-xform'); var ExtXform = require('./ext-xform'); var PicXform = require('./pic-xform'); var OneCellAnchorXform = /*#__PURE__*/function (_BaseCellAnchorXform) { _inherits(OneCellAnchorXform, _BaseCellAnchorXform); var _super = _createSuper(OneCellAnchorXform); function OneCellAnchorXform() { var _this; _classCallCheck(this, OneCellAnchorXform); _this = _super.call(this); _this.map = { 'xdr:from': new CellPositionXform({ tag: 'xdr:from' }), 'xdr:ext': new ExtXform({ tag: 'xdr:ext' }), 'xdr:pic': new PicXform(), 'xdr:clientData': new StaticXform({ tag: 'xdr:clientData' }) }; return _this; } _createClass(OneCellAnchorXform, [{ key: "prepare", value: function prepare(model, options) { this.map['xdr:pic'].prepare(model.picture, options); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { editAs: model.range.editAs || 'oneCell' }); this.map['xdr:from'].render(xmlStream, model.range.tl); this.map['xdr:ext'].render(xmlStream, model.range.ext); this.map['xdr:pic'].render(xmlStream, model.picture); this.map['xdr:clientData'].render(xmlStream, {}); xmlStream.closeNode(); } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model.range.tl = this.map['xdr:from'].model; this.model.range.ext = this.map['xdr:ext'].model; this.model.picture = this.map['xdr:pic'].model; return false; default: // could be some unrecognised tags return true; } } }, { key: "reconcile", value: function reconcile(model, options) { model.medium = this.reconcilePicture(model.picture, options); } }, { key: "tag", get: function get() { return 'xdr:oneCellAnchor'; } }]); return OneCellAnchorXform; }(BaseCellAnchorXform); module.exports = OneCellAnchorXform; },{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./ext-xform":63,"./pic-xform":67}],67:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var StaticXform = require('../static-xform'); var BlipFillXform = require('./blip-fill-xform'); var NvPicPrXform = require('./nv-pic-pr-xform'); var spPrJSON = require('./sp-pr'); var PicXform = /*#__PURE__*/function (_BaseXform) { _inherits(PicXform, _BaseXform); var _super = _createSuper(PicXform); function PicXform() { var _this; _classCallCheck(this, PicXform); _this = _super.call(this); _this.map = { 'xdr:nvPicPr': new NvPicPrXform(), 'xdr:blipFill': new BlipFillXform(), 'xdr:spPr': new StaticXform(spPrJSON) }; return _this; } _createClass(PicXform, [{ key: "prepare", value: function prepare(model, options) { model.index = options.index + 1; } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); this.map['xdr:nvPicPr'].render(xmlStream, model); this.map['xdr:blipFill'].render(xmlStream, model); this.map['xdr:spPr'].render(xmlStream, model); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.reset(); break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.mergeModel(this.parser.model); this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: // not quite sure how we get here! return true; } } }, { key: "tag", get: function get() { return 'xdr:pic'; } }]); return PicXform; }(BaseXform); module.exports = PicXform; },{"../base-xform":31,"../static-xform":119,"./blip-fill-xform":56,"./nv-pic-pr-xform":65,"./sp-pr":68}],68:[function(require,module,exports){ "use strict"; module.exports = { tag: 'xdr:spPr', c: [{ tag: 'a:xfrm', c: [{ tag: 'a:off', $: { x: '0', y: '0' } }, { tag: 'a:ext', $: { cx: '0', cy: '0' } }] }, { tag: 'a:prstGeom', $: { prst: 'rect' }, c: [{ tag: 'a:avLst' }] }] }; },{}],69:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseCellAnchorXform = require('./base-cell-anchor-xform'); var StaticXform = require('../static-xform'); var CellPositionXform = require('./cell-position-xform'); var PicXform = require('./pic-xform'); var TwoCellAnchorXform = /*#__PURE__*/function (_BaseCellAnchorXform) { _inherits(TwoCellAnchorXform, _BaseCellAnchorXform); var _super = _createSuper(TwoCellAnchorXform); function TwoCellAnchorXform() { var _this; _classCallCheck(this, TwoCellAnchorXform); _this = _super.call(this); _this.map = { 'xdr:from': new CellPositionXform({ tag: 'xdr:from' }), 'xdr:to': new CellPositionXform({ tag: 'xdr:to' }), 'xdr:pic': new PicXform(), 'xdr:clientData': new StaticXform({ tag: 'xdr:clientData' }) }; return _this; } _createClass(TwoCellAnchorXform, [{ key: "prepare", value: function prepare(model, options) { this.map['xdr:pic'].prepare(model.picture, options); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { editAs: model.range.editAs || 'oneCell' }); this.map['xdr:from'].render(xmlStream, model.range.tl); this.map['xdr:to'].render(xmlStream, model.range.br); this.map['xdr:pic'].render(xmlStream, model.picture); this.map['xdr:clientData'].render(xmlStream, {}); xmlStream.closeNode(); } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model.range.tl = this.map['xdr:from'].model; this.model.range.br = this.map['xdr:to'].model; this.model.picture = this.map['xdr:pic'].model; return false; default: // could be some unrecognised tags return true; } } }, { key: "reconcile", value: function reconcile(model, options) { model.medium = this.reconcilePicture(model.picture, options); } }, { key: "tag", get: function get() { return 'xdr:twoCellAnchor'; } }]); return TwoCellAnchorXform; }(BaseCellAnchorXform); module.exports = TwoCellAnchorXform; },{"../static-xform":119,"./base-cell-anchor-xform":55,"./cell-position-xform":60,"./pic-xform":67}],70:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('./base-xform'); var ListXform = /*#__PURE__*/function (_BaseXform) { _inherits(ListXform, _BaseXform); var _super = _createSuper(ListXform); function ListXform(options) { var _this; _classCallCheck(this, ListXform); _this = _super.call(this); _this.tag = options.tag; _this.always = !!options.always; _this.count = options.count; _this.empty = options.empty; _this.$count = options.$count || 'count'; _this.$ = options.$; _this.childXform = options.childXform; _this.maxItems = options.maxItems; return _this; } _createClass(ListXform, [{ key: "prepare", value: function prepare(model, options) { var childXform = this.childXform; if (model) { model.forEach(function (childModel, index) { options.index = index; childXform.prepare(childModel, options); }); } } }, { key: "render", value: function render(xmlStream, model) { if (this.always || model && model.length) { xmlStream.openNode(this.tag, this.$); if (this.count) { xmlStream.addAttribute(this.$count, model && model.length || 0); } var childXform = this.childXform; (model || []).forEach(function (childModel, index) { childXform.render(xmlStream, childModel, index); }); xmlStream.closeNode(); } else if (this.empty) { xmlStream.leafNode(this.tag); } } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.model = []; return true; default: if (this.childXform.parseOpen(node)) { this.parser = this.childXform; return true; } return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.push(this.parser.model); this.parser = undefined; if (this.maxItems && this.model.length > this.maxItems) { throw new Error("Max ".concat(this.childXform.tag, " count (").concat(this.maxItems, ") exceeded")); } } return true; } return false; } }, { key: "reconcile", value: function reconcile(model, options) { if (model) { var childXform = this.childXform; model.forEach(function (childModel) { childXform.reconcile(childModel, options); }); } } }]); return ListXform; }(BaseXform); module.exports = ListXform; },{"./base-xform":31}],71:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var colCache = require('../../../utils/col-cache'); var BaseXform = require('../base-xform'); var AutoFilterXform = /*#__PURE__*/function (_BaseXform) { _inherits(AutoFilterXform, _BaseXform); var _super = _createSuper(AutoFilterXform); function AutoFilterXform() { _classCallCheck(this, AutoFilterXform); return _super.apply(this, arguments); } _createClass(AutoFilterXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { if (typeof model === 'string') { // assume range xmlStream.leafNode('autoFilter', { ref: model }); } else { var getAddress = function getAddress(addr) { if (typeof addr === 'string') { return addr; } return colCache.getAddress(addr.row, addr.column).address; }; var firstAddress = getAddress(model.from); var secondAddress = getAddress(model.to); if (firstAddress && secondAddress) { xmlStream.leafNode('autoFilter', { ref: "".concat(firstAddress, ":").concat(secondAddress) }); } } } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'autoFilter') { this.model = node.attributes.ref; } } }, { key: "tag", get: function get() { return 'autoFilter'; } }]); return AutoFilterXform; }(BaseXform); module.exports = AutoFilterXform; },{"../../../utils/col-cache":19,"../base-xform":31}],72:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var utils = require('../../../utils/utils'); var BaseXform = require('../base-xform'); var Range = require('../../../doc/range'); var Enums = require('../../../doc/enums'); var RichTextXform = require('../strings/rich-text-xform'); function getValueType(v) { if (v === null || v === undefined) { return Enums.ValueType.Null; } if (v instanceof String || typeof v === 'string') { return Enums.ValueType.String; } if (typeof v === 'number') { return Enums.ValueType.Number; } if (typeof v === 'boolean') { return Enums.ValueType.Boolean; } if (v instanceof Date) { return Enums.ValueType.Date; } if (v.text && v.hyperlink) { return Enums.ValueType.Hyperlink; } if (v.formula) { return Enums.ValueType.Formula; } if (v.error) { return Enums.ValueType.Error; } throw new Error('I could not understand type of value'); } function getEffectiveCellType(cell) { switch (cell.type) { case Enums.ValueType.Formula: return getValueType(cell.result); default: return cell.type; } } var CellXform = /*#__PURE__*/function (_BaseXform) { _inherits(CellXform, _BaseXform); var _super = _createSuper(CellXform); function CellXform() { var _this; _classCallCheck(this, CellXform); _this = _super.call(this); _this.richTextXForm = new RichTextXform(); return _this; } _createClass(CellXform, [{ key: "prepare", value: function prepare(model, options) { var styleId = options.styles.addStyleModel(model.style || {}, getEffectiveCellType(model)); if (styleId) { model.styleId = styleId; } if (model.comment) { options.comments.push(_objectSpread(_objectSpread({}, model.comment), {}, { ref: model.address })); } switch (model.type) { case Enums.ValueType.String: case Enums.ValueType.RichText: if (options.sharedStrings) { model.ssId = options.sharedStrings.add(model.value); } break; case Enums.ValueType.Date: if (options.date1904) { model.date1904 = true; } break; case Enums.ValueType.Hyperlink: if (options.sharedStrings && model.text !== undefined && model.text !== null) { model.ssId = options.sharedStrings.add(model.text); } options.hyperlinks.push({ address: model.address, target: model.hyperlink, tooltip: model.tooltip }); break; case Enums.ValueType.Merge: options.merges.add(model); break; case Enums.ValueType.Formula: if (options.date1904) { // in case valueType is date model.date1904 = true; } if (model.shareType === 'shared') { model.si = options.siFormulae++; } if (model.formula) { options.formulae[model.address] = model; } else if (model.sharedFormula) { var master = options.formulae[model.sharedFormula]; if (!master) { throw new Error("Shared Formula master must exist above and or left of clone for cell ".concat(model.address)); } if (master.si === undefined) { master.shareType = 'shared'; master.si = options.siFormulae++; master.range = new Range(master.address, model.address); } else if (master.range) { master.range.expandToAddress(model.address); } model.si = master.si; } break; default: break; } } }, { key: "renderFormula", value: function renderFormula(xmlStream, model) { var attrs = null; switch (model.shareType) { case 'shared': attrs = { t: 'shared', ref: model.ref || model.range.range, si: model.si }; break; case 'array': attrs = { t: 'array', ref: model.ref }; break; default: if (model.si !== undefined) { attrs = { t: 'shared', si: model.si }; } break; } switch (getValueType(model.result)) { case Enums.ValueType.Null: // ? xmlStream.leafNode('f', attrs, model.formula); break; case Enums.ValueType.String: // oddly, formula results don't ever use shared strings xmlStream.addAttribute('t', 'str'); xmlStream.leafNode('f', attrs, model.formula); xmlStream.leafNode('v', null, model.result); break; case Enums.ValueType.Number: xmlStream.leafNode('f', attrs, model.formula); xmlStream.leafNode('v', null, model.result); break; case Enums.ValueType.Boolean: xmlStream.addAttribute('t', 'b'); xmlStream.leafNode('f', attrs, model.formula); xmlStream.leafNode('v', null, model.result ? 1 : 0); break; case Enums.ValueType.Error: xmlStream.addAttribute('t', 'e'); xmlStream.leafNode('f', attrs, model.formula); xmlStream.leafNode('v', null, model.result.error); break; case Enums.ValueType.Date: xmlStream.leafNode('f', attrs, model.formula); xmlStream.leafNode('v', null, utils.dateToExcel(model.result, model.date1904)); break; // case Enums.ValueType.Hyperlink: // ?? // case Enums.ValueType.Formula: default: throw new Error('I could not understand type of value'); } } }, { key: "render", value: function render(xmlStream, model) { var _this2 = this; if (model.type === Enums.ValueType.Null && !model.styleId) { // if null and no style, exit return; } xmlStream.openNode('c'); xmlStream.addAttribute('r', model.address); if (model.styleId) { xmlStream.addAttribute('s', model.styleId); } switch (model.type) { case Enums.ValueType.Null: break; case Enums.ValueType.Number: xmlStream.leafNode('v', null, model.value); break; case Enums.ValueType.Boolean: xmlStream.addAttribute('t', 'b'); xmlStream.leafNode('v', null, model.value ? '1' : '0'); break; case Enums.ValueType.Error: xmlStream.addAttribute('t', 'e'); xmlStream.leafNode('v', null, model.value.error); break; case Enums.ValueType.String: case Enums.ValueType.RichText: if (model.ssId !== undefined) { xmlStream.addAttribute('t', 's'); xmlStream.leafNode('v', null, model.ssId); } else if (model.value && model.value.richText) { xmlStream.addAttribute('t', 'inlineStr'); xmlStream.openNode('is'); model.value.richText.forEach(function (text) { _this2.richTextXForm.render(xmlStream, text); }); xmlStream.closeNode('is'); } else { xmlStream.addAttribute('t', 'str'); xmlStream.leafNode('v', null, model.value); } break; case Enums.ValueType.Date: xmlStream.leafNode('v', null, utils.dateToExcel(model.value, model.date1904)); break; case Enums.ValueType.Hyperlink: if (model.ssId !== undefined) { xmlStream.addAttribute('t', 's'); xmlStream.leafNode('v', null, model.ssId); } else { xmlStream.addAttribute('t', 'str'); xmlStream.leafNode('v', null, model.text); } break; case Enums.ValueType.Formula: this.renderFormula(xmlStream, model); break; case Enums.ValueType.Merge: // nothing to add break; default: break; } xmlStream.closeNode(); // } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'c': // const address = colCache.decodeAddress(node.attributes.r); this.model = { address: node.attributes.r }; this.t = node.attributes.t; if (node.attributes.s) { this.model.styleId = parseInt(node.attributes.s, 10); } return true; case 'f': this.currentNode = 'f'; this.model.si = node.attributes.si; this.model.shareType = node.attributes.t; this.model.ref = node.attributes.ref; return true; case 'v': this.currentNode = 'v'; return true; case 't': this.currentNode = 't'; return true; case 'r': this.parser = this.richTextXForm; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); return; } switch (this.currentNode) { case 'f': this.model.formula = this.model.formula ? this.model.formula + text : text; break; case 'v': case 't': if (this.model.value && this.model.value.richText) { this.model.value.richText.text = this.model.value.richText.text ? this.model.value.richText.text + text : text; } else { this.model.value = this.model.value ? this.model.value + text : text; } break; default: break; } } }, { key: "parseClose", value: function parseClose(name) { switch (name) { case 'c': { var model = this.model; // first guess on cell type if (model.formula || model.shareType) { model.type = Enums.ValueType.Formula; if (model.value) { if (this.t === 'str') { model.result = utils.xmlDecode(model.value); } else if (this.t === 'b') { model.result = parseInt(model.value, 10) !== 0; } else if (this.t === 'e') { model.result = { error: model.value }; } else { model.result = parseFloat(model.value); } model.value = undefined; } } else if (model.value !== undefined) { switch (this.t) { case 's': model.type = Enums.ValueType.String; model.value = parseInt(model.value, 10); break; case 'str': model.type = Enums.ValueType.String; model.value = utils.xmlDecode(model.value); break; case 'inlineStr': model.type = Enums.ValueType.String; break; case 'b': model.type = Enums.ValueType.Boolean; model.value = parseInt(model.value, 10) !== 0; break; case 'e': model.type = Enums.ValueType.Error; model.value = { error: model.value }; break; default: model.type = Enums.ValueType.Number; model.value = parseFloat(model.value); break; } } else if (model.styleId) { model.type = Enums.ValueType.Null; } else { model.type = Enums.ValueType.Merge; } return false; } case 'f': case 'v': case 'is': this.currentNode = undefined; return true; case 't': if (this.parser) { this.parser.parseClose(name); return true; } this.currentNode = undefined; return true; case 'r': this.model.value = this.model.value || {}; this.model.value.richText = this.model.value.richText || []; this.model.value.richText.push(this.parser.model); this.parser = undefined; this.currentNode = undefined; return true; default: if (this.parser) { this.parser.parseClose(name); return true; } return false; } } }, { key: "reconcile", value: function reconcile(model, options) { var style = model.styleId && options.styles && options.styles.getStyleModel(model.styleId); if (style) { model.style = style; } if (model.styleId !== undefined) { model.styleId = undefined; } switch (model.type) { case Enums.ValueType.String: if (typeof model.value === 'number') { if (options.sharedStrings) { model.value = options.sharedStrings.getString(model.value); } } if (model.value.richText) { model.type = Enums.ValueType.RichText; } break; case Enums.ValueType.Number: if (style && utils.isDateFmt(style.numFmt)) { model.type = Enums.ValueType.Date; model.value = utils.excelToDate(model.value, options.date1904); } break; case Enums.ValueType.Formula: if (model.result !== undefined && style && utils.isDateFmt(style.numFmt)) { model.result = utils.excelToDate(model.result, options.date1904); } if (model.shareType === 'shared') { if (model.ref) { // master options.formulae[model.si] = model.address; } else { // slave model.sharedFormula = options.formulae[model.si]; delete model.shareType; } delete model.si; } break; default: break; } // look for hyperlink var hyperlink = options.hyperlinkMap[model.address]; if (hyperlink) { if (model.type === Enums.ValueType.Formula) { model.text = model.result; model.result = undefined; } else { model.text = model.value; model.value = undefined; } model.type = Enums.ValueType.Hyperlink; model.hyperlink = hyperlink; } var comment = options.commentsMap && options.commentsMap[model.address]; if (comment) { model.comment = comment; } } }, { key: "tag", get: function get() { return 'c'; } }]); return CellXform; }(BaseXform); module.exports = CellXform; },{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/utils":26,"../base-xform":31,"../strings/rich-text-xform":121}],73:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CfIconExtXform = /*#__PURE__*/function (_BaseXform) { _inherits(CfIconExtXform, _BaseXform); var _super = _createSuper(CfIconExtXform); function CfIconExtXform() { _classCallCheck(this, CfIconExtXform); return _super.apply(this, arguments); } _createClass(CfIconExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { iconSet: model.iconSet, iconId: model.iconId }); } }, { key: "parseOpen", value: function parseOpen(_ref) { var attributes = _ref.attributes; this.model = { iconSet: attributes.iconSet, iconId: BaseXform.toIntValue(attributes.iconId) }; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'x14:cfIcon'; } }]); return CfIconExtXform; }(BaseXform); module.exports = CfIconExtXform; },{"../../base-xform":31}],74:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _require = require('uuid'), uuidv4 = _require.v4; var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var DatabarExtXform = require('./databar-ext-xform'); var IconSetExtXform = require('./icon-set-ext-xform'); var extIcons = { '3Triangles': true, '3Stars': true, '5Boxes': true }; var CfRuleExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(CfRuleExtXform, _CompositeXform); var _super = _createSuper(CfRuleExtXform); function CfRuleExtXform() { var _this; _classCallCheck(this, CfRuleExtXform); _this = _super.call(this); _this.map = { 'x14:dataBar': _this.databarXform = new DatabarExtXform(), 'x14:iconSet': _this.iconSetXform = new IconSetExtXform() }; return _this; } _createClass(CfRuleExtXform, [{ key: "prepare", value: function prepare(model) { if (CfRuleExtXform.isExt(model)) { model.x14Id = "{".concat(uuidv4(), "}").toUpperCase(); } } }, { key: "render", value: function render(xmlStream, model) { if (!CfRuleExtXform.isExt(model)) { return; } switch (model.type) { case 'dataBar': this.renderDataBar(xmlStream, model); break; case 'iconSet': this.renderIconSet(xmlStream, model); break; } } }, { key: "renderDataBar", value: function renderDataBar(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'dataBar', id: model.x14Id }); this.databarXform.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "renderIconSet", value: function renderIconSet(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'iconSet', priority: model.priority, id: model.x14Id || "{".concat(uuidv4(), "}") }); this.iconSetXform.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return { type: attributes.type, x14Id: attributes.id, priority: BaseXform.toIntValue(attributes.priority) }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { Object.assign(this.model, parser.model); } }, { key: "tag", get: function get() { return 'x14:cfRule'; } }], [{ key: "isExt", value: function isExt(rule) { // is this rule primitive? if (rule.type === 'dataBar') { return DatabarExtXform.isExt(rule); } if (rule.type === 'iconSet') { if (rule.custom || extIcons[rule.iconSet]) { return true; } } return false; } }]); return CfRuleExtXform; }(CompositeXform); module.exports = CfRuleExtXform; },{"../../base-xform":31,"../../composite-xform":47,"./databar-ext-xform":78,"./icon-set-ext-xform":80,"uuid":526}],75:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var FExtXform = require('./f-ext-xform'); var CfvoExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(CfvoExtXform, _CompositeXform); var _super = _createSuper(CfvoExtXform); function CfvoExtXform() { var _this; _classCallCheck(this, CfvoExtXform); _this = _super.call(this); _this.map = { 'xm:f': _this.fExtXform = new FExtXform() }; return _this; } _createClass(CfvoExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { type: model.type }); if (model.value !== undefined) { this.fExtXform.render(xmlStream, model.value); } xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(node) { return { type: node.attributes.type }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { switch (name) { case 'xm:f': this.model.value = parser.model ? parseFloat(parser.model) : 0; break; } } }, { key: "tag", get: function get() { return 'x14:cfvo'; } }]); return CfvoExtXform; }(CompositeXform); module.exports = CfvoExtXform; },{"../../composite-xform":47,"./f-ext-xform":79}],76:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var SqRefExtXform = require('./sqref-ext-xform'); var CfRuleExtXform = require('./cf-rule-ext-xform'); var ConditionalFormattingExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ConditionalFormattingExtXform, _CompositeXform); var _super = _createSuper(ConditionalFormattingExtXform); function ConditionalFormattingExtXform() { var _this; _classCallCheck(this, ConditionalFormattingExtXform); _this = _super.call(this); _this.map = { 'xm:sqref': _this.sqRef = new SqRefExtXform(), 'x14:cfRule': _this.cfRule = new CfRuleExtXform() }; return _this; } _createClass(ConditionalFormattingExtXform, [{ key: "prepare", value: function prepare(model, options) { var _this2 = this; model.rules.forEach(function (rule) { _this2.cfRule.prepare(rule, options); }); } }, { key: "render", value: function render(xmlStream, model) { var _this3 = this; if (!model.rules.some(CfRuleExtXform.isExt)) { return; } xmlStream.openNode(this.tag, { 'xmlns:xm': 'http://schemas.microsoft.com/office/excel/2006/main' }); model.rules.filter(CfRuleExtXform.isExt).forEach(function (rule) { return _this3.cfRule.render(xmlStream, rule); }); // for some odd reason, Excel needs the node to be after the rules this.sqRef.render(xmlStream, model.ref); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return { rules: [] }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { switch (name) { case 'xm:sqref': this.model.ref = parser.model; break; case 'x14:cfRule': this.model.rules.push(parser.model); break; } } }, { key: "tag", get: function get() { return 'x14:conditionalFormatting'; } }]); return ConditionalFormattingExtXform; }(CompositeXform); module.exports = ConditionalFormattingExtXform; },{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./sqref-ext-xform":81}],77:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var CfRuleExtXform = require('./cf-rule-ext-xform'); var ConditionalFormattingExtXform = require('./conditional-formatting-ext-xform'); var ConditionalFormattingsExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ConditionalFormattingsExtXform, _CompositeXform); var _super = _createSuper(ConditionalFormattingsExtXform); function ConditionalFormattingsExtXform() { var _this; _classCallCheck(this, ConditionalFormattingsExtXform); _this = _super.call(this); _this.map = { 'x14:conditionalFormatting': _this.cfXform = new ConditionalFormattingExtXform() }; return _this; } _createClass(ConditionalFormattingsExtXform, [{ key: "hasContent", value: function hasContent(model) { if (model.hasExtContent === undefined) { model.hasExtContent = model.some(function (cf) { return cf.rules.some(CfRuleExtXform.isExt); }); } return model.hasExtContent; } }, { key: "prepare", value: function prepare(model, options) { var _this2 = this; model.forEach(function (cf) { _this2.cfXform.prepare(cf, options); }); } }, { key: "render", value: function render(xmlStream, model) { var _this3 = this; if (this.hasContent(model)) { xmlStream.openNode(this.tag); model.forEach(function (cf) { return _this3.cfXform.render(xmlStream, cf); }); xmlStream.closeNode(); } } }, { key: "createNewModel", value: function createNewModel() { return []; } }, { key: "onParserClose", value: function onParserClose(name, parser) { // model is array of conditional formatting objects this.model.push(parser.model); } }, { key: "tag", get: function get() { return 'x14:conditionalFormattings'; } }]); return ConditionalFormattingsExtXform; }(CompositeXform); module.exports = ConditionalFormattingsExtXform; },{"../../composite-xform":47,"./cf-rule-ext-xform":74,"./conditional-formatting-ext-xform":76}],78:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var ColorXform = require('../../style/color-xform'); var CfvoExtXform = require('./cfvo-ext-xform'); var DatabarExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(DatabarExtXform, _CompositeXform); var _super = _createSuper(DatabarExtXform); function DatabarExtXform() { var _this; _classCallCheck(this, DatabarExtXform); _this = _super.call(this); _this.map = { 'x14:cfvo': _this.cfvoXform = new CfvoExtXform(), 'x14:borderColor': _this.borderColorXform = new ColorXform('x14:borderColor'), 'x14:negativeBorderColor': _this.negativeBorderColorXform = new ColorXform('x14:negativeBorderColor'), 'x14:negativeFillColor': _this.negativeFillColorXform = new ColorXform('x14:negativeFillColor'), 'x14:axisColor': _this.axisColorXform = new ColorXform('x14:axisColor') }; return _this; } _createClass(DatabarExtXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag, { minLength: BaseXform.toIntAttribute(model.minLength, 0, true), maxLength: BaseXform.toIntAttribute(model.maxLength, 100, true), border: BaseXform.toBoolAttribute(model.border, false), gradient: BaseXform.toBoolAttribute(model.gradient, true), negativeBarColorSameAsPositive: BaseXform.toBoolAttribute(model.negativeBarColorSameAsPositive, true), negativeBarBorderColorSameAsPositive: BaseXform.toBoolAttribute(model.negativeBarBorderColorSameAsPositive, true), axisPosition: BaseXform.toAttribute(model.axisPosition, 'auto'), direction: BaseXform.toAttribute(model.direction, 'leftToRight') }); model.cfvo.forEach(function (cfvo) { _this2.cfvoXform.render(xmlStream, cfvo); }); this.borderColorXform.render(xmlStream, model.borderColor); this.negativeBorderColorXform.render(xmlStream, model.negativeBorderColor); this.negativeFillColorXform.render(xmlStream, model.negativeFillColor); this.axisColorXform.render(xmlStream, model.axisColor); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return { cfvo: [], minLength: BaseXform.toIntValue(attributes.minLength, 0), maxLength: BaseXform.toIntValue(attributes.maxLength, 100), border: BaseXform.toBoolValue(attributes.border, false), gradient: BaseXform.toBoolValue(attributes.gradient, true), negativeBarColorSameAsPositive: BaseXform.toBoolValue(attributes.negativeBarColorSameAsPositive, true), negativeBarBorderColorSameAsPositive: BaseXform.toBoolValue(attributes.negativeBarBorderColorSameAsPositive, true), axisPosition: BaseXform.toStringValue(attributes.axisPosition, 'auto'), direction: BaseXform.toStringValue(attributes.direction, 'leftToRight') }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { var _name$split = name.split(':'), _name$split2 = _slicedToArray(_name$split, 2), prop = _name$split2[1]; switch (prop) { case 'cfvo': this.model.cfvo.push(parser.model); break; default: this.model[prop] = parser.model; break; } } }, { key: "tag", get: function get() { return 'x14:dataBar'; } }], [{ key: "isExt", value: function isExt(rule) { // not all databars need ext // TODO: refine this return !rule.gradient; } }]); return DatabarExtXform; }(CompositeXform); module.exports = DatabarExtXform; },{"../../base-xform":31,"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-ext-xform":75}],79:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var FExtXform = /*#__PURE__*/function (_BaseXform) { _inherits(FExtXform, _BaseXform); var _super = _createSuper(FExtXform); function FExtXform() { _classCallCheck(this, FExtXform); return _super.apply(this, arguments); } _createClass(FExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, null, model); } }, { key: "parseOpen", value: function parseOpen() { this.model = ''; } }, { key: "parseText", value: function parseText(text) { this.model += text; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'xm:f'; } }]); return FExtXform; }(BaseXform); module.exports = FExtXform; },{"../../base-xform":31}],80:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var CfvoExtXform = require('./cfvo-ext-xform'); var CfIconExtXform = require('./cf-icon-ext-xform'); var IconSetExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(IconSetExtXform, _CompositeXform); var _super = _createSuper(IconSetExtXform); function IconSetExtXform() { var _this; _classCallCheck(this, IconSetExtXform); _this = _super.call(this); _this.map = { 'x14:cfvo': _this.cfvoXform = new CfvoExtXform(), 'x14:cfIcon': _this.cfIconXform = new CfIconExtXform() }; return _this; } _createClass(IconSetExtXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag, { iconSet: BaseXform.toStringAttribute(model.iconSet), reverse: BaseXform.toBoolAttribute(model.reverse, false), showValue: BaseXform.toBoolAttribute(model.showValue, true), custom: BaseXform.toBoolAttribute(model.icons, false) }); model.cfvo.forEach(function (cfvo) { _this2.cfvoXform.render(xmlStream, cfvo); }); if (model.icons) { model.icons.forEach(function (icon, i) { icon.iconId = i; _this2.cfIconXform.render(xmlStream, icon); }); } xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return { cfvo: [], iconSet: BaseXform.toStringValue(attributes.iconSet, '3TrafficLights'), reverse: BaseXform.toBoolValue(attributes.reverse, false), showValue: BaseXform.toBoolValue(attributes.showValue, true) }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { var _name$split = name.split(':'), _name$split2 = _slicedToArray(_name$split, 2), prop = _name$split2[1]; switch (prop) { case 'cfvo': this.model.cfvo.push(parser.model); break; case 'cfIcon': if (!this.model.icons) { this.model.icons = []; } this.model.icons.push(parser.model); break; default: this.model[prop] = parser.model; break; } } }, { key: "tag", get: function get() { return 'x14:iconSet'; } }]); return IconSetExtXform; }(CompositeXform); module.exports = IconSetExtXform; },{"../../base-xform":31,"../../composite-xform":47,"./cf-icon-ext-xform":73,"./cfvo-ext-xform":75}],81:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var SqrefExtXform = /*#__PURE__*/function (_BaseXform) { _inherits(SqrefExtXform, _BaseXform); var _super = _createSuper(SqrefExtXform); function SqrefExtXform() { _classCallCheck(this, SqrefExtXform); return _super.apply(this, arguments); } _createClass(SqrefExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, null, model); } }, { key: "parseOpen", value: function parseOpen() { this.model = ''; } }, { key: "parseText", value: function parseText(text) { this.model += text; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'xm:sqref'; } }]); return SqrefExtXform; }(BaseXform); module.exports = SqrefExtXform; },{"../../base-xform":31}],82:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var Range = require('../../../../doc/range'); var DatabarXform = require('./databar-xform'); var ExtLstRefXform = require('./ext-lst-ref-xform'); var FormulaXform = require('./formula-xform'); var ColorScaleXform = require('./color-scale-xform'); var IconSetXform = require('./icon-set-xform'); var extIcons = { '3Triangles': true, '3Stars': true, '5Boxes': true }; var getTextFormula = function getTextFormula(model) { if (model.formulae && model.formulae[0]) { return model.formulae[0]; } var range = new Range(model.ref); var tl = range.tl; switch (model.operator) { case 'containsText': return "NOT(ISERROR(SEARCH(\"".concat(model.text, "\",").concat(tl, ")))"); case 'containsBlanks': return "LEN(TRIM(".concat(tl, "))=0"); case 'notContainsBlanks': return "LEN(TRIM(".concat(tl, "))>0"); case 'containsErrors': return "ISERROR(".concat(tl, ")"); case 'notContainsErrors': return "NOT(ISERROR(".concat(tl, "))"); default: return undefined; } }; var getTimePeriodFormula = function getTimePeriodFormula(model) { if (model.formulae && model.formulae[0]) { return model.formulae[0]; } var range = new Range(model.ref); var tl = range.tl; switch (model.timePeriod) { case 'thisWeek': return "AND(TODAY()-ROUNDDOWN(".concat(tl, ",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(").concat(tl, ",0)-TODAY()<=7-WEEKDAY(TODAY()))"); case 'lastWeek': return "AND(TODAY()-ROUNDDOWN(".concat(tl, ",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(").concat(tl, ",0)<(WEEKDAY(TODAY())+7))"); case 'nextWeek': return "AND(ROUNDDOWN(".concat(tl, ",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(").concat(tl, ",0)-TODAY()<(15-WEEKDAY(TODAY())))"); case 'yesterday': return "FLOOR(".concat(tl, ",1)=TODAY()-1"); case 'today': return "FLOOR(".concat(tl, ",1)=TODAY()"); case 'tomorrow': return "FLOOR(".concat(tl, ",1)=TODAY()+1"); case 'last7Days': return "AND(TODAY()-FLOOR(".concat(tl, ",1)<=6,FLOOR(").concat(tl, ",1)<=TODAY())"); case 'lastMonth': return "AND(MONTH(".concat(tl, ")=MONTH(EDATE(TODAY(),0-1)),YEAR(").concat(tl, ")=YEAR(EDATE(TODAY(),0-1)))"); case 'thisMonth': return "AND(MONTH(".concat(tl, ")=MONTH(TODAY()),YEAR(").concat(tl, ")=YEAR(TODAY()))"); case 'nextMonth': return "AND(MONTH(".concat(tl, ")=MONTH(EDATE(TODAY(),0+1)),YEAR(").concat(tl, ")=YEAR(EDATE(TODAY(),0+1)))"); default: return undefined; } }; var opType = function opType(attributes) { var type = attributes.type, operator = attributes.operator; switch (type) { case 'containsText': case 'containsBlanks': case 'notContainsBlanks': case 'containsErrors': case 'notContainsErrors': return { type: 'containsText', operator: type }; default: return { type: type, operator: operator }; } }; var CfRuleXform = /*#__PURE__*/function (_CompositeXform) { _inherits(CfRuleXform, _CompositeXform); var _super = _createSuper(CfRuleXform); function CfRuleXform() { var _this; _classCallCheck(this, CfRuleXform); _this = _super.call(this); _this.map = { dataBar: _this.databarXform = new DatabarXform(), extLst: _this.extLstRefXform = new ExtLstRefXform(), formula: _this.formulaXform = new FormulaXform(), colorScale: _this.colorScaleXform = new ColorScaleXform(), iconSet: _this.iconSetXform = new IconSetXform() }; return _this; } _createClass(CfRuleXform, [{ key: "render", value: function render(xmlStream, model) { switch (model.type) { case 'expression': this.renderExpression(xmlStream, model); break; case 'cellIs': this.renderCellIs(xmlStream, model); break; case 'top10': this.renderTop10(xmlStream, model); break; case 'aboveAverage': this.renderAboveAverage(xmlStream, model); break; case 'dataBar': this.renderDataBar(xmlStream, model); break; case 'colorScale': this.renderColorScale(xmlStream, model); break; case 'iconSet': this.renderIconSet(xmlStream, model); break; case 'containsText': this.renderText(xmlStream, model); break; case 'timePeriod': this.renderTimePeriod(xmlStream, model); break; } } }, { key: "renderExpression", value: function renderExpression(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'expression', dxfId: model.dxfId, priority: model.priority }); this.formulaXform.render(xmlStream, model.formulae[0]); xmlStream.closeNode(); } }, { key: "renderCellIs", value: function renderCellIs(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag, { type: 'cellIs', dxfId: model.dxfId, priority: model.priority, operator: model.operator }); model.formulae.forEach(function (formula) { _this2.formulaXform.render(xmlStream, formula); }); xmlStream.closeNode(); } }, { key: "renderTop10", value: function renderTop10(xmlStream, model) { xmlStream.leafNode(this.tag, { type: 'top10', dxfId: model.dxfId, priority: model.priority, percent: BaseXform.toBoolAttribute(model.percent, false), bottom: BaseXform.toBoolAttribute(model.bottom, false), rank: BaseXform.toIntValue(model.rank, 10, true) }); } }, { key: "renderAboveAverage", value: function renderAboveAverage(xmlStream, model) { xmlStream.leafNode(this.tag, { type: 'aboveAverage', dxfId: model.dxfId, priority: model.priority, aboveAverage: BaseXform.toBoolAttribute(model.aboveAverage, true) }); } }, { key: "renderDataBar", value: function renderDataBar(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'dataBar', priority: model.priority }); this.databarXform.render(xmlStream, model); this.extLstRefXform.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "renderColorScale", value: function renderColorScale(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'colorScale', priority: model.priority }); this.colorScaleXform.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "renderIconSet", value: function renderIconSet(xmlStream, model) { // iconset is all primitive or all extLst if (!CfRuleXform.isPrimitive(model)) { return; } xmlStream.openNode(this.tag, { type: 'iconSet', priority: model.priority }); this.iconSetXform.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "renderText", value: function renderText(xmlStream, model) { xmlStream.openNode(this.tag, { type: model.operator, dxfId: model.dxfId, priority: model.priority, operator: BaseXform.toStringAttribute(model.operator, 'containsText') }); var formula = getTextFormula(model); if (formula) { this.formulaXform.render(xmlStream, formula); } xmlStream.closeNode(); } }, { key: "renderTimePeriod", value: function renderTimePeriod(xmlStream, model) { xmlStream.openNode(this.tag, { type: 'timePeriod', dxfId: model.dxfId, priority: model.priority, timePeriod: model.timePeriod }); var formula = getTimePeriodFormula(model); if (formula) { this.formulaXform.render(xmlStream, formula); } xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return _objectSpread(_objectSpread({}, opType(attributes)), {}, { dxfId: BaseXform.toIntValue(attributes.dxfId), priority: BaseXform.toIntValue(attributes.priority), timePeriod: attributes.timePeriod, percent: BaseXform.toBoolValue(attributes.percent), bottom: BaseXform.toBoolValue(attributes.bottom), rank: BaseXform.toIntValue(attributes.rank), aboveAverage: BaseXform.toBoolValue(attributes.aboveAverage) }); } }, { key: "onParserClose", value: function onParserClose(name, parser) { switch (name) { case 'dataBar': case 'extLst': case 'colorScale': case 'iconSet': // merge parser model with ours Object.assign(this.model, parser.model); break; case 'formula': // except - formula is a string and appends to formulae this.model.formulae = this.model.formulae || []; this.model.formulae.push(parser.model); break; } } }, { key: "tag", get: function get() { return 'cfRule'; } }], [{ key: "isPrimitive", value: function isPrimitive(rule) { // is this rule primitive? if (rule.type === 'iconSet') { if (rule.custom || extIcons[rule.iconSet]) { return false; } } return true; } }]); return CfRuleXform; }(CompositeXform); module.exports = CfRuleXform; },{"../../../../doc/range":10,"../../base-xform":31,"../../composite-xform":47,"./color-scale-xform":84,"./databar-xform":87,"./ext-lst-ref-xform":88,"./formula-xform":89,"./icon-set-xform":90}],83:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CfvoXform = /*#__PURE__*/function (_BaseXform) { _inherits(CfvoXform, _BaseXform); var _super = _createSuper(CfvoXform); function CfvoXform() { _classCallCheck(this, CfvoXform); return _super.apply(this, arguments); } _createClass(CfvoXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { type: model.type, val: model.value }); } }, { key: "parseOpen", value: function parseOpen(node) { this.model = { type: node.attributes.type, value: BaseXform.toFloatValue(node.attributes.val) }; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'cfvo'; } }]); return CfvoXform; }(BaseXform); module.exports = CfvoXform; },{"../../base-xform":31}],84:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var ColorXform = require('../../style/color-xform'); var CfvoXform = require('./cfvo-xform'); var ColorScaleXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ColorScaleXform, _CompositeXform); var _super = _createSuper(ColorScaleXform); function ColorScaleXform() { var _this; _classCallCheck(this, ColorScaleXform); _this = _super.call(this); _this.map = { cfvo: _this.cfvoXform = new CfvoXform(), color: _this.colorXform = new ColorXform() }; return _this; } _createClass(ColorScaleXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag); model.cfvo.forEach(function (cfvo) { _this2.cfvoXform.render(xmlStream, cfvo); }); model.color.forEach(function (color) { _this2.colorXform.render(xmlStream, color); }); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(node) { return { cfvo: [], color: [] }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { this.model[name].push(parser.model); } }, { key: "tag", get: function get() { return 'colorScale'; } }]); return ColorScaleXform; }(CompositeXform); module.exports = ColorScaleXform; },{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],85:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var CfRuleXform = require('./cf-rule-xform'); var ConditionalFormattingXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ConditionalFormattingXform, _CompositeXform); var _super = _createSuper(ConditionalFormattingXform); function ConditionalFormattingXform() { var _this; _classCallCheck(this, ConditionalFormattingXform); _this = _super.call(this); _this.map = { cfRule: new CfRuleXform() }; return _this; } _createClass(ConditionalFormattingXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; // if there are no primitive rules, exit now if (!model.rules.some(CfRuleXform.isPrimitive)) { return; } xmlStream.openNode(this.tag, { sqref: model.ref }); model.rules.forEach(function (rule) { if (CfRuleXform.isPrimitive(rule)) { rule.ref = model.ref; _this2.map.cfRule.render(xmlStream, rule); } }); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return { ref: attributes.sqref, rules: [] }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { this.model.rules.push(parser.model); } }, { key: "tag", get: function get() { return 'conditionalFormatting'; } }]); return ConditionalFormattingXform; }(CompositeXform); module.exports = ConditionalFormattingXform; },{"../../composite-xform":47,"./cf-rule-xform":82}],86:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var ConditionalFormattingXform = require('./conditional-formatting-xform'); var ConditionalFormattingsXform = /*#__PURE__*/function (_BaseXform) { _inherits(ConditionalFormattingsXform, _BaseXform); var _super = _createSuper(ConditionalFormattingsXform); function ConditionalFormattingsXform() { var _this; _classCallCheck(this, ConditionalFormattingsXform); _this = _super.call(this); _this.cfXform = new ConditionalFormattingXform(); return _this; } _createClass(ConditionalFormattingsXform, [{ key: "reset", value: function reset() { this.model = []; } }, { key: "prepare", value: function prepare(model, options) { // ensure each rule has a priority value var nextPriority = model.reduce(function (p, cf) { return Math.max.apply(Math, [p].concat(_toConsumableArray(cf.rules.map(function (rule) { return rule.priority || 0; })))); }, 1); model.forEach(function (cf) { cf.rules.forEach(function (rule) { if (!rule.priority) { rule.priority = nextPriority++; } if (rule.style) { rule.dxfId = options.styles.addDxfStyle(rule.style); } }); }); } }, { key: "render", value: function render(xmlStream, model) { var _this2 = this; model.forEach(function (cf) { _this2.cfXform.render(xmlStream, cf); }); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'conditionalFormatting': this.parser = this.cfXform; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.push(this.parser.model); this.parser = undefined; return false; } return true; } return false; } }, { key: "reconcile", value: function reconcile(model, options) { model.forEach(function (cf) { cf.rules.forEach(function (rule) { if (rule.dxfId !== undefined) { rule.style = options.styles.getDxfStyle(rule.dxfId); delete rule.dxfId; } }); }); } }, { key: "tag", get: function get() { return 'conditionalFormatting'; } }]); return ConditionalFormattingsXform; }(BaseXform); module.exports = ConditionalFormattingsXform; },{"../../base-xform":31,"./conditional-formatting-xform":85}],87:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var CompositeXform = require('../../composite-xform'); var ColorXform = require('../../style/color-xform'); var CfvoXform = require('./cfvo-xform'); var DatabarXform = /*#__PURE__*/function (_CompositeXform) { _inherits(DatabarXform, _CompositeXform); var _super = _createSuper(DatabarXform); function DatabarXform() { var _this; _classCallCheck(this, DatabarXform); _this = _super.call(this); _this.map = { cfvo: _this.cfvoXform = new CfvoXform(), color: _this.colorXform = new ColorXform() }; return _this; } _createClass(DatabarXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag); model.cfvo.forEach(function (cfvo) { _this2.cfvoXform.render(xmlStream, cfvo); }); this.colorXform.render(xmlStream, model.color); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return { cfvo: [] }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { switch (name) { case 'cfvo': this.model.cfvo.push(parser.model); break; case 'color': this.model.color = parser.model; break; } } }, { key: "tag", get: function get() { return 'dataBar'; } }]); return DatabarXform; }(CompositeXform); module.exports = DatabarXform; },{"../../composite-xform":47,"../../style/color-xform":127,"./cfvo-xform":83}],88:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable max-classes-per-file */ var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var X14IdXform = /*#__PURE__*/function (_BaseXform) { _inherits(X14IdXform, _BaseXform); var _super = _createSuper(X14IdXform); function X14IdXform() { _classCallCheck(this, X14IdXform); return _super.apply(this, arguments); } _createClass(X14IdXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, null, model); } }, { key: "parseOpen", value: function parseOpen() { this.model = ''; } }, { key: "parseText", value: function parseText(text) { this.model += text; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'x14:id'; } }]); return X14IdXform; }(BaseXform); var ExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ExtXform, _CompositeXform); var _super2 = _createSuper(ExtXform); function ExtXform() { var _this; _classCallCheck(this, ExtXform); _this = _super2.call(this); _this.map = { 'x14:id': _this.idXform = new X14IdXform() }; return _this; } _createClass(ExtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { uri: '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}', 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main' }); this.idXform.render(xmlStream, model.x14Id); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return {}; } }, { key: "onParserClose", value: function onParserClose(name, parser) { this.model.x14Id = parser.model; } }, { key: "tag", get: function get() { return 'ext'; } }]); return ExtXform; }(CompositeXform); var ExtLstRefXform = /*#__PURE__*/function (_CompositeXform2) { _inherits(ExtLstRefXform, _CompositeXform2); var _super3 = _createSuper(ExtLstRefXform); function ExtLstRefXform() { var _this2; _classCallCheck(this, ExtLstRefXform); _this2 = _super3.call(this); _this2.map = { ext: new ExtXform() }; return _this2; } _createClass(ExtLstRefXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag); this.map.ext.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return {}; } }, { key: "onParserClose", value: function onParserClose(name, parser) { Object.assign(this.model, parser.model); } }, { key: "tag", get: function get() { return 'extLst'; } }]); return ExtLstRefXform; }(CompositeXform); module.exports = ExtLstRefXform; },{"../../base-xform":31,"../../composite-xform":47}],89:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var FormulaXform = /*#__PURE__*/function (_BaseXform) { _inherits(FormulaXform, _BaseXform); var _super = _createSuper(FormulaXform); function FormulaXform() { _classCallCheck(this, FormulaXform); return _super.apply(this, arguments); } _createClass(FormulaXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, null, model); } }, { key: "parseOpen", value: function parseOpen() { this.model = ''; } }, { key: "parseText", value: function parseText(text) { this.model += text; } }, { key: "parseClose", value: function parseClose(name) { return name !== this.tag; } }, { key: "tag", get: function get() { return 'formula'; } }]); return FormulaXform; }(BaseXform); module.exports = FormulaXform; },{"../../base-xform":31}],90:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../../base-xform'); var CompositeXform = require('../../composite-xform'); var CfvoXform = require('./cfvo-xform'); var IconSetXform = /*#__PURE__*/function (_CompositeXform) { _inherits(IconSetXform, _CompositeXform); var _super = _createSuper(IconSetXform); function IconSetXform() { var _this; _classCallCheck(this, IconSetXform); _this = _super.call(this); _this.map = { cfvo: _this.cfvoXform = new CfvoXform() }; return _this; } _createClass(IconSetXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag, { iconSet: BaseXform.toStringAttribute(model.iconSet, '3TrafficLights'), reverse: BaseXform.toBoolAttribute(model.reverse, false), showValue: BaseXform.toBoolAttribute(model.showValue, true) }); model.cfvo.forEach(function (cfvo) { _this2.cfvoXform.render(xmlStream, cfvo); }); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel(_ref) { var attributes = _ref.attributes; return { iconSet: BaseXform.toStringValue(attributes.iconSet, '3TrafficLights'), reverse: BaseXform.toBoolValue(attributes.reverse), showValue: BaseXform.toBoolValue(attributes.showValue), cfvo: [] }; } }, { key: "onParserClose", value: function onParserClose(name, parser) { this.model[name].push(parser.model); } }, { key: "tag", get: function get() { return 'iconSet'; } }]); return IconSetXform; }(CompositeXform); module.exports = IconSetXform; },{"../../base-xform":31,"../../composite-xform":47,"./cfvo-xform":83}],91:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var ColXform = /*#__PURE__*/function (_BaseXform) { _inherits(ColXform, _BaseXform); var _super = _createSuper(ColXform); function ColXform() { _classCallCheck(this, ColXform); return _super.apply(this, arguments); } _createClass(ColXform, [{ key: "prepare", value: function prepare(model, options) { var styleId = options.styles.addStyleModel(model.style || {}); if (styleId) { model.styleId = styleId; } } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode('col'); xmlStream.addAttribute('min', model.min); xmlStream.addAttribute('max', model.max); if (model.width) { xmlStream.addAttribute('width', model.width); } if (model.styleId) { xmlStream.addAttribute('style', model.styleId); } if (model.hidden) { xmlStream.addAttribute('hidden', '1'); } if (model.bestFit) { xmlStream.addAttribute('bestFit', '1'); } if (model.outlineLevel) { xmlStream.addAttribute('outlineLevel', model.outlineLevel); } if (model.collapsed) { xmlStream.addAttribute('collapsed', '1'); } xmlStream.addAttribute('customWidth', '1'); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'col') { var model = this.model = { min: parseInt(node.attributes.min || '0', 10), max: parseInt(node.attributes.max || '0', 10), width: node.attributes.width === undefined ? undefined : parseFloat(node.attributes.width || '0') }; if (node.attributes.style) { model.styleId = parseInt(node.attributes.style, 10); } if (node.attributes.hidden === true || node.attributes.hidden === 'true' || node.attributes.hidden === 1 || node.attributes.hidden === '1') { model.hidden = true; } if (node.attributes.bestFit) { model.bestFit = true; } if (node.attributes.outlineLevel) { model.outlineLevel = parseInt(node.attributes.outlineLevel, 10); } if (node.attributes.collapsed) { model.collapsed = true; } return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "reconcile", value: function reconcile(model, options) { // reconcile column styles if (model.styleId) { model.style = options.styles.getStyleModel(model.styleId); } } }, { key: "tag", get: function get() { return 'col'; } }]); return ColXform; }(BaseXform); module.exports = ColXform; },{"../base-xform":31}],92:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } var _ = require('../../../utils/under-dash'); var utils = require('../../../utils/utils'); var colCache = require('../../../utils/col-cache'); var BaseXform = require('../base-xform'); var Range = require('../../../doc/range'); function assign(definedName, attributes, name, defaultValue) { var value = attributes[name]; if (value !== undefined) { definedName[name] = value; } else if (defaultValue !== undefined) { definedName[name] = defaultValue; } } function parseBool(value) { switch (value) { case '1': case 'true': return true; default: return false; } } function assignBool(definedName, attributes, name, defaultValue) { var value = attributes[name]; if (value !== undefined) { definedName[name] = parseBool(value); } else if (defaultValue !== undefined) { definedName[name] = defaultValue; } } function optimiseDataValidations(model) { // Squeeze alike data validations together into rectangular ranges // to reduce file size and speed up Excel load time var dvList = _.map(model, function (dataValidation, address) { return { address: address, dataValidation: dataValidation, marked: false }; }).sort(function (a, b) { return _.strcmp(a.address, b.address); }); var dvMap = _.keyBy(dvList, 'address'); var matchCol = function matchCol(addr, height, col) { for (var i = 0; i < height; i++) { var otherAddress = colCache.encodeAddress(addr.row + i, col); if (!model[otherAddress] || !_.isEqual(model[addr.address], model[otherAddress])) { return false; } } return true; }; return dvList.map(function (dv) { if (!dv.marked) { var addr = colCache.decodeEx(dv.address); if (addr.dimensions) { dvMap[addr.dimensions].marked = true; return _objectSpread(_objectSpread({}, dv.dataValidation), {}, { sqref: dv.address }); } // iterate downwards - finding matching cells var height = 1; var otherAddress = colCache.encodeAddress(addr.row + height, addr.col); while (model[otherAddress] && _.isEqual(dv.dataValidation, model[otherAddress])) { height++; otherAddress = colCache.encodeAddress(addr.row + height, addr.col); } // iterate rightwards... var width = 1; while (matchCol(addr, height, addr.col + width)) { width++; } // mark all included addresses for (var i = 0; i < height; i++) { for (var j = 0; j < width; j++) { otherAddress = colCache.encodeAddress(addr.row + i, addr.col + j); dvMap[otherAddress].marked = true; } } if (height > 1 || width > 1) { var bottom = addr.row + (height - 1); var right = addr.col + (width - 1); return _objectSpread(_objectSpread({}, dv.dataValidation), {}, { sqref: "".concat(dv.address, ":").concat(colCache.encodeAddress(bottom, right)) }); } return _objectSpread(_objectSpread({}, dv.dataValidation), {}, { sqref: dv.address }); } return null; }).filter(Boolean); } var DataValidationsXform = /*#__PURE__*/function (_BaseXform) { _inherits(DataValidationsXform, _BaseXform); var _super = _createSuper(DataValidationsXform); function DataValidationsXform() { _classCallCheck(this, DataValidationsXform); return _super.apply(this, arguments); } _createClass(DataValidationsXform, [{ key: "render", value: function render(xmlStream, model) { var optimizedModel = optimiseDataValidations(model); if (optimizedModel.length) { xmlStream.openNode('dataValidations', { count: optimizedModel.length }); optimizedModel.forEach(function (value) { xmlStream.openNode('dataValidation'); if (value.type !== 'any') { xmlStream.addAttribute('type', value.type); if (value.operator && value.type !== 'list' && value.operator !== 'between') { xmlStream.addAttribute('operator', value.operator); } if (value.allowBlank) { xmlStream.addAttribute('allowBlank', '1'); } } if (value.showInputMessage) { xmlStream.addAttribute('showInputMessage', '1'); } if (value.promptTitle) { xmlStream.addAttribute('promptTitle', value.promptTitle); } if (value.prompt) { xmlStream.addAttribute('prompt', value.prompt); } if (value.showErrorMessage) { xmlStream.addAttribute('showErrorMessage', '1'); } if (value.errorStyle) { xmlStream.addAttribute('errorStyle', value.errorStyle); } if (value.errorTitle) { xmlStream.addAttribute('errorTitle', value.errorTitle); } if (value.error) { xmlStream.addAttribute('error', value.error); } xmlStream.addAttribute('sqref', value.sqref); (value.formulae || []).forEach(function (formula, index) { xmlStream.openNode("formula".concat(index + 1)); if (value.type === 'date') { xmlStream.writeText(utils.dateToExcel(new Date(formula))); } else { xmlStream.writeText(formula); } xmlStream.closeNode(); }); xmlStream.closeNode(); }); xmlStream.closeNode(); } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'dataValidations': this.model = {}; return true; case 'dataValidation': { this._address = node.attributes.sqref; var dataValidation = { type: node.attributes.type || 'any', formulae: [] }; if (node.attributes.type) { assignBool(dataValidation, node.attributes, 'allowBlank'); } assignBool(dataValidation, node.attributes, 'showInputMessage'); assignBool(dataValidation, node.attributes, 'showErrorMessage'); switch (dataValidation.type) { case 'any': case 'list': case 'custom': break; default: assign(dataValidation, node.attributes, 'operator', 'between'); break; } assign(dataValidation, node.attributes, 'promptTitle'); assign(dataValidation, node.attributes, 'prompt'); assign(dataValidation, node.attributes, 'errorStyle'); assign(dataValidation, node.attributes, 'errorTitle'); assign(dataValidation, node.attributes, 'error'); this._dataValidation = dataValidation; return true; } case 'formula1': case 'formula2': this._formula = []; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this._formula) { this._formula.push(text); } } }, { key: "parseClose", value: function parseClose(name) { var _this = this; switch (name) { case 'dataValidations': return false; case 'dataValidation': { if (!this._dataValidation.formulae || !this._dataValidation.formulae.length) { delete this._dataValidation.formulae; delete this._dataValidation.operator; } // The four known cases: 1. E4:L9 N4:U9 2.E4 L9 3. N4:U9 4. E4 var list = this._address.split(/\s+/g) || []; list.forEach(function (addr) { if (addr.includes(':')) { var range = new Range(addr); range.forEachAddress(function (address) { _this.model[address] = _this._dataValidation; }); } else { _this.model[addr] = _this._dataValidation; } }); return true; } case 'formula1': case 'formula2': { var formula = this._formula.join(''); switch (this._dataValidation.type) { case 'whole': case 'textLength': formula = parseInt(formula, 10); break; case 'decimal': formula = parseFloat(formula); break; case 'date': formula = utils.excelToDate(parseFloat(formula)); break; default: break; } this._dataValidation.formulae.push(formula); this._formula = undefined; return true; } default: return true; } } }, { key: "tag", get: function get() { return 'dataValidations'; } }]); return DataValidationsXform; }(BaseXform); module.exports = DataValidationsXform; },{"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/utils":26,"../base-xform":31}],93:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var DimensionXform = /*#__PURE__*/function (_BaseXform) { _inherits(DimensionXform, _BaseXform); var _super = _createSuper(DimensionXform); function DimensionXform() { _classCallCheck(this, DimensionXform); return _super.apply(this, arguments); } _createClass(DimensionXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.leafNode('dimension', { ref: model }); } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'dimension') { this.model = node.attributes.ref; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'dimension'; } }]); return DimensionXform; }(BaseXform); module.exports = DimensionXform; },{"../base-xform":31}],94:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var DrawingXform = /*#__PURE__*/function (_BaseXform) { _inherits(DrawingXform, _BaseXform); var _super = _createSuper(DrawingXform); function DrawingXform() { _classCallCheck(this, DrawingXform); return _super.apply(this, arguments); } _createClass(DrawingXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.leafNode(this.tag, { 'r:id': model.rId }); } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { rId: node.attributes['r:id'] }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'drawing'; } }]); return DrawingXform; }(BaseXform); module.exports = DrawingXform; },{"../base-xform":31}],95:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable max-classes-per-file */ var CompositeXform = require('../composite-xform'); var ConditionalFormattingsExt = require('./cf-ext/conditional-formattings-ext-xform'); var ExtXform = /*#__PURE__*/function (_CompositeXform) { _inherits(ExtXform, _CompositeXform); var _super = _createSuper(ExtXform); function ExtXform() { var _this; _classCallCheck(this, ExtXform); _this = _super.call(this); _this.map = { 'x14:conditionalFormattings': _this.conditionalFormattings = new ConditionalFormattingsExt() }; return _this; } _createClass(ExtXform, [{ key: "hasContent", value: function hasContent(model) { return this.conditionalFormattings.hasContent(model.conditionalFormattings); } }, { key: "prepare", value: function prepare(model, options) { this.conditionalFormattings.prepare(model.conditionalFormattings, options); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode('ext', { uri: '{78C0D931-6437-407d-A8EE-F0AAD7539E65}', 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main' }); this.conditionalFormattings.render(xmlStream, model.conditionalFormattings); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return {}; } }, { key: "onParserClose", value: function onParserClose(name, parser) { this.model[name] = parser.model; } }, { key: "tag", get: function get() { return 'ext'; } }]); return ExtXform; }(CompositeXform); var ExtLstXform = /*#__PURE__*/function (_CompositeXform2) { _inherits(ExtLstXform, _CompositeXform2); var _super2 = _createSuper(ExtLstXform); function ExtLstXform() { var _this2; _classCallCheck(this, ExtLstXform); _this2 = _super2.call(this); _this2.map = { ext: _this2.ext = new ExtXform() }; return _this2; } _createClass(ExtLstXform, [{ key: "prepare", value: function prepare(model, options) { this.ext.prepare(model, options); } }, { key: "hasContent", value: function hasContent(model) { return this.ext.hasContent(model); } }, { key: "render", value: function render(xmlStream, model) { if (!this.hasContent(model)) { return; } xmlStream.openNode('extLst'); this.ext.render(xmlStream, model); xmlStream.closeNode(); } }, { key: "createNewModel", value: function createNewModel() { return {}; } }, { key: "onParserClose", value: function onParserClose(name, parser) { Object.assign(this.model, parser.model); } }, { key: "tag", get: function get() { return 'extLst'; } }]); return ExtLstXform; }(CompositeXform); module.exports = ExtLstXform; },{"../composite-xform":47,"./cf-ext/conditional-formattings-ext-xform":77}],96:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var HeaderFooterXform = /*#__PURE__*/function (_BaseXform) { _inherits(HeaderFooterXform, _BaseXform); var _super = _createSuper(HeaderFooterXform); function HeaderFooterXform() { _classCallCheck(this, HeaderFooterXform); return _super.apply(this, arguments); } _createClass(HeaderFooterXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.addRollback(); var createTag = false; xmlStream.openNode('headerFooter'); if (model.differentFirst) { xmlStream.addAttribute('differentFirst', '1'); createTag = true; } if (model.differentOddEven) { xmlStream.addAttribute('differentOddEven', '1'); createTag = true; } if (model.oddHeader && typeof model.oddHeader === 'string') { xmlStream.leafNode('oddHeader', null, model.oddHeader); createTag = true; } if (model.oddFooter && typeof model.oddFooter === 'string') { xmlStream.leafNode('oddFooter', null, model.oddFooter); createTag = true; } if (model.evenHeader && typeof model.evenHeader === 'string') { xmlStream.leafNode('evenHeader', null, model.evenHeader); createTag = true; } if (model.evenFooter && typeof model.evenFooter === 'string') { xmlStream.leafNode('evenFooter', null, model.evenFooter); createTag = true; } if (model.firstHeader && typeof model.firstHeader === 'string') { xmlStream.leafNode('firstHeader', null, model.firstHeader); createTag = true; } if (model.firstFooter && typeof model.firstFooter === 'string') { xmlStream.leafNode('firstFooter', null, model.firstFooter); createTag = true; } if (createTag) { xmlStream.closeNode(); xmlStream.commit(); } else { xmlStream.rollback(); } } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'headerFooter': this.model = {}; if (node.attributes.differentFirst) { this.model.differentFirst = parseInt(node.attributes.differentFirst, 0) === 1; } if (node.attributes.differentOddEven) { this.model.differentOddEven = parseInt(node.attributes.differentOddEven, 0) === 1; } return true; case 'oddHeader': this.currentNode = 'oddHeader'; return true; case 'oddFooter': this.currentNode = 'oddFooter'; return true; case 'evenHeader': this.currentNode = 'evenHeader'; return true; case 'evenFooter': this.currentNode = 'evenFooter'; return true; case 'firstHeader': this.currentNode = 'firstHeader'; return true; case 'firstFooter': this.currentNode = 'firstFooter'; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { switch (this.currentNode) { case 'oddHeader': this.model.oddHeader = text; break; case 'oddFooter': this.model.oddFooter = text; break; case 'evenHeader': this.model.evenHeader = text; break; case 'evenFooter': this.model.evenFooter = text; break; case 'firstHeader': this.model.firstHeader = text; break; case 'firstFooter': this.model.firstFooter = text; break; default: break; } } }, { key: "parseClose", value: function parseClose() { switch (this.currentNode) { case 'oddHeader': case 'oddFooter': case 'evenHeader': case 'evenFooter': case 'firstHeader': case 'firstFooter': this.currentNode = undefined; return true; default: return false; } } }, { key: "tag", get: function get() { return 'headerFooter'; } }]); return HeaderFooterXform; }(BaseXform); module.exports = HeaderFooterXform; },{"../base-xform":31}],97:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var HyperlinkXform = /*#__PURE__*/function (_BaseXform) { _inherits(HyperlinkXform, _BaseXform); var _super = _createSuper(HyperlinkXform); function HyperlinkXform() { _classCallCheck(this, HyperlinkXform); return _super.apply(this, arguments); } _createClass(HyperlinkXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('hyperlink', { ref: model.address, 'r:id': model.rId, tooltip: model.tooltip }); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'hyperlink') { this.model = { address: node.attributes.ref, rId: node.attributes['r:id'], tooltip: node.attributes.tooltip }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'hyperlink'; } }]); return HyperlinkXform; }(BaseXform); module.exports = HyperlinkXform; },{"../base-xform":31}],98:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var MergeCellXform = /*#__PURE__*/function (_BaseXform) { _inherits(MergeCellXform, _BaseXform); var _super = _createSuper(MergeCellXform); function MergeCellXform() { _classCallCheck(this, MergeCellXform); return _super.apply(this, arguments); } _createClass(MergeCellXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('mergeCell', { ref: model }); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'mergeCell') { this.model = node.attributes.ref; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'mergeCell'; } }]); return MergeCellXform; }(BaseXform); module.exports = MergeCellXform; },{"../base-xform":31}],99:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var _ = require('../../../utils/under-dash'); var Range = require('../../../doc/range'); var colCache = require('../../../utils/col-cache'); var Enums = require('../../../doc/enums'); var Merges = /*#__PURE__*/function () { function Merges() { _classCallCheck(this, Merges); // optional mergeCells is array of ranges (like the xml) this.merges = {}; } _createClass(Merges, [{ key: "add", value: function add(merge) { // merge is {address, master} if (this.merges[merge.master]) { this.merges[merge.master].expandToAddress(merge.address); } else { var range = "".concat(merge.master, ":").concat(merge.address); this.merges[merge.master] = new Range(range); } } }, { key: "reconcile", value: function reconcile(mergeCells, rows) { // reconcile merge list with merge cells _.each(mergeCells, function (merge) { var dimensions = colCache.decode(merge); for (var i = dimensions.top; i <= dimensions.bottom; i++) { var row = rows[i - 1]; for (var j = dimensions.left; j <= dimensions.right; j++) { var cell = row.cells[j - 1]; if (!cell) { // nulls are not included in document - so if master cell has no value - add a null one here row.cells[j] = { type: Enums.ValueType.Null, address: colCache.encodeAddress(i, j) }; } else if (cell.type === Enums.ValueType.Merge) { cell.master = dimensions.tl; } } } }); } }, { key: "getMasterAddress", value: function getMasterAddress(address) { // if address has been merged, return its master's address. Assumes reconcile has been called var range = this.hash[address]; return range && range.tl; } }, { key: "mergeCells", get: function get() { return _.map(this.merges, function (merge) { return merge.range; }); } }]); return Merges; }(); module.exports = Merges; },{"../../../doc/enums":7,"../../../doc/range":10,"../../../utils/col-cache":19,"../../../utils/under-dash":25}],100:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var isDefined = function isDefined(attr) { return typeof attr !== 'undefined'; }; var OutlinePropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(OutlinePropertiesXform, _BaseXform); var _super = _createSuper(OutlinePropertiesXform); function OutlinePropertiesXform() { _classCallCheck(this, OutlinePropertiesXform); return _super.apply(this, arguments); } _createClass(OutlinePropertiesXform, [{ key: "render", value: function render(xmlStream, model) { if (model && (isDefined(model.summaryBelow) || isDefined(model.summaryRight))) { xmlStream.leafNode(this.tag, { summaryBelow: isDefined(model.summaryBelow) ? Number(model.summaryBelow) : undefined, summaryRight: isDefined(model.summaryRight) ? Number(model.summaryRight) : undefined }); return true; } return false; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { this.model = { summaryBelow: isDefined(node.attributes.summaryBelow) ? Boolean(Number(node.attributes.summaryBelow)) : undefined, summaryRight: isDefined(node.attributes.summaryRight) ? Boolean(Number(node.attributes.summaryRight)) : undefined }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'outlinePr'; } }]); return OutlinePropertiesXform; }(BaseXform); module.exports = OutlinePropertiesXform; },{"../base-xform":31}],101:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var PageBreaksXform = /*#__PURE__*/function (_BaseXform) { _inherits(PageBreaksXform, _BaseXform); var _super = _createSuper(PageBreaksXform); function PageBreaksXform() { _classCallCheck(this, PageBreaksXform); return _super.apply(this, arguments); } _createClass(PageBreaksXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('brk', model); } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'brk') { this.model = node.attributes.ref; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'brk'; } }]); return PageBreaksXform; }(BaseXform); module.exports = PageBreaksXform; },{"../base-xform":31}],102:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); var PageMarginsXform = /*#__PURE__*/function (_BaseXform) { _inherits(PageMarginsXform, _BaseXform); var _super = _createSuper(PageMarginsXform); function PageMarginsXform() { _classCallCheck(this, PageMarginsXform); return _super.apply(this, arguments); } _createClass(PageMarginsXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { var attributes = { left: model.left, right: model.right, top: model.top, bottom: model.bottom, header: model.header, footer: model.footer }; if (_.some(attributes, function (value) { return value !== undefined; })) { xmlStream.leafNode(this.tag, attributes); } } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { left: parseFloat(node.attributes.left || 0.7), right: parseFloat(node.attributes.right || 0.7), top: parseFloat(node.attributes.top || 0.75), bottom: parseFloat(node.attributes.bottom || 0.75), header: parseFloat(node.attributes.header || 0.3), footer: parseFloat(node.attributes.footer || 0.3) }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'pageMargins'; } }]); return PageMarginsXform; }(BaseXform); module.exports = PageMarginsXform; },{"../../../utils/under-dash":25,"../base-xform":31}],103:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var PageSetupPropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(PageSetupPropertiesXform, _BaseXform); var _super = _createSuper(PageSetupPropertiesXform); function PageSetupPropertiesXform() { _classCallCheck(this, PageSetupPropertiesXform); return _super.apply(this, arguments); } _createClass(PageSetupPropertiesXform, [{ key: "render", value: function render(xmlStream, model) { if (model && model.fitToPage) { xmlStream.leafNode(this.tag, { fitToPage: model.fitToPage ? '1' : undefined }); return true; } return false; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { this.model = { fitToPage: node.attributes.fitToPage === '1' }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'pageSetUpPr'; } }]); return PageSetupPropertiesXform; }(BaseXform); module.exports = PageSetupPropertiesXform; },{"../base-xform":31}],104:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); function booleanToXml(model) { return model ? '1' : undefined; } function pageOrderToXml(model) { switch (model) { case 'overThenDown': return model; default: return undefined; } } function cellCommentsToXml(model) { switch (model) { case 'atEnd': case 'asDisplyed': return model; default: return undefined; } } function errorsToXml(model) { switch (model) { case 'dash': case 'blank': case 'NA': return model; default: return undefined; } } function pageSizeToModel(value) { return value !== undefined ? parseInt(value, 10) : undefined; } var PageSetupXform = /*#__PURE__*/function (_BaseXform) { _inherits(PageSetupXform, _BaseXform); var _super = _createSuper(PageSetupXform); function PageSetupXform() { _classCallCheck(this, PageSetupXform); return _super.apply(this, arguments); } _createClass(PageSetupXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { var attributes = { paperSize: model.paperSize, orientation: model.orientation, horizontalDpi: model.horizontalDpi, verticalDpi: model.verticalDpi, pageOrder: pageOrderToXml(model.pageOrder), blackAndWhite: booleanToXml(model.blackAndWhite), draft: booleanToXml(model.draft), cellComments: cellCommentsToXml(model.cellComments), errors: errorsToXml(model.errors), scale: model.scale, fitToWidth: model.fitToWidth, fitToHeight: model.fitToHeight, firstPageNumber: model.firstPageNumber, useFirstPageNumber: booleanToXml(model.firstPageNumber), usePrinterDefaults: booleanToXml(model.usePrinterDefaults), copies: model.copies }; if (_.some(attributes, function (value) { return value !== undefined; })) { xmlStream.leafNode(this.tag, attributes); } } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { paperSize: pageSizeToModel(node.attributes.paperSize), orientation: node.attributes.orientation || 'portrait', horizontalDpi: parseInt(node.attributes.horizontalDpi || '4294967295', 10), verticalDpi: parseInt(node.attributes.verticalDpi || '4294967295', 10), pageOrder: node.attributes.pageOrder || 'downThenOver', blackAndWhite: node.attributes.blackAndWhite === '1', draft: node.attributes.draft === '1', cellComments: node.attributes.cellComments || 'None', errors: node.attributes.errors || 'displayed', scale: parseInt(node.attributes.scale || '100', 10), fitToWidth: parseInt(node.attributes.fitToWidth || '1', 10), fitToHeight: parseInt(node.attributes.fitToHeight || '1', 10), firstPageNumber: parseInt(node.attributes.firstPageNumber || '1', 10), useFirstPageNumber: node.attributes.useFirstPageNumber === '1', usePrinterDefaults: node.attributes.usePrinterDefaults === '1', copies: parseInt(node.attributes.copies || '1', 10) }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'pageSetup'; } }]); return PageSetupXform; }(BaseXform); module.exports = PageSetupXform; },{"../../../utils/under-dash":25,"../base-xform":31}],105:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var PictureXform = /*#__PURE__*/function (_BaseXform) { _inherits(PictureXform, _BaseXform); var _super = _createSuper(PictureXform); function PictureXform() { _classCallCheck(this, PictureXform); return _super.apply(this, arguments); } _createClass(PictureXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.leafNode(this.tag, { 'r:id': model.rId }); } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { rId: node.attributes['r:id'] }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'picture'; } }]); return PictureXform; }(BaseXform); module.exports = PictureXform; },{"../base-xform":31}],106:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); function booleanToXml(model) { return model ? '1' : undefined; } var PrintOptionsXform = /*#__PURE__*/function (_BaseXform) { _inherits(PrintOptionsXform, _BaseXform); var _super = _createSuper(PrintOptionsXform); function PrintOptionsXform() { _classCallCheck(this, PrintOptionsXform); return _super.apply(this, arguments); } _createClass(PrintOptionsXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { var attributes = { headings: booleanToXml(model.showRowColHeaders), gridLines: booleanToXml(model.showGridLines), horizontalCentered: booleanToXml(model.horizontalCentered), verticalCentered: booleanToXml(model.verticalCentered) }; if (_.some(attributes, function (value) { return value !== undefined; })) { xmlStream.leafNode(this.tag, attributes); } } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { showRowColHeaders: node.attributes.headings === '1', showGridLines: node.attributes.gridLines === '1', horizontalCentered: node.attributes.horizontalCentered === '1', verticalCentered: node.attributes.verticalCentered === '1' }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'printOptions'; } }]); return PrintOptionsXform; }(BaseXform); module.exports = PrintOptionsXform; },{"../../../utils/under-dash":25,"../base-xform":31}],107:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var PageBreaksXform = require('./page-breaks-xform'); var ListXform = require('../list-xform'); var RowBreaksXform = /*#__PURE__*/function (_ListXform) { _inherits(RowBreaksXform, _ListXform); var _super = _createSuper(RowBreaksXform); function RowBreaksXform() { _classCallCheck(this, RowBreaksXform); var options = { tag: 'rowBreaks', count: true, childXform: new PageBreaksXform() }; return _super.call(this, options); } // get tag() { return 'rowBreaks'; } _createClass(RowBreaksXform, [{ key: "render", value: function render(xmlStream, model) { if (model && model.length) { xmlStream.openNode(this.tag, this.$); if (this.count) { xmlStream.addAttribute(this.$count, model.length); xmlStream.addAttribute('manualBreakCount', model.length); } var childXform = this.childXform; model.forEach(function (childModel) { childXform.render(xmlStream, childModel); }); xmlStream.closeNode(); } else if (this.empty) { xmlStream.leafNode(this.tag); } } }]); return RowBreaksXform; }(ListXform); module.exports = RowBreaksXform; },{"../list-xform":70,"./page-breaks-xform":101}],108:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var CellXform = require('./cell-xform'); var RowXform = /*#__PURE__*/function (_BaseXform) { _inherits(RowXform, _BaseXform); var _super = _createSuper(RowXform); function RowXform(options) { var _this; _classCallCheck(this, RowXform); _this = _super.call(this); _this.maxItems = options && options.maxItems; _this.map = { c: new CellXform() }; return _this; } _createClass(RowXform, [{ key: "prepare", value: function prepare(model, options) { var styleId = options.styles.addStyleModel(model.style); if (styleId) { model.styleId = styleId; } var cellXform = this.map.c; model.cells.forEach(function (cellModel) { cellXform.prepare(cellModel, options); }); } }, { key: "render", value: function render(xmlStream, model, options) { xmlStream.openNode('row'); xmlStream.addAttribute('r', model.number); if (model.height) { xmlStream.addAttribute('ht', model.height); xmlStream.addAttribute('customHeight', '1'); } if (model.hidden) { xmlStream.addAttribute('hidden', '1'); } if (model.min > 0 && model.max > 0 && model.min <= model.max) { xmlStream.addAttribute('spans', "".concat(model.min, ":").concat(model.max)); } if (model.styleId) { xmlStream.addAttribute('s', model.styleId); xmlStream.addAttribute('customFormat', '1'); } xmlStream.addAttribute('x14ac:dyDescent', '0.25'); if (model.outlineLevel) { xmlStream.addAttribute('outlineLevel', model.outlineLevel); } if (model.collapsed) { xmlStream.addAttribute('collapsed', '1'); } var cellXform = this.map.c; model.cells.forEach(function (cellModel) { cellXform.render(xmlStream, cellModel, options); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } if (node.name === 'row') { this.numRowsSeen += 1; var spans = node.attributes.spans ? node.attributes.spans.split(':').map(function (span) { return parseInt(span, 10); }) : [undefined, undefined]; var model = this.model = { number: parseInt(node.attributes.r, 10), min: spans[0], max: spans[1], cells: [] }; if (node.attributes.s) { model.styleId = parseInt(node.attributes.s, 10); } if (node.attributes.hidden === true || node.attributes.hidden === 'true' || node.attributes.hidden === 1 || node.attributes.hidden === '1') { model.hidden = true; } if (node.attributes.bestFit) { model.bestFit = true; } if (node.attributes.ht) { model.height = parseFloat(node.attributes.ht); } if (node.attributes.outlineLevel) { model.outlineLevel = parseInt(node.attributes.outlineLevel, 10); } if (node.attributes.collapsed) { model.collapsed = true; } return true; } this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.cells.push(this.parser.model); if (this.maxItems && this.model.cells.length > this.maxItems) { throw new Error("Max column count (".concat(this.maxItems, ") exceeded")); } this.parser = undefined; } return true; } return false; } }, { key: "reconcile", value: function reconcile(model, options) { model.style = model.styleId ? options.styles.getStyleModel(model.styleId) : {}; if (model.styleId !== undefined) { model.styleId = undefined; } var cellXform = this.map.c; model.cells.forEach(function (cellModel) { cellXform.reconcile(cellModel, options); }); } }, { key: "tag", get: function get() { return 'row'; } }]); return RowXform; }(BaseXform); module.exports = RowXform; },{"../base-xform":31,"./cell-xform":72}],109:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); var SheetFormatPropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(SheetFormatPropertiesXform, _BaseXform); var _super = _createSuper(SheetFormatPropertiesXform); function SheetFormatPropertiesXform() { _classCallCheck(this, SheetFormatPropertiesXform); return _super.apply(this, arguments); } _createClass(SheetFormatPropertiesXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { var attributes = { defaultRowHeight: model.defaultRowHeight, outlineLevelRow: model.outlineLevelRow, outlineLevelCol: model.outlineLevelCol, 'x14ac:dyDescent': model.dyDescent }; if (model.defaultColWidth) { attributes.defaultColWidth = model.defaultColWidth; } // default value for 'defaultRowHeight' is 15, this should not be 'custom' if (!model.defaultRowHeight || model.defaultRowHeight !== 15) { attributes.customHeight = '1'; } if (_.some(attributes, function (value) { return value !== undefined; })) { xmlStream.leafNode('sheetFormatPr', attributes); } } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'sheetFormatPr') { this.model = { defaultRowHeight: parseFloat(node.attributes.defaultRowHeight || '0'), dyDescent: parseFloat(node.attributes['x14ac:dyDescent'] || '0'), outlineLevelRow: parseInt(node.attributes.outlineLevelRow || '0', 10), outlineLevelCol: parseInt(node.attributes.outlineLevelCol || '0', 10) }; if (node.attributes.defaultColWidth) { this.model.defaultColWidth = parseFloat(node.attributes.defaultColWidth); } return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'sheetFormatPr'; } }]); return SheetFormatPropertiesXform; }(BaseXform); module.exports = SheetFormatPropertiesXform; },{"../../../utils/under-dash":25,"../base-xform":31}],110:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var ColorXform = require('../style/color-xform'); var PageSetupPropertiesXform = require('./page-setup-properties-xform'); var OutlinePropertiesXform = require('./outline-properties-xform'); var SheetPropertiesXform = /*#__PURE__*/function (_BaseXform) { _inherits(SheetPropertiesXform, _BaseXform); var _super = _createSuper(SheetPropertiesXform); function SheetPropertiesXform() { var _this; _classCallCheck(this, SheetPropertiesXform); _this = _super.call(this); _this.map = { tabColor: new ColorXform('tabColor'), pageSetUpPr: new PageSetupPropertiesXform(), outlinePr: new OutlinePropertiesXform() }; return _this; } _createClass(SheetPropertiesXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.addRollback(); xmlStream.openNode('sheetPr'); var inner = false; inner = this.map.tabColor.render(xmlStream, model.tabColor) || inner; inner = this.map.pageSetUpPr.render(xmlStream, model.pageSetup) || inner; inner = this.map.outlinePr.render(xmlStream, model.outlineProperties) || inner; if (inner) { xmlStream.closeNode(); xmlStream.commit(); } else { xmlStream.rollback(); } } } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } if (node.name === this.tag) { this.reset(); return true; } if (this.map[node.name]) { this.parser = this.map[node.name]; this.parser.parseOpen(node); return true; } return false; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); return true; } return false; } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } if (this.map.tabColor.model || this.map.pageSetUpPr.model || this.map.outlinePr.model) { this.model = {}; if (this.map.tabColor.model) { this.model.tabColor = this.map.tabColor.model; } if (this.map.pageSetUpPr.model) { this.model.pageSetup = this.map.pageSetUpPr.model; } if (this.map.outlinePr.model) { this.model.outlineProperties = this.map.outlinePr.model; } } else { this.model = null; } return false; } }, { key: "tag", get: function get() { return 'sheetPr'; } }]); return SheetPropertiesXform; }(BaseXform); module.exports = SheetPropertiesXform; },{"../base-xform":31,"../style/color-xform":127,"./outline-properties-xform":100,"./page-setup-properties-xform":103}],111:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); function booleanToXml(model, value) { return model ? value : undefined; } function xmlToBoolean(value, equals) { return value === equals ? true : undefined; } var SheetProtectionXform = /*#__PURE__*/function (_BaseXform) { _inherits(SheetProtectionXform, _BaseXform); var _super = _createSuper(SheetProtectionXform); function SheetProtectionXform() { _classCallCheck(this, SheetProtectionXform); return _super.apply(this, arguments); } _createClass(SheetProtectionXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { var attributes = { sheet: booleanToXml(model.sheet, '1'), selectLockedCells: model.selectLockedCells === false ? '1' : undefined, selectUnlockedCells: model.selectUnlockedCells === false ? '1' : undefined, formatCells: booleanToXml(model.formatCells, '0'), formatColumns: booleanToXml(model.formatColumns, '0'), formatRows: booleanToXml(model.formatRows, '0'), insertColumns: booleanToXml(model.insertColumns, '0'), insertRows: booleanToXml(model.insertRows, '0'), insertHyperlinks: booleanToXml(model.insertHyperlinks, '0'), deleteColumns: booleanToXml(model.deleteColumns, '0'), deleteRows: booleanToXml(model.deleteRows, '0'), sort: booleanToXml(model.sort, '0'), autoFilter: booleanToXml(model.autoFilter, '0'), pivotTables: booleanToXml(model.pivotTables, '0') }; if (model.sheet) { attributes.algorithmName = model.algorithmName; attributes.hashValue = model.hashValue; attributes.saltValue = model.saltValue; attributes.spinCount = model.spinCount; attributes.objects = booleanToXml(model.objects === false, '1'); attributes.scenarios = booleanToXml(model.scenarios === false, '1'); } if (_.some(attributes, function (value) { return value !== undefined; })) { xmlStream.leafNode(this.tag, attributes); } } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { sheet: xmlToBoolean(node.attributes.sheet, '1'), objects: node.attributes.objects === '1' ? false : undefined, scenarios: node.attributes.scenarios === '1' ? false : undefined, selectLockedCells: node.attributes.selectLockedCells === '1' ? false : undefined, selectUnlockedCells: node.attributes.selectUnlockedCells === '1' ? false : undefined, formatCells: xmlToBoolean(node.attributes.formatCells, '0'), formatColumns: xmlToBoolean(node.attributes.formatColumns, '0'), formatRows: xmlToBoolean(node.attributes.formatRows, '0'), insertColumns: xmlToBoolean(node.attributes.insertColumns, '0'), insertRows: xmlToBoolean(node.attributes.insertRows, '0'), insertHyperlinks: xmlToBoolean(node.attributes.insertHyperlinks, '0'), deleteColumns: xmlToBoolean(node.attributes.deleteColumns, '0'), deleteRows: xmlToBoolean(node.attributes.deleteRows, '0'), sort: xmlToBoolean(node.attributes.sort, '0'), autoFilter: xmlToBoolean(node.attributes.autoFilter, '0'), pivotTables: xmlToBoolean(node.attributes.pivotTables, '0') }; if (node.attributes.algorithmName) { this.model.algorithmName = node.attributes.algorithmName; this.model.hashValue = node.attributes.hashValue; this.model.saltValue = node.attributes.saltValue; this.model.spinCount = parseInt(node.attributes.spinCount, 10); } return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'sheetProtection'; } }]); return SheetProtectionXform; }(BaseXform); module.exports = SheetProtectionXform; },{"../../../utils/under-dash":25,"../base-xform":31}],112:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var colCache = require('../../../utils/col-cache'); var BaseXform = require('../base-xform'); var VIEW_STATES = { frozen: 'frozen', frozenSplit: 'frozen', split: 'split' }; var SheetViewXform = /*#__PURE__*/function (_BaseXform) { _inherits(SheetViewXform, _BaseXform); var _super = _createSuper(SheetViewXform); function SheetViewXform() { _classCallCheck(this, SheetViewXform); return _super.apply(this, arguments); } _createClass(SheetViewXform, [{ key: "prepare", value: function prepare(model) { switch (model.state) { case 'frozen': case 'split': break; default: model.state = 'normal'; break; } } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openNode('sheetView', { workbookViewId: model.workbookViewId || 0 }); var add = function add(name, value, included) { if (included) { xmlStream.addAttribute(name, value); } }; add('rightToLeft', '1', model.rightToLeft === true); add('tabSelected', '1', model.tabSelected); add('showRuler', '0', model.showRuler === false); add('showRowColHeaders', '0', model.showRowColHeaders === false); add('showGridLines', '0', model.showGridLines === false); add('zoomScale', model.zoomScale, model.zoomScale); add('zoomScaleNormal', model.zoomScaleNormal, model.zoomScaleNormal); add('view', model.style, model.style); var topLeftCell; var xSplit; var ySplit; var activePane; switch (model.state) { case 'frozen': xSplit = model.xSplit || 0; ySplit = model.ySplit || 0; topLeftCell = model.topLeftCell || colCache.getAddress(ySplit + 1, xSplit + 1).address; activePane = model.xSplit && model.ySplit && 'bottomRight' || model.xSplit && 'topRight' || 'bottomLeft'; xmlStream.leafNode('pane', { xSplit: model.xSplit || undefined, ySplit: model.ySplit || undefined, topLeftCell: topLeftCell, activePane: activePane, state: 'frozen' }); xmlStream.leafNode('selection', { pane: activePane, activeCell: model.activeCell, sqref: model.activeCell }); break; case 'split': if (model.activePane === 'topLeft') { model.activePane = undefined; } xmlStream.leafNode('pane', { xSplit: model.xSplit || undefined, ySplit: model.ySplit || undefined, topLeftCell: model.topLeftCell, activePane: model.activePane }); xmlStream.leafNode('selection', { pane: model.activePane, activeCell: model.activeCell, sqref: model.activeCell }); break; case 'normal': if (model.activeCell) { xmlStream.leafNode('selection', { activeCell: model.activeCell, sqref: model.activeCell }); } break; default: break; } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'sheetView': this.sheetView = { workbookViewId: parseInt(node.attributes.workbookViewId, 10), rightToLeft: node.attributes.rightToLeft === '1', tabSelected: node.attributes.tabSelected === '1', showRuler: !(node.attributes.showRuler === '0'), showRowColHeaders: !(node.attributes.showRowColHeaders === '0'), showGridLines: !(node.attributes.showGridLines === '0'), zoomScale: parseInt(node.attributes.zoomScale || '100', 10), zoomScaleNormal: parseInt(node.attributes.zoomScaleNormal || '100', 10), style: node.attributes.view }; this.pane = undefined; this.selections = {}; return true; case 'pane': this.pane = { xSplit: parseInt(node.attributes.xSplit || '0', 10), ySplit: parseInt(node.attributes.ySplit || '0', 10), topLeftCell: node.attributes.topLeftCell, activePane: node.attributes.activePane || 'topLeft', state: node.attributes.state }; return true; case 'selection': { var name = node.attributes.pane || 'topLeft'; this.selections[name] = { pane: name, activeCell: node.attributes.activeCell }; return true; } default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { var model; var selection; switch (name) { case 'sheetView': if (this.sheetView && this.pane) { model = this.model = { workbookViewId: this.sheetView.workbookViewId, rightToLeft: this.sheetView.rightToLeft, state: VIEW_STATES[this.pane.state] || 'split', // split is default xSplit: this.pane.xSplit, ySplit: this.pane.ySplit, topLeftCell: this.pane.topLeftCell, showRuler: this.sheetView.showRuler, showRowColHeaders: this.sheetView.showRowColHeaders, showGridLines: this.sheetView.showGridLines, zoomScale: this.sheetView.zoomScale, zoomScaleNormal: this.sheetView.zoomScaleNormal }; if (this.model.state === 'split') { model.activePane = this.pane.activePane; } selection = this.selections[this.pane.activePane]; if (selection && selection.activeCell) { model.activeCell = selection.activeCell; } if (this.sheetView.style) { model.style = this.sheetView.style; } } else { model = this.model = { workbookViewId: this.sheetView.workbookViewId, rightToLeft: this.sheetView.rightToLeft, state: 'normal', showRuler: this.sheetView.showRuler, showRowColHeaders: this.sheetView.showRowColHeaders, showGridLines: this.sheetView.showGridLines, zoomScale: this.sheetView.zoomScale, zoomScaleNormal: this.sheetView.zoomScaleNormal }; selection = this.selections.topLeft; if (selection && selection.activeCell) { model.activeCell = selection.activeCell; } if (this.sheetView.style) { model.style = this.sheetView.style; } } return false; default: return true; } } }, { key: "reconcile", value: function reconcile() {} }, { key: "tag", get: function get() { return 'sheetView'; } }]); return SheetViewXform; }(BaseXform); module.exports = SheetViewXform; },{"../../../utils/col-cache":19,"../base-xform":31}],113:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var TablePartXform = /*#__PURE__*/function (_BaseXform) { _inherits(TablePartXform, _BaseXform); var _super = _createSuper(TablePartXform); function TablePartXform() { _classCallCheck(this, TablePartXform); return _super.apply(this, arguments); } _createClass(TablePartXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.leafNode(this.tag, { 'r:id': model.rId }); } } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case this.tag: this.model = { rId: node.attributes['r:id'] }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'tablePart'; } }]); return TablePartXform; }(BaseXform); module.exports = TablePartXform; },{"../base-xform":31}],114:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var colCache = require('../../../utils/col-cache'); var XmlStream = require('../../../utils/xml-stream'); var RelType = require('../../rel-type'); var Merges = require('./merges'); var BaseXform = require('../base-xform'); var ListXform = require('../list-xform'); var RowXform = require('./row-xform'); var ColXform = require('./col-xform'); var DimensionXform = require('./dimension-xform'); var HyperlinkXform = require('./hyperlink-xform'); var MergeCellXform = require('./merge-cell-xform'); var DataValidationsXform = require('./data-validations-xform'); var SheetPropertiesXform = require('./sheet-properties-xform'); var SheetFormatPropertiesXform = require('./sheet-format-properties-xform'); var SheetViewXform = require('./sheet-view-xform'); var SheetProtectionXform = require('./sheet-protection-xform'); var PageMarginsXform = require('./page-margins-xform'); var PageSetupXform = require('./page-setup-xform'); var PrintOptionsXform = require('./print-options-xform'); var AutoFilterXform = require('./auto-filter-xform'); var PictureXform = require('./picture-xform'); var DrawingXform = require('./drawing-xform'); var TablePartXform = require('./table-part-xform'); var RowBreaksXform = require('./row-breaks-xform'); var HeaderFooterXform = require('./header-footer-xform'); var ConditionalFormattingsXform = require('./cf/conditional-formattings-xform'); var ExtListXform = require('./ext-lst-xform'); var mergeRule = function mergeRule(rule, extRule) { Object.keys(extRule).forEach(function (key) { var value = rule[key]; var extValue = extRule[key]; if (value === undefined && extValue !== undefined) { rule[key] = extValue; } }); }; var mergeConditionalFormattings = function mergeConditionalFormattings(model, extModel) { // conditional formattings are rendered in worksheet.conditionalFormatting and also in // worksheet.extLst.ext.x14:conditionalFormattings // some (e.g. dataBar) are even spread across both! if (!extModel || !extModel.length) { return model; } if (!model || !model.length) { return extModel; } // index model rules by x14Id var cfMap = {}; var ruleMap = {}; model.forEach(function (cf) { cfMap[cf.ref] = cf; cf.rules.forEach(function (rule) { var x14Id = rule.x14Id; if (x14Id) { ruleMap[x14Id] = rule; } }); }); extModel.forEach(function (extCf) { extCf.rules.forEach(function (extRule) { var rule = ruleMap[extRule.x14Id]; if (rule) { // merge with matching rule mergeRule(rule, extRule); } else if (cfMap[extCf.ref]) { // reuse existing cf ref cfMap[extCf.ref].rules.push(extRule); } else { // create new cf model.push({ ref: extCf.ref, rules: [extRule] }); } }); }); // need to cope with rules in extModel that don't exist in model return model; }; var WorkSheetXform = /*#__PURE__*/function (_BaseXform) { _inherits(WorkSheetXform, _BaseXform); var _super = _createSuper(WorkSheetXform); function WorkSheetXform(options) { var _this; _classCallCheck(this, WorkSheetXform); _this = _super.call(this); var _ref = options || {}, maxRows = _ref.maxRows, maxCols = _ref.maxCols; _this.map = { sheetPr: new SheetPropertiesXform(), dimension: new DimensionXform(), sheetViews: new ListXform({ tag: 'sheetViews', count: false, childXform: new SheetViewXform() }), sheetFormatPr: new SheetFormatPropertiesXform(), cols: new ListXform({ tag: 'cols', count: false, childXform: new ColXform() }), sheetData: new ListXform({ tag: 'sheetData', count: false, empty: true, childXform: new RowXform({ maxItems: maxCols }), maxItems: maxRows }), autoFilter: new AutoFilterXform(), mergeCells: new ListXform({ tag: 'mergeCells', count: true, childXform: new MergeCellXform() }), rowBreaks: new RowBreaksXform(), hyperlinks: new ListXform({ tag: 'hyperlinks', count: false, childXform: new HyperlinkXform() }), pageMargins: new PageMarginsXform(), dataValidations: new DataValidationsXform(), pageSetup: new PageSetupXform(), headerFooter: new HeaderFooterXform(), printOptions: new PrintOptionsXform(), picture: new PictureXform(), drawing: new DrawingXform(), sheetProtection: new SheetProtectionXform(), tableParts: new ListXform({ tag: 'tableParts', count: true, childXform: new TablePartXform() }), conditionalFormatting: new ConditionalFormattingsXform(), extLst: new ExtListXform() }; return _this; } _createClass(WorkSheetXform, [{ key: "prepare", value: function prepare(model, options) { var _this2 = this; options.merges = new Merges(); model.hyperlinks = options.hyperlinks = []; model.comments = options.comments = []; options.formulae = {}; options.siFormulae = 0; this.map.cols.prepare(model.cols, options); this.map.sheetData.prepare(model.rows, options); this.map.conditionalFormatting.prepare(model.conditionalFormattings, options); model.mergeCells = options.merges.mergeCells; // prepare relationships var rels = model.rels = []; function nextRid(r) { return "rId".concat(r.length + 1); } model.hyperlinks.forEach(function (hyperlink) { var rId = nextRid(rels); hyperlink.rId = rId; rels.push({ Id: rId, Type: RelType.Hyperlink, Target: hyperlink.target, TargetMode: 'External' }); }); // prepare comment relationships if (model.comments.length > 0) { var comment = { Id: nextRid(rels), Type: RelType.Comments, Target: "../comments".concat(model.id, ".xml") }; rels.push(comment); var vmlDrawing = { Id: nextRid(rels), Type: RelType.VmlDrawing, Target: "../drawings/vmlDrawing".concat(model.id, ".vml") }; rels.push(vmlDrawing); model.comments.forEach(function (item) { item.refAddress = colCache.decodeAddress(item.ref); }); options.commentRefs.push({ commentName: "comments".concat(model.id), vmlDrawing: "vmlDrawing".concat(model.id) }); } var drawingRelsHash = []; var bookImage; model.media.forEach(function (medium) { if (medium.type === 'background') { var rId = nextRid(rels); bookImage = options.media[medium.imageId]; rels.push({ Id: rId, Type: RelType.Image, Target: "../media/".concat(bookImage.name, ".").concat(bookImage.extension) }); model.background = { rId: rId }; model.image = options.media[medium.imageId]; } else if (medium.type === 'image') { var drawing = model.drawing; bookImage = options.media[medium.imageId]; if (!drawing) { drawing = model.drawing = { rId: nextRid(rels), name: "drawing".concat(++options.drawingsCount), anchors: [], rels: [] }; options.drawings.push(drawing); rels.push({ Id: drawing.rId, Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing', Target: "../drawings/".concat(drawing.name, ".xml") }); } var rIdImage = _this2.preImageId === medium.imageId ? drawingRelsHash[medium.imageId] : drawingRelsHash[drawing.rels.length]; if (!rIdImage) { rIdImage = nextRid(drawing.rels); drawingRelsHash[drawing.rels.length] = rIdImage; drawing.rels.push({ Id: rIdImage, Type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image', Target: "../media/".concat(bookImage.name, ".").concat(bookImage.extension) }); } var anchor = { picture: { rId: rIdImage }, range: medium.range }; if (medium.hyperlinks && medium.hyperlinks.hyperlink) { var rIdHyperLink = nextRid(drawing.rels); drawingRelsHash[drawing.rels.length] = rIdHyperLink; anchor.picture.hyperlinks = { tooltip: medium.hyperlinks.tooltip, rId: rIdHyperLink }; drawing.rels.push({ Id: rIdHyperLink, Type: RelType.Hyperlink, Target: medium.hyperlinks.hyperlink, TargetMode: 'External' }); } _this2.preImageId = medium.imageId; drawing.anchors.push(anchor); } }); // prepare tables model.tables.forEach(function (table) { // relationships var rId = nextRid(rels); table.rId = rId; rels.push({ Id: rId, Type: RelType.Table, Target: "../tables/".concat(table.target) }); // dynamic styles table.columns.forEach(function (column) { var style = column.style; if (style) { column.dxfId = options.styles.addDxfStyle(style); } }); }); // prepare ext items this.map.extLst.prepare(model, options); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('worksheet', WorkSheetXform.WORKSHEET_ATTRIBUTES); var sheetFormatPropertiesModel = model.properties ? { defaultRowHeight: model.properties.defaultRowHeight, dyDescent: model.properties.dyDescent, outlineLevelCol: model.properties.outlineLevelCol, outlineLevelRow: model.properties.outlineLevelRow } : undefined; if (model.properties && model.properties.defaultColWidth) { sheetFormatPropertiesModel.defaultColWidth = model.properties.defaultColWidth; } var sheetPropertiesModel = { outlineProperties: model.properties && model.properties.outlineProperties, tabColor: model.properties && model.properties.tabColor, pageSetup: model.pageSetup && model.pageSetup.fitToPage ? { fitToPage: model.pageSetup.fitToPage } : undefined }; var pageMarginsModel = model.pageSetup && model.pageSetup.margins; var printOptionsModel = { showRowColHeaders: model.pageSetup && model.pageSetup.showRowColHeaders, showGridLines: model.pageSetup && model.pageSetup.showGridLines, horizontalCentered: model.pageSetup && model.pageSetup.horizontalCentered, verticalCentered: model.pageSetup && model.pageSetup.verticalCentered }; var sheetProtectionModel = model.sheetProtection; this.map.sheetPr.render(xmlStream, sheetPropertiesModel); this.map.dimension.render(xmlStream, model.dimensions); this.map.sheetViews.render(xmlStream, model.views); this.map.sheetFormatPr.render(xmlStream, sheetFormatPropertiesModel); this.map.cols.render(xmlStream, model.cols); this.map.sheetData.render(xmlStream, model.rows); this.map.sheetProtection.render(xmlStream, sheetProtectionModel); // Note: must be after sheetData and before autoFilter this.map.autoFilter.render(xmlStream, model.autoFilter); this.map.mergeCells.render(xmlStream, model.mergeCells); this.map.conditionalFormatting.render(xmlStream, model.conditionalFormattings); // Note: must be before dataValidations this.map.dataValidations.render(xmlStream, model.dataValidations); // For some reason hyperlinks have to be after the data validations this.map.hyperlinks.render(xmlStream, model.hyperlinks); this.map.printOptions.render(xmlStream, printOptionsModel); // Note: must be before pageMargins this.map.pageMargins.render(xmlStream, pageMarginsModel); this.map.pageSetup.render(xmlStream, model.pageSetup); this.map.headerFooter.render(xmlStream, model.headerFooter); this.map.rowBreaks.render(xmlStream, model.rowBreaks); this.map.drawing.render(xmlStream, model.drawing); // Note: must be after rowBreaks this.map.picture.render(xmlStream, model.background); // Note: must be after drawing this.map.tableParts.render(xmlStream, model.tables); this.map.extLst.render(xmlStream, model); if (model.rels) { // add a node for each comment model.rels.forEach(function (rel) { if (rel.Type === RelType.VmlDrawing) { xmlStream.leafNode('legacyDrawing', { 'r:id': rel.Id }); } }); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } if (node.name === 'worksheet') { _.each(this.map, function (xform) { xform.reset(); }); return true; } this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case 'worksheet': { var properties = this.map.sheetFormatPr.model || {}; if (this.map.sheetPr.model && this.map.sheetPr.model.tabColor) { properties.tabColor = this.map.sheetPr.model.tabColor; } if (this.map.sheetPr.model && this.map.sheetPr.model.outlineProperties) { properties.outlineProperties = this.map.sheetPr.model.outlineProperties; } var sheetProperties = { fitToPage: this.map.sheetPr.model && this.map.sheetPr.model.pageSetup && this.map.sheetPr.model.pageSetup.fitToPage || false, margins: this.map.pageMargins.model }; var pageSetup = Object.assign(sheetProperties, this.map.pageSetup.model, this.map.printOptions.model); var conditionalFormattings = mergeConditionalFormattings(this.map.conditionalFormatting.model, this.map.extLst.model && this.map.extLst.model['x14:conditionalFormattings']); this.model = { dimensions: this.map.dimension.model, cols: this.map.cols.model, rows: this.map.sheetData.model, mergeCells: this.map.mergeCells.model, hyperlinks: this.map.hyperlinks.model, dataValidations: this.map.dataValidations.model, properties: properties, views: this.map.sheetViews.model, pageSetup: pageSetup, headerFooter: this.map.headerFooter.model, background: this.map.picture.model, drawing: this.map.drawing.model, tables: this.map.tableParts.model, conditionalFormattings: conditionalFormattings }; if (this.map.autoFilter.model) { this.model.autoFilter = this.map.autoFilter.model; } if (this.map.sheetProtection.model) { this.model.sheetProtection = this.map.sheetProtection.model; } return false; } default: // not quite sure how we get here! return true; } } }, { key: "reconcile", value: function reconcile(model, options) { // options.merges = new Merges(); // options.merges.reconcile(model.mergeCells, model.rows); var rels = (model.relationships || []).reduce(function (h, rel) { h[rel.Id] = rel; if (rel.Type === RelType.Comments) { model.comments = options.comments[rel.Target].comments; } if (rel.Type === RelType.VmlDrawing && model.comments && model.comments.length) { var vmlComment = options.vmlDrawings[rel.Target].comments; model.comments.forEach(function (comment, index) { comment.note = Object.assign({}, comment.note, vmlComment[index]); }); } return h; }, {}); options.commentsMap = (model.comments || []).reduce(function (h, comment) { if (comment.ref) { h[comment.ref] = comment; } return h; }, {}); options.hyperlinkMap = (model.hyperlinks || []).reduce(function (h, hyperlink) { if (hyperlink.rId) { h[hyperlink.address] = rels[hyperlink.rId].Target; } return h; }, {}); options.formulae = {}; // compact the rows and cells model.rows = model.rows && model.rows.filter(Boolean) || []; model.rows.forEach(function (row) { row.cells = row.cells && row.cells.filter(Boolean) || []; }); this.map.cols.reconcile(model.cols, options); this.map.sheetData.reconcile(model.rows, options); this.map.conditionalFormatting.reconcile(model.conditionalFormattings, options); model.media = []; if (model.drawing) { var drawingRel = rels[model.drawing.rId]; var match = drawingRel.Target.match(/\/drawings\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/); if (match) { var drawingName = match[1]; var drawing = options.drawings[drawingName]; drawing.anchors.forEach(function (anchor) { if (anchor.medium) { var image = { type: 'image', imageId: anchor.medium.index, range: anchor.range, hyperlinks: anchor.picture.hyperlinks }; model.media.push(image); } }); } } var backgroundRel = model.background && rels[model.background.rId]; if (backgroundRel) { var target = backgroundRel.Target.split('/media/')[1]; var imageId = options.mediaIndex && options.mediaIndex[target]; if (imageId !== undefined) { model.media.push({ type: 'background', imageId: imageId }); } } model.tables = (model.tables || []).map(function (tablePart) { var rel = rels[tablePart.rId]; return options.tables[rel.Target]; }); delete model.relationships; delete model.hyperlinks; delete model.comments; } }]); return WorkSheetXform; }(BaseXform); WorkSheetXform.WORKSHEET_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', 'xmlns:r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006', 'mc:Ignorable': 'x14ac', 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' }; module.exports = WorkSheetXform; },{"../../../utils/col-cache":19,"../../../utils/under-dash":25,"../../../utils/xml-stream":27,"../../rel-type":30,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":71,"./cf/conditional-formattings-xform":86,"./col-xform":91,"./data-validations-xform":92,"./dimension-xform":93,"./drawing-xform":94,"./ext-lst-xform":95,"./header-footer-xform":96,"./hyperlink-xform":97,"./merge-cell-xform":98,"./merges":99,"./page-margins-xform":102,"./page-setup-xform":104,"./picture-xform":105,"./print-options-xform":106,"./row-breaks-xform":107,"./row-xform":108,"./sheet-format-properties-xform":109,"./sheet-properties-xform":110,"./sheet-protection-xform":111,"./sheet-view-xform":112,"./table-part-xform":113}],115:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var BooleanXform = /*#__PURE__*/function (_BaseXform) { _inherits(BooleanXform, _BaseXform); var _super = _createSuper(BooleanXform); function BooleanXform(options) { var _this; _classCallCheck(this, BooleanXform); _this = _super.call(this); _this.tag = options.tag; _this.attr = options.attr; return _this; } _createClass(BooleanXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.openNode(this.tag); xmlStream.closeNode(); } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { this.model = true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }]); return BooleanXform; }(BaseXform); module.exports = BooleanXform; },{"../base-xform":31}],116:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var DateXform = /*#__PURE__*/function (_BaseXform) { _inherits(DateXform, _BaseXform); var _super = _createSuper(DateXform); function DateXform(options) { var _this; _classCallCheck(this, DateXform); _this = _super.call(this); _this.tag = options.tag; _this.attr = options.attr; _this.attrs = options.attrs; _this._format = options.format || function (dt) { try { if (Number.isNaN(dt.getTime())) return ''; return dt.toISOString(); } catch (e) { return ''; } }; _this._parse = options.parse || function (str) { return new Date(str); }; return _this; } _createClass(DateXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.openNode(this.tag); if (this.attrs) { xmlStream.addAttributes(this.attrs); } if (this.attr) { xmlStream.addAttribute(this.attr, this._format(model)); } else { xmlStream.writeText(this._format(model)); } xmlStream.closeNode(); } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { if (this.attr) { this.model = this._parse(node.attributes[this.attr]); } else { this.text = []; } } } }, { key: "parseText", value: function parseText(text) { if (!this.attr) { this.text.push(text); } } }, { key: "parseClose", value: function parseClose() { if (!this.attr) { this.model = this._parse(this.text.join('')); } return false; } }]); return DateXform; }(BaseXform); module.exports = DateXform; },{"../base-xform":31}],117:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var IntegerXform = /*#__PURE__*/function (_BaseXform) { _inherits(IntegerXform, _BaseXform); var _super = _createSuper(IntegerXform); function IntegerXform(options) { var _this; _classCallCheck(this, IntegerXform); _this = _super.call(this); _this.tag = options.tag; _this.attr = options.attr; _this.attrs = options.attrs; // option to render zero _this.zero = options.zero; return _this; } _createClass(IntegerXform, [{ key: "render", value: function render(xmlStream, model) { // int is different to float in that zero is not rendered if (model || this.zero) { xmlStream.openNode(this.tag); if (this.attrs) { xmlStream.addAttributes(this.attrs); } if (this.attr) { xmlStream.addAttribute(this.attr, model); } else { xmlStream.writeText(model); } xmlStream.closeNode(); } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { if (this.attr) { this.model = parseInt(node.attributes[this.attr], 10); } else { this.text = []; } return true; } return false; } }, { key: "parseText", value: function parseText(text) { if (!this.attr) { this.text.push(text); } } }, { key: "parseClose", value: function parseClose() { if (!this.attr) { this.model = parseInt(this.text.join('') || 0, 10); } return false; } }]); return IntegerXform; }(BaseXform); module.exports = IntegerXform; },{"../base-xform":31}],118:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var StringXform = /*#__PURE__*/function (_BaseXform) { _inherits(StringXform, _BaseXform); var _super = _createSuper(StringXform); function StringXform(options) { var _this; _classCallCheck(this, StringXform); _this = _super.call(this); _this.tag = options.tag; _this.attr = options.attr; _this.attrs = options.attrs; return _this; } _createClass(StringXform, [{ key: "render", value: function render(xmlStream, model) { if (model !== undefined) { xmlStream.openNode(this.tag); if (this.attrs) { xmlStream.addAttributes(this.attrs); } if (this.attr) { xmlStream.addAttribute(this.attr, model); } else { xmlStream.writeText(model); } xmlStream.closeNode(); } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { if (this.attr) { this.model = node.attributes[this.attr]; } else { this.text = []; } } } }, { key: "parseText", value: function parseText(text) { if (!this.attr) { this.text.push(text); } } }, { key: "parseClose", value: function parseClose() { if (!this.attr) { this.model = this.text.join(''); } return false; } }]); return StringXform; }(BaseXform); module.exports = StringXform; },{"../base-xform":31}],119:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('./base-xform'); var XmlStream = require('../../utils/xml-stream'); // const model = { // tag: 'name', // $: {attr: 'value'}, // c: [ // { tag: 'child' } // ], // t: 'some text' // }; function build(xmlStream, model) { xmlStream.openNode(model.tag, model.$); if (model.c) { model.c.forEach(function (child) { build(xmlStream, child); }); } if (model.t) { xmlStream.writeText(model.t); } xmlStream.closeNode(); } var StaticXform = /*#__PURE__*/function (_BaseXform) { _inherits(StaticXform, _BaseXform); var _super = _createSuper(StaticXform); function StaticXform(model) { var _this; _classCallCheck(this, StaticXform); _this = _super.call(this); // This class is an optimisation for static (unimportant and unchanging) xml // It is stateless - apart from its static model and so can be used as a singleton // Being stateless - it will only track entry to and exit from it's root xml tag during parsing and nothing else // Known issues: // since stateless - parseOpen always returns true. Parent xform must know when to start using this xform // if the root tag is recursive, the parsing will behave unpredictably _this._model = model; return _this; } _createClass(StaticXform, [{ key: "render", value: function render(xmlStream) { if (!this._xml) { var stream = new XmlStream(); build(stream, this._model); this._xml = stream.xml; } xmlStream.writeXml(this._xml); } }, { key: "parseOpen", value: function parseOpen() { return true; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { switch (name) { case this._model.tag: return false; default: return true; } } }]); return StaticXform; }(BaseXform); module.exports = StaticXform; },{"../../utils/xml-stream":27,"./base-xform":31}],120:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var TextXform = require('./text-xform'); var RichTextXform = require('./rich-text-xform'); var BaseXform = require('../base-xform'); // // (its pronounciation in KATAKANA) // var PhoneticTextXform = /*#__PURE__*/function (_BaseXform) { _inherits(PhoneticTextXform, _BaseXform); var _super = _createSuper(PhoneticTextXform); function PhoneticTextXform() { var _this; _classCallCheck(this, PhoneticTextXform); _this = _super.call(this); _this.map = { r: new RichTextXform(), t: new TextXform() }; return _this; } _createClass(PhoneticTextXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode(this.tag, { sb: model.sb || 0, eb: model.eb || 0 }); if (model && model.hasOwnProperty('richText') && model.richText) { var r = this.map.r; model.richText.forEach(function (text) { r.render(xmlStream, text); }); } else if (model) { this.map.t.render(xmlStream, model.text); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { var name = node.name; if (this.parser) { this.parser.parseOpen(node); return true; } if (name === this.tag) { this.model = { sb: parseInt(node.attributes.sb, 10), eb: parseInt(node.attributes.eb, 10) }; return true; } this.parser = this.map[name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { switch (name) { case 'r': { var rt = this.model.richText; if (!rt) { rt = this.model.richText = []; } rt.push(this.parser.model); break; } case 't': this.model.text = this.parser.model; break; default: break; } this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: return true; } } }, { key: "tag", get: function get() { return 'rPh'; } }]); return PhoneticTextXform; }(BaseXform); module.exports = PhoneticTextXform; },{"../base-xform":31,"./rich-text-xform":121,"./text-xform":124}],121:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var TextXform = require('./text-xform'); var FontXform = require('../style/font-xform'); var BaseXform = require('../base-xform'); // // // // // // // // // is // var RichTextXform = /*#__PURE__*/function (_BaseXform) { _inherits(RichTextXform, _BaseXform); var _super = _createSuper(RichTextXform); function RichTextXform(model) { var _this; _classCallCheck(this, RichTextXform); _this = _super.call(this); _this.model = model; return _this; } _createClass(RichTextXform, [{ key: "render", value: function render(xmlStream, model) { model = model || this.model; xmlStream.openNode('r'); if (model.font) { this.fontXform.render(xmlStream, model.font); } this.textXform.render(xmlStream, model.text); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'r': this.model = {}; return true; case 't': this.parser = this.textXform; this.parser.parseOpen(node); return true; case 'rPr': this.parser = this.fontXform; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { switch (name) { case 'r': return false; case 't': this.model.text = this.parser.model; this.parser = undefined; return true; case 'rPr': this.model.font = this.parser.model; this.parser = undefined; return true; default: if (this.parser) { this.parser.parseClose(name); } return true; } } }, { key: "tag", get: function get() { return 'r'; } }, { key: "textXform", get: function get() { return this._textXform || (this._textXform = new TextXform()); } }, { key: "fontXform", get: function get() { return this._fontXform || (this._fontXform = new FontXform(RichTextXform.FONT_OPTIONS)); } }]); return RichTextXform; }(BaseXform); RichTextXform.FONT_OPTIONS = { tagName: 'rPr', fontNameTag: 'rFont' }; module.exports = RichTextXform; },{"../base-xform":31,"../style/font-xform":130,"./text-xform":124}],122:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var TextXform = require('./text-xform'); var RichTextXform = require('./rich-text-xform'); var PhoneticTextXform = require('./phonetic-text-xform'); var BaseXform = require('../base-xform'); // // ... // // // // var SharedStringXform = /*#__PURE__*/function (_BaseXform) { _inherits(SharedStringXform, _BaseXform); var _super = _createSuper(SharedStringXform); function SharedStringXform(model) { var _this; _classCallCheck(this, SharedStringXform); _this = _super.call(this); _this.model = model; _this.map = { r: new RichTextXform(), t: new TextXform(), rPh: new PhoneticTextXform() }; return _this; } _createClass(SharedStringXform, [{ key: "render", value: function render(xmlStream, model) { var _this2 = this; xmlStream.openNode(this.tag); if (model && model.hasOwnProperty('richText') && model.richText) { if (model.richText.length) { model.richText.forEach(function (text) { _this2.map.r.render(xmlStream, text); }); } else { this.map.t.render(xmlStream, ''); } } else if (model !== undefined && model !== null) { this.map.t.render(xmlStream, model); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { var name = node.name; if (this.parser) { this.parser.parseOpen(node); return true; } if (name === this.tag) { this.model = {}; return true; } this.parser = this.map[name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { switch (name) { case 'r': { var rt = this.model.richText; if (!rt) { rt = this.model.richText = []; } rt.push(this.parser.model); break; } case 't': this.model = this.parser.model; break; default: break; } this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: return true; } } }, { key: "tag", get: function get() { return 'si'; } }]); return SharedStringXform; }(BaseXform); module.exports = SharedStringXform; },{"../base-xform":31,"./phonetic-text-xform":120,"./rich-text-xform":121,"./text-xform":124}],123:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var SharedStringXform = require('./shared-string-xform'); var SharedStringsXform = /*#__PURE__*/function (_BaseXform) { _inherits(SharedStringsXform, _BaseXform); var _super = _createSuper(SharedStringsXform); function SharedStringsXform(model) { var _this; _classCallCheck(this, SharedStringsXform); _this = _super.call(this); _this.model = model || { values: [], count: 0 }; _this.hash = Object.create(null); _this.rich = Object.create(null); return _this; } _createClass(SharedStringsXform, [{ key: "getString", value: function getString(index) { return this.model.values[index]; } }, { key: "add", value: function add(value) { return value.richText ? this.addRichText(value) : this.addText(value); } }, { key: "addText", value: function addText(value) { var index = this.hash[value]; if (index === undefined) { index = this.hash[value] = this.model.values.length; this.model.values.push(value); } this.model.count++; return index; } }, { key: "addRichText", value: function addRichText(value) { // TODO: add WeakMap here var xml = this.sharedStringXform.toXml(value); var index = this.rich[xml]; if (index === undefined) { index = this.rich[xml] = this.model.values.length; this.model.values.push(value); } this.model.count++; return index; } // // // <%=text%> // // }, { key: "render", value: function render(xmlStream, model) { model = model || this._values; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('sst', { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', count: model.count, uniqueCount: model.values.length }); var sx = this.sharedStringXform; model.values.forEach(function (sharedString) { sx.render(xmlStream, sharedString); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'sst': return true; case 'si': this.parser = this.sharedStringXform; this.parser.parseOpen(node); return true; default: throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(node))); } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.values.push(this.parser.model); this.model.count++; this.parser = undefined; } return true; } switch (name) { case 'sst': return false; default: throw new Error("Unexpected xml node in parseClose: ".concat(name)); } } }, { key: "sharedStringXform", get: function get() { return this._sharedStringXform || (this._sharedStringXform = new SharedStringXform()); } }, { key: "values", get: function get() { return this.model.values; } }, { key: "uniqueCount", get: function get() { return this.model.values.length; } }, { key: "count", get: function get() { return this.model.count; } }]); return SharedStringsXform; }(BaseXform); module.exports = SharedStringsXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"./shared-string-xform":122}],124:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); // is var TextXform = /*#__PURE__*/function (_BaseXform) { _inherits(TextXform, _BaseXform); var _super = _createSuper(TextXform); function TextXform() { _classCallCheck(this, TextXform); return _super.apply(this, arguments); } _createClass(TextXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('t'); if (/^\s|\n|\s$/.test(model)) { xmlStream.addAttribute('xml:space', 'preserve'); } xmlStream.writeText(model); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 't': this._text = []; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { this._text.push(text); } }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 't'; } }, { key: "model", get: function get() { return this._text.join('').replace(/_x([0-9A-F]{4})_/g, function ($0, $1) { return String.fromCharCode(parseInt($1, 16)); }); } }]); return TextXform; }(BaseXform); module.exports = TextXform; },{"../base-xform":31}],125:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var Enums = require('../../../doc/enums'); var utils = require('../../../utils/utils'); var BaseXform = require('../base-xform'); var validation = { horizontalValues: ['left', 'center', 'right', 'fill', 'centerContinuous', 'distributed', 'justify'].reduce(function (p, v) { p[v] = true; return p; }, {}), horizontal: function horizontal(value) { return this.horizontalValues[value] ? value : undefined; }, verticalValues: ['top', 'middle', 'bottom', 'distributed', 'justify'].reduce(function (p, v) { p[v] = true; return p; }, {}), vertical: function vertical(value) { if (value === 'middle') return 'center'; return this.verticalValues[value] ? value : undefined; }, wrapText: function wrapText(value) { return value ? true : undefined; }, shrinkToFit: function shrinkToFit(value) { return value ? true : undefined; }, textRotation: function textRotation(value) { switch (value) { case 'vertical': return value; default: value = utils.validInt(value); return value >= -90 && value <= 90 ? value : undefined; } }, indent: function indent(value) { value = utils.validInt(value); return Math.max(0, value); }, readingOrder: function readingOrder(value) { switch (value) { case 'ltr': return Enums.ReadingOrder.LeftToRight; case 'rtl': return Enums.ReadingOrder.RightToLeft; default: return undefined; } } }; var textRotationXform = { toXml: function toXml(textRotation) { textRotation = validation.textRotation(textRotation); if (textRotation) { if (textRotation === 'vertical') { return 255; } var tr = Math.round(textRotation); if (tr >= 0 && tr <= 90) { return tr; } if (tr < 0 && tr >= -90) { return 90 - tr; } } return undefined; }, toModel: function toModel(textRotation) { var tr = utils.validInt(textRotation); if (tr !== undefined) { if (tr === 255) { return 'vertical'; } if (tr >= 0 && tr <= 90) { return tr; } if (tr > 90 && tr <= 180) { return 90 - tr; } } return undefined; } }; // Alignment encapsulates translation from style.alignment model to/from xlsx var AlignmentXform = /*#__PURE__*/function (_BaseXform) { _inherits(AlignmentXform, _BaseXform); var _super = _createSuper(AlignmentXform); function AlignmentXform() { _classCallCheck(this, AlignmentXform); return _super.apply(this, arguments); } _createClass(AlignmentXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.addRollback(); xmlStream.openNode('alignment'); var isValid = false; function add(name, value) { if (value) { xmlStream.addAttribute(name, value); isValid = true; } } add('horizontal', validation.horizontal(model.horizontal)); add('vertical', validation.vertical(model.vertical)); add('wrapText', validation.wrapText(model.wrapText) ? '1' : false); add('shrinkToFit', validation.shrinkToFit(model.shrinkToFit) ? '1' : false); add('indent', validation.indent(model.indent)); add('textRotation', textRotationXform.toXml(model.textRotation)); add('readingOrder', validation.readingOrder(model.readingOrder)); xmlStream.closeNode(); if (isValid) { xmlStream.commit(); } else { xmlStream.rollback(); } } }, { key: "parseOpen", value: function parseOpen(node) { var model = {}; var valid = false; function add(truthy, name, value) { if (truthy) { model[name] = value; valid = true; } } add(node.attributes.horizontal, 'horizontal', node.attributes.horizontal); add(node.attributes.vertical, 'vertical', node.attributes.vertical === 'center' ? 'middle' : node.attributes.vertical); add(node.attributes.wrapText, 'wrapText', !!node.attributes.wrapText); add(node.attributes.shrinkToFit, 'shrinkToFit', !!node.attributes.shrinkToFit); add(node.attributes.indent, 'indent', parseInt(node.attributes.indent, 10)); add(node.attributes.textRotation, 'textRotation', textRotationXform.toModel(node.attributes.textRotation)); add(node.attributes.readingOrder, 'readingOrder', node.attributes.readingOrder === '2' ? 'rtl' : 'ltr'); this.model = valid ? model : null; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'alignment'; } }]); return AlignmentXform; }(BaseXform); module.exports = AlignmentXform; },{"../../../doc/enums":7,"../../../utils/utils":26,"../base-xform":31}],126:[function(require,module,exports){ "use strict"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable max-classes-per-file */ var BaseXform = require('../base-xform'); var ColorXform = require('./color-xform'); var EdgeXform = /*#__PURE__*/function (_BaseXform) { _inherits(EdgeXform, _BaseXform); var _super = _createSuper(EdgeXform); function EdgeXform(name) { var _this; _classCallCheck(this, EdgeXform); _this = _super.call(this); _this.name = name; _this.map = { color: new ColorXform() }; return _this; } _createClass(EdgeXform, [{ key: "render", value: function render(xmlStream, model, defaultColor) { var color = model && model.color || defaultColor || this.defaultColor; xmlStream.openNode(this.name); if (model && model.style) { xmlStream.addAttribute('style', model.style); if (color) { this.map.color.render(xmlStream, color); } } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.name: { var style = node.attributes.style; if (style) { this.model = { style: style }; } else { this.model = undefined; } return true; } case 'color': this.parser = this.map.color; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } if (name === this.name) { if (this.map.color.model) { if (!this.model) { this.model = {}; } this.model.color = this.map.color.model; } } return false; } }, { key: "validStyle", value: function validStyle(value) { return EdgeXform.validStyleValues[value]; } }, { key: "tag", get: function get() { return this.name; } }]); return EdgeXform; }(BaseXform); EdgeXform.validStyleValues = ['thin', 'dotted', 'dashDot', 'hair', 'dashDotDot', 'slantDashDot', 'mediumDashed', 'mediumDashDotDot', 'mediumDashDot', 'medium', 'double', 'thick'].reduce(function (p, v) { p[v] = true; return p; }, {}); // Border encapsulates translation from border model to/from xlsx var BorderXform = /*#__PURE__*/function (_BaseXform2) { _inherits(BorderXform, _BaseXform2); var _super2 = _createSuper(BorderXform); function BorderXform() { var _this2; _classCallCheck(this, BorderXform); _this2 = _super2.call(this); _this2.map = { top: new EdgeXform('top'), left: new EdgeXform('left'), bottom: new EdgeXform('bottom'), right: new EdgeXform('right'), diagonal: new EdgeXform('diagonal') }; return _this2; } _createClass(BorderXform, [{ key: "render", value: function render(xmlStream, model) { var color = model.color; xmlStream.openNode('border'); if (model.diagonal && model.diagonal.style) { if (model.diagonal.up) { xmlStream.addAttribute('diagonalUp', '1'); } if (model.diagonal.down) { xmlStream.addAttribute('diagonalDown', '1'); } } function add(edgeModel, edgeXform) { if (edgeModel && !edgeModel.color && model.color) { // don't mess with incoming models edgeModel = _objectSpread(_objectSpread({}, edgeModel), {}, { color: model.color }); } edgeXform.render(xmlStream, edgeModel, color); } add(model.left, this.map.left); add(model.right, this.map.right); add(model.top, this.map.top); add(model.bottom, this.map.bottom); add(model.diagonal, this.map.diagonal); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'border': this.reset(); this.diagonalUp = !!node.attributes.diagonalUp; this.diagonalDown = !!node.attributes.diagonalDown; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } if (name === 'border') { var model = this.model = {}; var add = function add(key, edgeModel, extensions) { if (edgeModel) { if (extensions) { Object.assign(edgeModel, extensions); } model[key] = edgeModel; } }; add('left', this.map.left.model); add('right', this.map.right.model); add('top', this.map.top.model); add('bottom', this.map.bottom.model); add('diagonal', this.map.diagonal.model, { up: this.diagonalUp, down: this.diagonalDown }); } return false; } }]); return BorderXform; }(BaseXform); module.exports = BorderXform; },{"../base-xform":31,"./color-xform":127}],127:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); // Color encapsulates translation from color model to/from xlsx var ColorXform = /*#__PURE__*/function (_BaseXform) { _inherits(ColorXform, _BaseXform); var _super = _createSuper(ColorXform); function ColorXform(name) { var _this; _classCallCheck(this, ColorXform); _this = _super.call(this); // this.name controls the xm node name _this.name = name || 'color'; return _this; } _createClass(ColorXform, [{ key: "render", value: function render(xmlStream, model) { if (model) { xmlStream.openNode(this.name); if (model.argb) { xmlStream.addAttribute('rgb', model.argb); } else if (model.theme !== undefined) { xmlStream.addAttribute('theme', model.theme); if (model.tint !== undefined) { xmlStream.addAttribute('tint', model.tint); } } else if (model.indexed !== undefined) { xmlStream.addAttribute('indexed', model.indexed); } else { xmlStream.addAttribute('auto', '1'); } xmlStream.closeNode(); return true; } return false; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.name) { if (node.attributes.rgb) { this.model = { argb: node.attributes.rgb }; } else if (node.attributes.theme) { this.model = { theme: parseInt(node.attributes.theme, 10) }; if (node.attributes.tint) { this.model.tint = parseFloat(node.attributes.tint); } } else if (node.attributes.indexed) { this.model = { indexed: parseInt(node.attributes.indexed, 10) }; } else { this.model = undefined; } return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return this.name; } }]); return ColorXform; }(BaseXform); module.exports = ColorXform; },{"../base-xform":31}],128:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var AlignmentXform = require('./alignment-xform'); var BorderXform = require('./border-xform'); var FillXform = require('./fill-xform'); var FontXform = require('./font-xform'); var NumFmtXform = require('./numfmt-xform'); var ProtectionXform = require('./protection-xform'); // // Optional // Optional // // Style assists translation from style model to/from xlsx var DxfXform = /*#__PURE__*/function (_BaseXform) { _inherits(DxfXform, _BaseXform); var _super = _createSuper(DxfXform); function DxfXform() { var _this; _classCallCheck(this, DxfXform); _this = _super.call(this); _this.map = { alignment: new AlignmentXform(), border: new BorderXform(), fill: new FillXform(), font: new FontXform(), numFmt: new NumFmtXform(), protection: new ProtectionXform() }; return _this; } _createClass(DxfXform, [{ key: "render", // how do we generate dxfid? value: function render(xmlStream, model) { xmlStream.openNode(this.tag); if (model.font) { this.map.font.render(xmlStream, model.font); } if (model.numFmt) { this.map.numFmt.render(xmlStream, model.numFmt); } if (model.fill) { this.map.fill.render(xmlStream, model.fill); } if (model.alignment) { this.map.alignment.render(xmlStream, model.alignment); } if (model.border) { this.map.border.render(xmlStream, model.border); } if (model.protection) { this.map.protection.render(xmlStream, model.protection); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: // this node is often repeated. Need to reset children this.reset(); return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } return true; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } if (name === this.tag) { this.model = { alignment: this.map.alignment.model, border: this.map.border.model, fill: this.map.fill.model, font: this.map.font.model, numFmt: this.map.numFmt.model, protection: this.map.protection.model }; return false; } return true; } }, { key: "tag", get: function get() { return 'dxf'; } }]); return DxfXform; }(BaseXform); module.exports = DxfXform; },{"../base-xform":31,"./alignment-xform":125,"./border-xform":126,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./protection-xform":132}],129:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable max-classes-per-file */ var BaseXform = require('../base-xform'); var ColorXform = require('./color-xform'); var StopXform = /*#__PURE__*/function (_BaseXform) { _inherits(StopXform, _BaseXform); var _super = _createSuper(StopXform); function StopXform() { var _this; _classCallCheck(this, StopXform); _this = _super.call(this); _this.map = { color: new ColorXform() }; return _this; } _createClass(StopXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('stop'); xmlStream.addAttribute('position', model.position); this.map.color.render(xmlStream, model.color); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'stop': this.model = { position: parseFloat(node.attributes.position) }; return true; case 'color': this.parser = this.map.color; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.color = this.parser.model; this.parser = undefined; } return true; } return false; } }, { key: "tag", get: function get() { return 'stop'; } }]); return StopXform; }(BaseXform); var PatternFillXform = /*#__PURE__*/function (_BaseXform2) { _inherits(PatternFillXform, _BaseXform2); var _super2 = _createSuper(PatternFillXform); function PatternFillXform() { var _this2; _classCallCheck(this, PatternFillXform); _this2 = _super2.call(this); _this2.map = { fgColor: new ColorXform('fgColor'), bgColor: new ColorXform('bgColor') }; return _this2; } _createClass(PatternFillXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('patternFill'); xmlStream.addAttribute('patternType', model.pattern); if (model.fgColor) { this.map.fgColor.render(xmlStream, model.fgColor); } if (model.bgColor) { this.map.bgColor.render(xmlStream, model.bgColor); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'patternFill': this.model = { type: 'pattern', pattern: node.attributes.patternType }; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { if (this.parser.model) { this.model[name] = this.parser.model; } this.parser = undefined; } return true; } return false; } }, { key: "name", get: function get() { return 'pattern'; } }, { key: "tag", get: function get() { return 'patternFill'; } }]); return PatternFillXform; }(BaseXform); var GradientFillXform = /*#__PURE__*/function (_BaseXform3) { _inherits(GradientFillXform, _BaseXform3); var _super3 = _createSuper(GradientFillXform); function GradientFillXform() { var _this3; _classCallCheck(this, GradientFillXform); _this3 = _super3.call(this); _this3.map = { stop: new StopXform() }; // if (model) { // this.gradient = model.gradient; // if (model.center) { // this.center = model.center; // } // if (model.degree !== undefined) { // this.degree = model.degree; // } // this.stops = model.stops.map(function(stop) { return new StopXform(stop); }); // } else { // this.stops = []; // } return _this3; } _createClass(GradientFillXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('gradientFill'); switch (model.gradient) { case 'angle': xmlStream.addAttribute('degree', model.degree); break; case 'path': xmlStream.addAttribute('type', 'path'); if (model.center.left) { xmlStream.addAttribute('left', model.center.left); if (model.center.right === undefined) { xmlStream.addAttribute('right', model.center.left); } } if (model.center.right) { xmlStream.addAttribute('right', model.center.right); } if (model.center.top) { xmlStream.addAttribute('top', model.center.top); if (model.center.bottom === undefined) { xmlStream.addAttribute('bottom', model.center.top); } } if (model.center.bottom) { xmlStream.addAttribute('bottom', model.center.bottom); } break; default: break; } var stopXform = this.map.stop; model.stops.forEach(function (stopModel) { stopXform.render(xmlStream, stopModel); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'gradientFill': { var model = this.model = { stops: [] }; if (node.attributes.degree) { model.gradient = 'angle'; model.degree = parseInt(node.attributes.degree, 10); } else if (node.attributes.type === 'path') { model.gradient = 'path'; model.center = { left: node.attributes.left ? parseFloat(node.attributes.left) : 0, top: node.attributes.top ? parseFloat(node.attributes.top) : 0 }; if (node.attributes.right !== node.attributes.left) { model.center.right = node.attributes.right ? parseFloat(node.attributes.right) : 0; } if (node.attributes.bottom !== node.attributes.top) { model.center.bottom = node.attributes.bottom ? parseFloat(node.attributes.bottom) : 0; } } return true; } case 'stop': this.parser = this.map.stop; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.stops.push(this.parser.model); this.parser = undefined; } return true; } return false; } }, { key: "name", get: function get() { return 'gradient'; } }, { key: "tag", get: function get() { return 'gradientFill'; } }]); return GradientFillXform; }(BaseXform); // Fill encapsulates translation from fill model to/from xlsx var FillXform = /*#__PURE__*/function (_BaseXform4) { _inherits(FillXform, _BaseXform4); var _super4 = _createSuper(FillXform); function FillXform() { var _this4; _classCallCheck(this, FillXform); _this4 = _super4.call(this); _this4.map = { patternFill: new PatternFillXform(), gradientFill: new GradientFillXform() }; return _this4; } _createClass(FillXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.addRollback(); xmlStream.openNode('fill'); switch (model.type) { case 'pattern': this.map.patternFill.render(xmlStream, model); break; case 'gradient': this.map.gradientFill.render(xmlStream, model); break; default: xmlStream.rollback(); return; } xmlStream.closeNode(); xmlStream.commit(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'fill': this.model = {}; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model = this.parser.model; this.model.type = this.parser.name; this.parser = undefined; } return true; } return false; } }, { key: "validStyle", value: function validStyle(value) { return FillXform.validPatternValues[value]; } }, { key: "tag", get: function get() { return 'fill'; } }]); return FillXform; }(BaseXform); FillXform.validPatternValues = ['none', 'solid', 'darkVertical', 'darkGray', 'mediumGray', 'lightGray', 'gray125', 'gray0625', 'darkHorizontal', 'darkVertical', 'darkDown', 'darkUp', 'darkGrid', 'darkTrellis', 'lightHorizontal', 'lightVertical', 'lightDown', 'lightUp', 'lightGrid', 'lightTrellis', 'lightGrid'].reduce(function (p, v) { p[v] = true; return p; }, {}); FillXform.StopXform = StopXform; FillXform.PatternFillXform = PatternFillXform; FillXform.GradientFillXform = GradientFillXform; module.exports = FillXform; },{"../base-xform":31,"./color-xform":127}],130:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var ColorXform = require('./color-xform'); var BooleanXform = require('../simple/boolean-xform'); var IntegerXform = require('../simple/integer-xform'); var StringXform = require('../simple/string-xform'); var UnderlineXform = require('./underline-xform'); var _ = require('../../../utils/under-dash'); var BaseXform = require('../base-xform'); // Font encapsulates translation from font model to xlsx var FontXform = /*#__PURE__*/function (_BaseXform) { _inherits(FontXform, _BaseXform); var _super = _createSuper(FontXform); function FontXform(options) { var _this; _classCallCheck(this, FontXform); _this = _super.call(this); _this.options = options || FontXform.OPTIONS; _this.map = { b: { prop: 'bold', xform: new BooleanXform({ tag: 'b', attr: 'val' }) }, i: { prop: 'italic', xform: new BooleanXform({ tag: 'i', attr: 'val' }) }, u: { prop: 'underline', xform: new UnderlineXform() }, charset: { prop: 'charset', xform: new IntegerXform({ tag: 'charset', attr: 'val' }) }, color: { prop: 'color', xform: new ColorXform() }, condense: { prop: 'condense', xform: new BooleanXform({ tag: 'condense', attr: 'val' }) }, extend: { prop: 'extend', xform: new BooleanXform({ tag: 'extend', attr: 'val' }) }, family: { prop: 'family', xform: new IntegerXform({ tag: 'family', attr: 'val' }) }, outline: { prop: 'outline', xform: new BooleanXform({ tag: 'outline', attr: 'val' }) }, vertAlign: { prop: 'vertAlign', xform: new StringXform({ tag: 'vertAlign', attr: 'val' }) }, scheme: { prop: 'scheme', xform: new StringXform({ tag: 'scheme', attr: 'val' }) }, shadow: { prop: 'shadow', xform: new BooleanXform({ tag: 'shadow', attr: 'val' }) }, strike: { prop: 'strike', xform: new BooleanXform({ tag: 'strike', attr: 'val' }) }, sz: { prop: 'size', xform: new IntegerXform({ tag: 'sz', attr: 'val' }) } }; _this.map[_this.options.fontNameTag] = { prop: 'name', xform: new StringXform({ tag: _this.options.fontNameTag, attr: 'val' }) }; return _this; } _createClass(FontXform, [{ key: "render", value: function render(xmlStream, model) { var map = this.map; xmlStream.openNode(this.options.tagName); _.each(this.map, function (defn, tag) { map[tag].xform.render(xmlStream, model[defn.prop]); }); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } if (this.map[node.name]) { this.parser = this.map[node.name].xform; return this.parser.parseOpen(node); } switch (node.name) { case this.options.tagName: this.model = {}; return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser && !this.parser.parseClose(name)) { var item = this.map[name]; if (this.parser.model) { this.model[item.prop] = this.parser.model; } this.parser = undefined; return true; } switch (name) { case this.options.tagName: return false; default: return true; } } }, { key: "tag", get: function get() { return this.options.tagName; } }]); return FontXform; }(BaseXform); FontXform.OPTIONS = { tagName: 'font', fontNameTag: 'name' }; module.exports = FontXform; },{"../../../utils/under-dash":25,"../base-xform":31,"../simple/boolean-xform":115,"../simple/integer-xform":117,"../simple/string-xform":118,"./color-xform":127,"./underline-xform":135}],131:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var _ = require('../../../utils/under-dash'); var defaultNumFormats = require('../../defaultnumformats'); var BaseXform = require('../base-xform'); function hashDefaultFormats() { var hash = {}; _.each(defaultNumFormats, function (dnf, id) { if (dnf.f) { hash[dnf.f] = parseInt(id, 10); } // at some point, add the other cultures here... }); return hash; } var defaultFmtHash = hashDefaultFormats(); // NumFmt encapsulates translation between number format and xlsx var NumFmtXform = /*#__PURE__*/function (_BaseXform) { _inherits(NumFmtXform, _BaseXform); var _super = _createSuper(NumFmtXform); function NumFmtXform(id, formatCode) { var _this; _classCallCheck(this, NumFmtXform); _this = _super.call(this); _this.id = id; _this.formatCode = formatCode; return _this; } _createClass(NumFmtXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode('numFmt', { numFmtId: model.id, formatCode: model.formatCode }); } }, { key: "parseOpen", value: function parseOpen(node) { switch (node.name) { case 'numFmt': this.model = { id: parseInt(node.attributes.numFmtId, 10), formatCode: node.attributes.formatCode.replace(/[\\](.)/g, '$1') }; return true; default: return false; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'numFmt'; } }]); return NumFmtXform; }(BaseXform); NumFmtXform.getDefaultFmtId = function getDefaultFmtId(formatCode) { return defaultFmtHash[formatCode]; }; NumFmtXform.getDefaultFmtCode = function getDefaultFmtCode(numFmtId) { return defaultNumFormats[numFmtId] && defaultNumFormats[numFmtId].f; }; module.exports = NumFmtXform; },{"../../../utils/under-dash":25,"../../defaultnumformats":29,"../base-xform":31}],132:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var validation = { boolean: function boolean(value, dflt) { if (value === undefined) { return dflt; } return value; } }; // Protection encapsulates translation from style.protection model to/from xlsx var ProtectionXform = /*#__PURE__*/function (_BaseXform) { _inherits(ProtectionXform, _BaseXform); var _super = _createSuper(ProtectionXform); function ProtectionXform() { _classCallCheck(this, ProtectionXform); return _super.apply(this, arguments); } _createClass(ProtectionXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.addRollback(); xmlStream.openNode('protection'); var isValid = false; function add(name, value) { if (value !== undefined) { xmlStream.addAttribute(name, value); isValid = true; } } add('locked', validation.boolean(model.locked, true) ? undefined : '0'); add('hidden', validation.boolean(model.hidden, false) ? '1' : undefined); xmlStream.closeNode(); if (isValid) { xmlStream.commit(); } else { xmlStream.rollback(); } } }, { key: "parseOpen", value: function parseOpen(node) { var model = { locked: !(node.attributes.locked === '0'), hidden: node.attributes.hidden === '1' }; // only want to record models that differ from defaults var isSignificant = !model.locked || model.hidden; this.model = isSignificant ? model : null; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'protection'; } }]); return ProtectionXform; }(BaseXform); module.exports = ProtectionXform; },{"../base-xform":31}],133:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var AlignmentXform = require('./alignment-xform'); var ProtectionXform = require('./protection-xform'); // // Optional // Optional // // Style assists translation from style model to/from xlsx var StyleXform = /*#__PURE__*/function (_BaseXform) { _inherits(StyleXform, _BaseXform); var _super = _createSuper(StyleXform); function StyleXform(options) { var _this; _classCallCheck(this, StyleXform); _this = _super.call(this); _this.xfId = !!(options && options.xfId); _this.map = { alignment: new AlignmentXform(), protection: new ProtectionXform() }; return _this; } _createClass(StyleXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.openNode('xf', { numFmtId: model.numFmtId || 0, fontId: model.fontId || 0, fillId: model.fillId || 0, borderId: model.borderId || 0 }); if (this.xfId) { xmlStream.addAttribute('xfId', model.xfId || 0); } if (model.numFmtId) { xmlStream.addAttribute('applyNumberFormat', '1'); } if (model.fontId) { xmlStream.addAttribute('applyFont', '1'); } if (model.fillId) { xmlStream.addAttribute('applyFill', '1'); } if (model.borderId) { xmlStream.addAttribute('applyBorder', '1'); } if (model.alignment) { xmlStream.addAttribute('applyAlignment', '1'); } if (model.protection) { xmlStream.addAttribute('applyProtection', '1'); } /** * Rendering tags causes close of XML stream. * Therefore adding attributes must be done before rendering tags. */ if (model.alignment) { this.map.alignment.render(xmlStream, model.alignment); } if (model.protection) { this.map.protection.render(xmlStream, model.protection); } xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } // used during sax parsing of xml to build font object switch (node.name) { case 'xf': this.model = { numFmtId: parseInt(node.attributes.numFmtId, 10), fontId: parseInt(node.attributes.fontId, 10), fillId: parseInt(node.attributes.fillId, 10), borderId: parseInt(node.attributes.borderId, 10) }; if (this.xfId) { this.model.xfId = parseInt(node.attributes.xfId, 10); } return true; case 'alignment': this.parser = this.map.alignment; this.parser.parseOpen(node); return true; case 'protection': this.parser = this.map.protection; this.parser.parseOpen(node); return true; default: return false; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { if (this.map.protection === this.parser) { this.model.protection = this.parser.model; } else { this.model.alignment = this.parser.model; } this.parser = undefined; } return true; } return name !== 'xf'; } }, { key: "tag", get: function get() { return 'xf'; } }]); return StyleXform; }(BaseXform); module.exports = StyleXform; },{"../base-xform":31,"./alignment-xform":125,"./protection-xform":132}],134:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } /* eslint-disable max-classes-per-file */ var Enums = require('../../../doc/enums'); var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var StaticXform = require('../static-xform'); var ListXform = require('../list-xform'); var FontXform = require('./font-xform'); var FillXform = require('./fill-xform'); var BorderXform = require('./border-xform'); var NumFmtXform = require('./numfmt-xform'); var StyleXform = require('./style-xform'); var DxfXform = require('./dxf-xform'); // custom numfmt ids start here var NUMFMT_BASE = 164; // ============================================================================= // StylesXform is used to generate and parse the styles.xml file // it manages the collections of fonts, number formats, alignments, etc var StylesXform = /*#__PURE__*/function (_BaseXform) { _inherits(StylesXform, _BaseXform); var _super = _createSuper(StylesXform); function StylesXform(initialise) { var _this; _classCallCheck(this, StylesXform); _this = _super.call(this); _this.map = { numFmts: new ListXform({ tag: 'numFmts', count: true, childXform: new NumFmtXform() }), fonts: new ListXform({ tag: 'fonts', count: true, childXform: new FontXform(), $: { 'x14ac:knownFonts': 1 } }), fills: new ListXform({ tag: 'fills', count: true, childXform: new FillXform() }), borders: new ListXform({ tag: 'borders', count: true, childXform: new BorderXform() }), cellStyleXfs: new ListXform({ tag: 'cellStyleXfs', count: true, childXform: new StyleXform() }), cellXfs: new ListXform({ tag: 'cellXfs', count: true, childXform: new StyleXform({ xfId: true }) }), dxfs: new ListXform({ tag: 'dxfs', always: true, count: true, childXform: new DxfXform() }), // for style manager numFmt: new NumFmtXform(), font: new FontXform(), fill: new FillXform(), border: new BorderXform(), style: new StyleXform({ xfId: true }), cellStyles: StylesXform.STATIC_XFORMS.cellStyles, tableStyles: StylesXform.STATIC_XFORMS.tableStyles, extLst: StylesXform.STATIC_XFORMS.extLst }; if (initialise) { // StylesXform also acts as style manager and is used to build up styles-model during worksheet processing _this.init(); } return _this; } _createClass(StylesXform, [{ key: "initIndex", value: function initIndex() { this.index = { style: {}, numFmt: {}, numFmtNextId: 164, // start custom format ids here font: {}, border: {}, fill: {} }; } }, { key: "init", value: function init() { // Prepare for Style Manager role this.model = { styles: [], numFmts: [], fonts: [], borders: [], fills: [], dxfs: [] }; this.initIndex(); // default (zero) border this._addBorder({}); // add default (all zero) style this._addStyle({ numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0 }); // add default fills this._addFill({ type: 'pattern', pattern: 'none' }); this._addFill({ type: 'pattern', pattern: 'gray125' }); this.weakMap = new WeakMap(); } }, { key: "render", value: function render(xmlStream, model) { model = model || this.model; // // xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('styleSheet', StylesXform.STYLESHEET_ATTRIBUTES); if (this.index) { // model has been built by style manager role (contains xml) if (model.numFmts && model.numFmts.length) { xmlStream.openNode('numFmts', { count: model.numFmts.length }); model.numFmts.forEach(function (numFmtXml) { xmlStream.writeXml(numFmtXml); }); xmlStream.closeNode(); } if (!model.fonts.length) { // default (zero) font this._addFont({ size: 11, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' }); } xmlStream.openNode('fonts', { count: model.fonts.length, 'x14ac:knownFonts': 1 }); model.fonts.forEach(function (fontXml) { xmlStream.writeXml(fontXml); }); xmlStream.closeNode(); xmlStream.openNode('fills', { count: model.fills.length }); model.fills.forEach(function (fillXml) { xmlStream.writeXml(fillXml); }); xmlStream.closeNode(); xmlStream.openNode('borders', { count: model.borders.length }); model.borders.forEach(function (borderXml) { xmlStream.writeXml(borderXml); }); xmlStream.closeNode(); this.map.cellStyleXfs.render(xmlStream, [{ numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0 }]); xmlStream.openNode('cellXfs', { count: model.styles.length }); model.styles.forEach(function (styleXml) { xmlStream.writeXml(styleXml); }); xmlStream.closeNode(); } else { // model is plain JSON and needs to be xformed this.map.numFmts.render(xmlStream, model.numFmts); this.map.fonts.render(xmlStream, model.fonts); this.map.fills.render(xmlStream, model.fills); this.map.borders.render(xmlStream, model.borders); this.map.cellStyleXfs.render(xmlStream, [{ numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0 }]); this.map.cellXfs.render(xmlStream, model.styles); } StylesXform.STATIC_XFORMS.cellStyles.render(xmlStream); this.map.dxfs.render(xmlStream, model.dxfs); StylesXform.STATIC_XFORMS.tableStyles.render(xmlStream); StylesXform.STATIC_XFORMS.extLst.render(xmlStream); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'styleSheet': this.initIndex(); return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } return true; } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { var _this2 = this; if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case 'styleSheet': { this.model = {}; var add = function add(propName, xform) { if (xform.model && xform.model.length) { _this2.model[propName] = xform.model; } }; add('numFmts', this.map.numFmts); add('fonts', this.map.fonts); add('fills', this.map.fills); add('borders', this.map.borders); add('styles', this.map.cellXfs); add('dxfs', this.map.dxfs); // index numFmts this.index = { model: [], numFmt: [] }; if (this.model.numFmts) { var numFmtIndex = this.index.numFmt; this.model.numFmts.forEach(function (numFmt) { numFmtIndex[numFmt.id] = numFmt.formatCode; }); } return false; } default: // not quite sure how we get here! return true; } } // add a cell's style model to the collection // each style property is processed and cross-referenced, etc. // the styleId is returned. Note: cellType is used when numFmt not defined }, { key: "addStyleModel", value: function addStyleModel(model, cellType) { if (!model) { return 0; } // if we have no default font, add it here now if (!this.model.fonts.length) { // default (zero) font this._addFont({ size: 11, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' }); } // if we have seen this style object before, assume it has the same styleId if (this.weakMap && this.weakMap.has(model)) { return this.weakMap.get(model); } var style = {}; cellType = cellType || Enums.ValueType.Number; if (model.numFmt) { style.numFmtId = this._addNumFmtStr(model.numFmt); } else { switch (cellType) { case Enums.ValueType.Number: style.numFmtId = this._addNumFmtStr('General'); break; case Enums.ValueType.Date: style.numFmtId = this._addNumFmtStr('mm-dd-yy'); break; default: break; } } if (model.font) { style.fontId = this._addFont(model.font); } if (model.border) { style.borderId = this._addBorder(model.border); } if (model.fill) { style.fillId = this._addFill(model.fill); } if (model.alignment) { style.alignment = model.alignment; } if (model.protection) { style.protection = model.protection; } var styleId = this._addStyle(style); if (this.weakMap) { this.weakMap.set(model, styleId); } return styleId; } // given a styleId (i.e. s="n"), get the cell's style model // objects are shared where possible. }, { key: "getStyleModel", value: function getStyleModel(id) { // if the style doesn't exist return null var style = this.model.styles[id]; if (!style) return null; // have we built this model before? var model = this.index.model[id]; if (model) return model; // build a new model model = this.index.model[id] = {}; // ------------------------------------------------------- // number format if (style.numFmtId) { var numFmt = this.index.numFmt[style.numFmtId] || NumFmtXform.getDefaultFmtCode(style.numFmtId); if (numFmt) { model.numFmt = numFmt; } } function addStyle(name, group, styleId) { if (styleId || styleId === 0) { var part = group[styleId]; if (part) { model[name] = part; } } } addStyle('font', this.model.fonts, style.fontId); addStyle('border', this.model.borders, style.borderId); addStyle('fill', this.model.fills, style.fillId); // ------------------------------------------------------- // alignment if (style.alignment) { model.alignment = style.alignment; } // ------------------------------------------------------- // protection if (style.protection) { model.protection = style.protection; } return model; } }, { key: "addDxfStyle", value: function addDxfStyle(style) { this.model.dxfs.push(style); return this.model.dxfs.length - 1; } }, { key: "getDxfStyle", value: function getDxfStyle(id) { return this.model.dxfs[id]; } // ========================================================================= // Private Interface }, { key: "_addStyle", value: function _addStyle(style) { var xml = this.map.style.toXml(style); var index = this.index.style[xml]; if (index === undefined) { index = this.index.style[xml] = this.model.styles.length; this.model.styles.push(xml); } return index; } // ========================================================================= // Number Formats }, { key: "_addNumFmtStr", value: function _addNumFmtStr(formatCode) { // check if default format var index = NumFmtXform.getDefaultFmtId(formatCode); if (index !== undefined) return index; // check if already in index = this.index.numFmt[formatCode]; if (index !== undefined) return index; index = this.index.numFmt[formatCode] = NUMFMT_BASE + this.model.numFmts.length; var xml = this.map.numFmt.toXml({ id: index, formatCode: formatCode }); this.model.numFmts.push(xml); return index; } // ========================================================================= // Fonts }, { key: "_addFont", value: function _addFont(font) { var xml = this.map.font.toXml(font); var index = this.index.font[xml]; if (index === undefined) { index = this.index.font[xml] = this.model.fonts.length; this.model.fonts.push(xml); } return index; } // ========================================================================= // Borders }, { key: "_addBorder", value: function _addBorder(border) { var xml = this.map.border.toXml(border); var index = this.index.border[xml]; if (index === undefined) { index = this.index.border[xml] = this.model.borders.length; this.model.borders.push(xml); } return index; } // ========================================================================= // Fills }, { key: "_addFill", value: function _addFill(fill) { var xml = this.map.fill.toXml(fill); var index = this.index.fill[xml]; if (index === undefined) { index = this.index.fill[xml] = this.model.fills.length; this.model.fills.push(xml); } return index; } // ========================================================================= }]); return StylesXform; }(BaseXform); StylesXform.STYLESHEET_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006', 'mc:Ignorable': 'x14ac x16r2', 'xmlns:x14ac': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac', 'xmlns:x16r2': 'http://schemas.microsoft.com/office/spreadsheetml/2015/02/main' }; StylesXform.STATIC_XFORMS = { cellStyles: new StaticXform({ tag: 'cellStyles', $: { count: 1 }, c: [{ tag: 'cellStyle', $: { name: 'Normal', xfId: 0, builtinId: 0 } }] }), dxfs: new StaticXform({ tag: 'dxfs', $: { count: 0 } }), tableStyles: new StaticXform({ tag: 'tableStyles', $: { count: 0, defaultTableStyle: 'TableStyleMedium2', defaultPivotStyle: 'PivotStyleLight16' } }), extLst: new StaticXform({ tag: 'extLst', c: [{ tag: 'ext', $: { uri: '{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}', 'xmlns:x14': 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/main' }, c: [{ tag: 'x14:slicerStyles', $: { defaultSlicerStyle: 'SlicerStyleLight1' } }] }, { tag: 'ext', $: { uri: '{9260A510-F301-46a8-8635-F512D64BE5F5}', 'xmlns:x15': 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main' }, c: [{ tag: 'x15:timelineStyles', $: { defaultTimelineStyle: 'TimeSlicerStyleLight1' } }] }] }) }; // the stylemanager mock acts like StyleManager except that it always returns 0 or {} var StylesXformMock = /*#__PURE__*/function (_StylesXform) { _inherits(StylesXformMock, _StylesXform); var _super2 = _createSuper(StylesXformMock); function StylesXformMock() { var _this3; _classCallCheck(this, StylesXformMock); _this3 = _super2.call(this); _this3.model = { styles: [{ numFmtId: 0, fontId: 0, fillId: 0, borderId: 0, xfId: 0 }], numFmts: [], fonts: [{ size: 11, color: { theme: 1 }, name: 'Calibri', family: 2, scheme: 'minor' }], borders: [{}], fills: [{ type: 'pattern', pattern: 'none' }, { type: 'pattern', pattern: 'gray125' }] }; return _this3; } // ========================================================================= // Style Manager Interface // override normal behaviour - consume and dispose _createClass(StylesXformMock, [{ key: "parseStream", value: function parseStream(stream) { stream.autodrain(); return Promise.resolve(); } // add a cell's style model to the collection // each style property is processed and cross-referenced, etc. // the styleId is returned. Note: cellType is used when numFmt not defined }, { key: "addStyleModel", value: function addStyleModel(model, cellType) { switch (cellType) { case Enums.ValueType.Date: return this.dateStyleId; default: return 0; } } }, { key: "getStyleModel", // given a styleId (i.e. s="n"), get the cell's style model // objects are shared where possible. value: function getStyleModel() /* id */ { return {}; } }, { key: "dateStyleId", get: function get() { if (!this._dateStyleId) { var dateStyle = { numFmtId: NumFmtXform.getDefaultFmtId('mm-dd-yy') }; this._dateStyleId = this.model.styles.length; this.model.styles.push(dateStyle); } return this._dateStyleId; } }]); return StylesXformMock; }(StylesXform); StylesXform.Mock = StylesXformMock; module.exports = StylesXform; },{"../../../doc/enums":7,"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"../static-xform":119,"./border-xform":126,"./dxf-xform":128,"./fill-xform":129,"./font-xform":130,"./numfmt-xform":131,"./style-xform":133}],135:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var UnderlineXform = /*#__PURE__*/function (_BaseXform) { _inherits(UnderlineXform, _BaseXform); var _super = _createSuper(UnderlineXform); function UnderlineXform(model) { var _this; _classCallCheck(this, UnderlineXform); _this = _super.call(this); _this.model = model; return _this; } _createClass(UnderlineXform, [{ key: "render", value: function render(xmlStream, model) { model = model || this.model; if (model === true) { xmlStream.leafNode('u'); } else { var attr = UnderlineXform.Attributes[model]; if (attr) { xmlStream.leafNode('u', attr); } } } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === 'u') { this.model = node.attributes.val || true; } } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'u'; } }]); return UnderlineXform; }(BaseXform); UnderlineXform.Attributes = { single: {}, double: { val: 'double' }, singleAccounting: { val: 'singleAccounting' }, doubleAccounting: { val: 'doubleAccounting' } }; module.exports = UnderlineXform; },{"../base-xform":31}],136:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var FilterColumnXform = require('./filter-column-xform'); var AutoFilterXform = /*#__PURE__*/function (_BaseXform) { _inherits(AutoFilterXform, _BaseXform); var _super = _createSuper(AutoFilterXform); function AutoFilterXform() { var _this; _classCallCheck(this, AutoFilterXform); _this = _super.call(this); _this.map = { filterColumn: new FilterColumnXform() }; return _this; } _createClass(AutoFilterXform, [{ key: "prepare", value: function prepare(model) { var _this2 = this; model.columns.forEach(function (column, index) { _this2.map.filterColumn.prepare(column, { index: index }); }); } }, { key: "render", value: function render(xmlStream, model) { var _this3 = this; xmlStream.openNode(this.tag, { ref: model.autoFilterRef }); model.columns.forEach(function (column) { _this3.map.filterColumn.render(xmlStream, column); }); xmlStream.closeNode(); return true; } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case this.tag: this.model = { autoFilterRef: node.attributes.ref, columns: [] }; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parseOpen(node); return true; } throw new Error("Unexpected xml node in parseOpen: ".concat(JSON.stringify(node))); } } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.columns.push(this.parser.model); this.parser = undefined; } return true; } switch (name) { case this.tag: return false; default: throw new Error("Unexpected xml node in parseClose: ".concat(name)); } } }, { key: "tag", get: function get() { return 'autoFilter'; } }]); return AutoFilterXform; }(BaseXform); module.exports = AutoFilterXform; },{"../base-xform":31,"./filter-column-xform":137}],137:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var FilterColumnXform = /*#__PURE__*/function (_BaseXform) { _inherits(FilterColumnXform, _BaseXform); var _super = _createSuper(FilterColumnXform); function FilterColumnXform() { _classCallCheck(this, FilterColumnXform); return _super.apply(this, arguments); } _createClass(FilterColumnXform, [{ key: "prepare", value: function prepare(model, options) { model.colId = options.index.toString(); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { colId: model.colId, hiddenButton: model.filterButton ? '0' : '1' }); return true; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { var attributes = node.attributes; this.model = { filterButton: attributes.hiddenButton === '0' }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'filterColumn'; } }]); return FilterColumnXform; }(BaseXform); module.exports = FilterColumnXform; },{"../base-xform":31}],138:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var TableColumnXform = /*#__PURE__*/function (_BaseXform) { _inherits(TableColumnXform, _BaseXform); var _super = _createSuper(TableColumnXform); function TableColumnXform() { _classCallCheck(this, TableColumnXform); return _super.apply(this, arguments); } _createClass(TableColumnXform, [{ key: "prepare", value: function prepare(model, options) { model.id = options.index + 1; } }, { key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { id: model.id.toString(), name: model.name, totalsRowLabel: model.totalsRowLabel, totalsRowFunction: model.totalsRowFunction, dxfId: model.dxfId }); return true; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { var attributes = node.attributes; this.model = { name: attributes.name, totalsRowLabel: attributes.totalsRowLabel, totalsRowFunction: attributes.totalsRowFunction, dxfId: attributes.dxfId }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'tableColumn'; } }]); return TableColumnXform; }(BaseXform); module.exports = TableColumnXform; },{"../base-xform":31}],139:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var BaseXform = require('../base-xform'); var TableStyleInfoXform = /*#__PURE__*/function (_BaseXform) { _inherits(TableStyleInfoXform, _BaseXform); var _super = _createSuper(TableStyleInfoXform); function TableStyleInfoXform() { _classCallCheck(this, TableStyleInfoXform); return _super.apply(this, arguments); } _createClass(TableStyleInfoXform, [{ key: "render", value: function render(xmlStream, model) { xmlStream.leafNode(this.tag, { name: model.theme ? model.theme : undefined, showFirstColumn: model.showFirstColumn ? '1' : '0', showLastColumn: model.showLastColumn ? '1' : '0', showRowStripes: model.showRowStripes ? '1' : '0', showColumnStripes: model.showColumnStripes ? '1' : '0' }); return true; } }, { key: "parseOpen", value: function parseOpen(node) { if (node.name === this.tag) { var attributes = node.attributes; this.model = { theme: attributes.name ? attributes.name : null, showFirstColumn: attributes.showFirstColumn === '1', showLastColumn: attributes.showLastColumn === '1', showRowStripes: attributes.showRowStripes === '1', showColumnStripes: attributes.showColumnStripes === '1' }; return true; } return false; } }, { key: "parseText", value: function parseText() {} }, { key: "parseClose", value: function parseClose() { return false; } }, { key: "tag", get: function get() { return 'tableStyleInfo'; } }]); return TableStyleInfoXform; }(BaseXform); module.exports = TableStyleInfoXform; },{"../base-xform":31}],140:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } var XmlStream = require('../../../utils/xml-stream'); var BaseXform = require('../base-xform'); var ListXform = require('../list-xform'); var AutoFilterXform = require('./auto-filter-xform'); var TableColumnXform = require('./table-column-xform'); var TableStyleInfoXform = require('./table-style-info-xform'); var TableXform = /*#__PURE__*/function (_BaseXform) { _inherits(TableXform, _BaseXform); var _super = _createSuper(TableXform); function TableXform() { var _this; _classCallCheck(this, TableXform); _this = _super.call(this); _this.map = { autoFilter: new AutoFilterXform(), tableColumns: new ListXform({ tag: 'tableColumns', count: true, empty: true, childXform: new TableColumnXform() }), tableStyleInfo: new TableStyleInfoXform() }; return _this; } _createClass(TableXform, [{ key: "prepare", value: function prepare(model, options) { this.map.autoFilter.prepare(model); this.map.tableColumns.prepare(model.columns, options); } }, { key: "render", value: function render(xmlStream, model) { xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode(this.tag, _objectSpread(_objectSpread({}, TableXform.TABLE_ATTRIBUTES), {}, { id: model.id, name: model.name, displayName: model.displayName || model.name, ref: model.tableRef, totalsRowCount: model.totalsRow ? '1' : undefined, totalsRowShown: model.totalsRow ? undefined : '1', headerRowCount: model.headerRow ? '1' : '0' })); this.map.autoFilter.render(xmlStream, model); this.map.tableColumns.render(xmlStream, model.columns); this.map.tableStyleInfo.render(xmlStream, model.style); xmlStream.closeNode(); } }, { key: "parseOpen", value: function parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } var name = node.name, attributes = node.attributes; switch (name) { case this.tag: this.reset(); this.model = { name: attributes.name, displayName: attributes.displayName || attributes.name, tableRef: attributes.ref, totalsRow: attributes.totalsRowCount === '1', headerRow: attributes.headerRowCount === '1' }; break; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); } break; } return true; } }, { key: "parseText", value: function parseText(text) { if (this.parser) { this.parser.parseText(text); } } }, { key: "parseClose", value: function parseClose(name) { var _this2 = this; if (this.parser) { if (!this.parser.parseClose(name)) { this.parser = undefined; } return true; } switch (name) { case this.tag: this.model.columns = this.map.tableColumns.model; if (this.map.autoFilter.model) { this.model.autoFilterRef = this.map.autoFilter.model.autoFilterRef; this.map.autoFilter.model.columns.forEach(function (column, index) { _this2.model.columns[index].filterButton = column.filterButton; }); } this.model.style = this.map.tableStyleInfo.model; return false; default: // could be some unrecognised tags return true; } } }, { key: "reconcile", value: function reconcile(model, options) { // fetch the dfxs from styles model.columns.forEach(function (column) { if (column.dxfId !== undefined) { column.style = options.styles.getDxfStyle(column.dxfId); } }); } }, { key: "tag", get: function get() { return 'table'; } }]); return TableXform; }(BaseXform); TableXform.TABLE_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', 'xmlns:mc': 'http://schemas.openxmlformats.org/markup-compatibility/2006', 'mc:Ignorable': 'xr xr3', 'xmlns:xr': 'http://schemas.microsoft.com/office/spreadsheetml/2014/revision', 'xmlns:xr3': 'http://schemas.microsoft.com/office/spreadsheetml/2016/revision3' // 'xr:uid': '{00000000-000C-0000-FFFF-FFFF00000000}', }; module.exports = TableXform; },{"../../../utils/xml-stream":27,"../base-xform":31,"../list-xform":70,"./auto-filter-xform":136,"./table-column-xform":138,"./table-style-info-xform":139}],141:[function(require,module,exports){ (function (process,Buffer){ "use strict"; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _asyncIterator(iterable) { var method; if (typeof Symbol !== "undefined") { if (Symbol.asyncIterator) { method = iterable[Symbol.asyncIterator]; if (method != null) return method.call(iterable); } if (Symbol.iterator) { method = iterable[Symbol.iterator]; if (method != null) return method.call(iterable); } } throw new TypeError("Object is not async iterable"); } var fs = require('fs'); var JSZip = require('jszip'); var _require = require('readable-stream'), PassThrough = _require.PassThrough; var ZipStream = require('../utils/zip-stream'); var StreamBuf = require('../utils/stream-buf'); var utils = require('../utils/utils'); var XmlStream = require('../utils/xml-stream'); var _require2 = require('../utils/browser-buffer-decode'), bufferToString = _require2.bufferToString; var StylesXform = require('./xform/style/styles-xform'); var CoreXform = require('./xform/core/core-xform'); var SharedStringsXform = require('./xform/strings/shared-strings-xform'); var RelationshipsXform = require('./xform/core/relationships-xform'); var ContentTypesXform = require('./xform/core/content-types-xform'); var AppXform = require('./xform/core/app-xform'); var WorkbookXform = require('./xform/book/workbook-xform'); var WorksheetXform = require('./xform/sheet/worksheet-xform'); var DrawingXform = require('./xform/drawing/drawing-xform'); var TableXform = require('./xform/table/table-xform'); var CommentsXform = require('./xform/comment/comments-xform'); var VmlNotesXform = require('./xform/comment/vml-notes-xform'); var theme1Xml = require('./xml/theme1.js'); function fsReadFileAsync(filename, options) { return new Promise(function (resolve, reject) { fs.readFile(filename, options, function (error, data) { if (error) { reject(error); } else { resolve(data); } }); }); } var XLSX = /*#__PURE__*/function () { function XLSX(workbook) { _classCallCheck(this, XLSX); this.workbook = workbook; } // =============================================================================== // Workbook // ========================================================================= // Read _createClass(XLSX, [{ key: "readFile", value: function () { var _readFile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(filename, options) { var stream, workbook; return regeneratorRuntime.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return utils.fs.exists(filename); case 2: if (_context.sent) { _context.next = 4; break; } throw new Error("File not found: ".concat(filename)); case 4: stream = fs.createReadStream(filename); _context.prev = 5; _context.next = 8; return this.read(stream, options); case 8: workbook = _context.sent; stream.close(); return _context.abrupt("return", workbook); case 13: _context.prev = 13; _context.t0 = _context["catch"](5); stream.close(); throw _context.t0; case 17: case "end": return _context.stop(); } } }, _callee, this, [[5, 13]]); })); function readFile(_x, _x2) { return _readFile.apply(this, arguments); } return readFile; }() }, { key: "parseRels", value: function parseRels(stream) { var xform = new RelationshipsXform(); return xform.parseStream(stream); } }, { key: "parseWorkbook", value: function parseWorkbook(stream) { var xform = new WorkbookXform(); return xform.parseStream(stream); } }, { key: "parseSharedStrings", value: function parseSharedStrings(stream) { var xform = new SharedStringsXform(); return xform.parseStream(stream); } }, { key: "reconcile", value: function reconcile(model, options) { var workbookXform = new WorkbookXform(); var worksheetXform = new WorksheetXform(options); var drawingXform = new DrawingXform(); var tableXform = new TableXform(); workbookXform.reconcile(model); // reconcile drawings with their rels var drawingOptions = { media: model.media, mediaIndex: model.mediaIndex }; Object.keys(model.drawings).forEach(function (name) { var drawing = model.drawings[name]; var drawingRel = model.drawingRels[name]; if (drawingRel) { drawingOptions.rels = drawingRel.reduce(function (o, rel) { o[rel.Id] = rel; return o; }, {}); (drawing.anchors || []).forEach(function (anchor) { var hyperlinks = anchor.picture && anchor.picture.hyperlinks; if (hyperlinks && drawingOptions.rels[hyperlinks.rId]) { hyperlinks.hyperlink = drawingOptions.rels[hyperlinks.rId].Target; delete hyperlinks.rId; } }); drawingXform.reconcile(drawing, drawingOptions); } }); // reconcile tables with the default styles var tableOptions = { styles: model.styles }; Object.values(model.tables).forEach(function (table) { tableXform.reconcile(table, tableOptions); }); var sheetOptions = { styles: model.styles, sharedStrings: model.sharedStrings, media: model.media, mediaIndex: model.mediaIndex, date1904: model.properties && model.properties.date1904, drawings: model.drawings, comments: model.comments, tables: model.tables, vmlDrawings: model.vmlDrawings }; model.worksheets.forEach(function (worksheet) { worksheet.relationships = model.worksheetRels[worksheet.sheetNo]; worksheetXform.reconcile(worksheet, sheetOptions); }); // delete unnecessary parts delete model.worksheetHash; delete model.worksheetRels; delete model.globalRels; delete model.sharedStrings; delete model.workbookRels; delete model.sheetDefs; delete model.styles; delete model.mediaIndex; delete model.drawings; delete model.drawingRels; delete model.vmlDrawings; } }, { key: "_processWorksheetEntry", value: function () { var _processWorksheetEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(stream, model, sheetNo, options, path) { var xform, worksheet; return regeneratorRuntime.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: xform = new WorksheetXform(options); _context2.next = 3; return xform.parseStream(stream); case 3: worksheet = _context2.sent; worksheet.sheetNo = sheetNo; model.worksheetHash[path] = worksheet; model.worksheets.push(worksheet); case 7: case "end": return _context2.stop(); } } }, _callee2); })); function _processWorksheetEntry(_x3, _x4, _x5, _x6, _x7) { return _processWorksheetEntry2.apply(this, arguments); } return _processWorksheetEntry; }() }, { key: "_processCommentEntry", value: function () { var _processCommentEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(stream, model, name) { var xform, comments; return regeneratorRuntime.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: xform = new CommentsXform(); _context3.next = 3; return xform.parseStream(stream); case 3: comments = _context3.sent; model.comments["../".concat(name, ".xml")] = comments; case 5: case "end": return _context3.stop(); } } }, _callee3); })); function _processCommentEntry(_x8, _x9, _x10) { return _processCommentEntry2.apply(this, arguments); } return _processCommentEntry; }() }, { key: "_processTableEntry", value: function () { var _processTableEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4(stream, model, name) { var xform, table; return regeneratorRuntime.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: xform = new TableXform(); _context4.next = 3; return xform.parseStream(stream); case 3: table = _context4.sent; model.tables["../tables/".concat(name, ".xml")] = table; case 5: case "end": return _context4.stop(); } } }, _callee4); })); function _processTableEntry(_x11, _x12, _x13) { return _processTableEntry2.apply(this, arguments); } return _processTableEntry; }() }, { key: "_processWorksheetRelsEntry", value: function () { var _processWorksheetRelsEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(stream, model, sheetNo) { var xform, relationships; return regeneratorRuntime.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: xform = new RelationshipsXform(); _context5.next = 3; return xform.parseStream(stream); case 3: relationships = _context5.sent; model.worksheetRels[sheetNo] = relationships; case 5: case "end": return _context5.stop(); } } }, _callee5); })); function _processWorksheetRelsEntry(_x14, _x15, _x16) { return _processWorksheetRelsEntry2.apply(this, arguments); } return _processWorksheetRelsEntry; }() }, { key: "_processMediaEntry", value: function () { var _processMediaEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee6(entry, model, filename) { var lastDot, extension, name; return regeneratorRuntime.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: lastDot = filename.lastIndexOf('.'); // if we can't determine extension, ignore it if (!(lastDot >= 1)) { _context6.next = 6; break; } extension = filename.substr(lastDot + 1); name = filename.substr(0, lastDot); _context6.next = 6; return new Promise(function (resolve, reject) { var streamBuf = new StreamBuf(); streamBuf.on('finish', function () { model.mediaIndex[filename] = model.media.length; model.mediaIndex[name] = model.media.length; var medium = { type: 'image', name: name, extension: extension, buffer: streamBuf.toBuffer() }; model.media.push(medium); resolve(); }); entry.on('error', function (error) { reject(error); }); entry.pipe(streamBuf); }); case 6: case "end": return _context6.stop(); } } }, _callee6); })); function _processMediaEntry(_x17, _x18, _x19) { return _processMediaEntry2.apply(this, arguments); } return _processMediaEntry; }() }, { key: "_processDrawingEntry", value: function () { var _processDrawingEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee7(entry, model, name) { var xform, drawing; return regeneratorRuntime.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: xform = new DrawingXform(); _context7.next = 3; return xform.parseStream(entry); case 3: drawing = _context7.sent; model.drawings[name] = drawing; case 5: case "end": return _context7.stop(); } } }, _callee7); })); function _processDrawingEntry(_x20, _x21, _x22) { return _processDrawingEntry2.apply(this, arguments); } return _processDrawingEntry; }() }, { key: "_processDrawingRelsEntry", value: function () { var _processDrawingRelsEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee8(entry, model, name) { var xform, relationships; return regeneratorRuntime.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: xform = new RelationshipsXform(); _context8.next = 3; return xform.parseStream(entry); case 3: relationships = _context8.sent; model.drawingRels[name] = relationships; case 5: case "end": return _context8.stop(); } } }, _callee8); })); function _processDrawingRelsEntry(_x23, _x24, _x25) { return _processDrawingRelsEntry2.apply(this, arguments); } return _processDrawingRelsEntry; }() }, { key: "_processVmlDrawingEntry", value: function () { var _processVmlDrawingEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee9(entry, model, name) { var xform, vmlDrawing; return regeneratorRuntime.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: xform = new VmlNotesXform(); _context9.next = 3; return xform.parseStream(entry); case 3: vmlDrawing = _context9.sent; model.vmlDrawings["../drawings/".concat(name, ".vml")] = vmlDrawing; case 5: case "end": return _context9.stop(); } } }, _callee9); })); function _processVmlDrawingEntry(_x26, _x27, _x28) { return _processVmlDrawingEntry2.apply(this, arguments); } return _processVmlDrawingEntry; }() }, { key: "_processThemeEntry", value: function () { var _processThemeEntry2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee10(entry, model, name) { return regeneratorRuntime.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { case 0: _context10.next = 2; return new Promise(function (resolve, reject) { // TODO: stream entry into buffer and store the xml in the model.themes[] var stream = new StreamBuf(); entry.on('error', reject); stream.on('error', reject); stream.on('finish', function () { model.themes[name] = stream.read().toString(); resolve(); }); entry.pipe(stream); }); case 2: case "end": return _context10.stop(); } } }, _callee10); })); function _processThemeEntry(_x29, _x30, _x31) { return _processThemeEntry2.apply(this, arguments); } return _processThemeEntry; }() /** * @deprecated since version 4.0. You should use `#read` instead. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md */ }, { key: "createInputStream", value: function createInputStream() { throw new Error('`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 5.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md'); } }, { key: "read", value: function () { var _read = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee11(stream, options) { var chunks, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, chunk; return regeneratorRuntime.wrap(function _callee11$(_context11) { while (1) { switch (_context11.prev = _context11.next) { case 0: // TODO: Remove once node v8 is deprecated // Detect and upgrade old streams if (!stream[Symbol.asyncIterator] && stream.pipe) { stream = stream.pipe(new PassThrough()); } chunks = []; _iteratorNormalCompletion = true; _didIteratorError = false; _context11.prev = 4; _iterator = _asyncIterator(stream); case 6: _context11.next = 8; return _iterator.next(); case 8: _step = _context11.sent; _iteratorNormalCompletion = _step.done; _context11.next = 12; return _step.value; case 12: _value = _context11.sent; if (_iteratorNormalCompletion) { _context11.next = 19; break; } chunk = _value; chunks.push(chunk); case 16: _iteratorNormalCompletion = true; _context11.next = 6; break; case 19: _context11.next = 25; break; case 21: _context11.prev = 21; _context11.t0 = _context11["catch"](4); _didIteratorError = true; _iteratorError = _context11.t0; case 25: _context11.prev = 25; _context11.prev = 26; if (!(!_iteratorNormalCompletion && _iterator.return != null)) { _context11.next = 30; break; } _context11.next = 30; return _iterator.return(); case 30: _context11.prev = 30; if (!_didIteratorError) { _context11.next = 33; break; } throw _iteratorError; case 33: return _context11.finish(30); case 34: return _context11.finish(25); case 35: return _context11.abrupt("return", this.load(Buffer.concat(chunks), options)); case 36: case "end": return _context11.stop(); } } }, _callee11, this, [[4, 21, 25, 35], [26,, 30, 34]]); })); function read(_x32, _x33) { return _read.apply(this, arguments); } return read; }() }, { key: "load", value: function () { var _load = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee12(data, options) { var buffer, model, zip, _i, _Object$values, entry, entryName, stream, content, chunkSize, i, workbook, appXform, appProperties, coreXform, coreProperties, match; return regeneratorRuntime.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: if (options && options.base64) { buffer = Buffer.from(data.toString(), 'base64'); } else { buffer = data; } model = { worksheets: [], worksheetHash: {}, worksheetRels: [], themes: {}, media: [], mediaIndex: {}, drawings: {}, drawingRels: {}, comments: {}, tables: {}, vmlDrawings: {} }; _context12.next = 4; return JSZip.loadAsync(buffer); case 4: zip = _context12.sent; _i = 0, _Object$values = Object.values(zip.files); case 6: if (!(_i < _Object$values.length)) { _context12.next = 126; break; } entry = _Object$values[_i]; if (entry.dir) { _context12.next = 123; break; } entryName = entry.name; if (entryName[0] === '/') { entryName = entryName.substr(1); } stream = void 0; if (!(entryName.match(/xl\/media\//) || // themes are not parsed as stream entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/))) { _context12.next = 21; break; } stream = new PassThrough(); _context12.t0 = stream; _context12.next = 17; return entry.async('nodebuffer'); case 17: _context12.t1 = _context12.sent; _context12.t0.write.call(_context12.t0, _context12.t1); _context12.next = 36; break; case 21: // use object mode to avoid buffer-string convention stream = new PassThrough({ writableObjectMode: true, readableObjectMode: true }); content = void 0; // https://www.npmjs.com/package/process if (!process.browser) { _context12.next = 31; break; } _context12.t2 = bufferToString; _context12.next = 27; return entry.async('nodebuffer'); case 27: _context12.t3 = _context12.sent; content = (0, _context12.t2)(_context12.t3); _context12.next = 34; break; case 31: _context12.next = 33; return entry.async('string'); case 33: content = _context12.sent; case 34: chunkSize = 16 * 1024; for (i = 0; i < content.length; i += chunkSize) { stream.write(content.substring(i, i + chunkSize)); } case 36: stream.end(); _context12.t4 = entryName; _context12.next = _context12.t4 === '_rels/.rels' ? 40 : _context12.t4 === 'xl/workbook.xml' ? 44 : _context12.t4 === 'xl/_rels/workbook.xml.rels' ? 53 : _context12.t4 === 'xl/sharedStrings.xml' ? 57 : _context12.t4 === 'xl/styles.xml' ? 61 : _context12.t4 === 'docProps/app.xml' ? 65 : _context12.t4 === 'docProps/core.xml' ? 72 : 78; break; case 40: _context12.next = 42; return this.parseRels(stream); case 42: model.globalRels = _context12.sent; return _context12.abrupt("break", 123); case 44: _context12.next = 46; return this.parseWorkbook(stream); case 46: workbook = _context12.sent; model.sheets = workbook.sheets; model.definedNames = workbook.definedNames; model.views = workbook.views; model.properties = workbook.properties; model.calcProperties = workbook.calcProperties; return _context12.abrupt("break", 123); case 53: _context12.next = 55; return this.parseRels(stream); case 55: model.workbookRels = _context12.sent; return _context12.abrupt("break", 123); case 57: model.sharedStrings = new SharedStringsXform(); _context12.next = 60; return model.sharedStrings.parseStream(stream); case 60: return _context12.abrupt("break", 123); case 61: model.styles = new StylesXform(); _context12.next = 64; return model.styles.parseStream(stream); case 64: return _context12.abrupt("break", 123); case 65: appXform = new AppXform(); _context12.next = 68; return appXform.parseStream(stream); case 68: appProperties = _context12.sent; model.company = appProperties.company; model.manager = appProperties.manager; return _context12.abrupt("break", 123); case 72: coreXform = new CoreXform(); _context12.next = 75; return coreXform.parseStream(stream); case 75: coreProperties = _context12.sent; Object.assign(model, coreProperties); return _context12.abrupt("break", 123); case 78: match = entryName.match(/xl\/worksheets\/sheet(\d+)[.]xml/); if (!match) { _context12.next = 83; break; } _context12.next = 82; return this._processWorksheetEntry(stream, model, match[1], options, entryName); case 82: return _context12.abrupt("break", 123); case 83: match = entryName.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/); if (!match) { _context12.next = 88; break; } _context12.next = 87; return this._processWorksheetRelsEntry(stream, model, match[1]); case 87: return _context12.abrupt("break", 123); case 88: match = entryName.match(/xl\/theme\/([a-zA-Z0-9]+)[.]xml/); if (!match) { _context12.next = 93; break; } _context12.next = 92; return this._processThemeEntry(stream, model, match[1]); case 92: return _context12.abrupt("break", 123); case 93: match = entryName.match(/xl\/media\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/); if (!match) { _context12.next = 98; break; } _context12.next = 97; return this._processMediaEntry(stream, model, match[1]); case 97: return _context12.abrupt("break", 123); case 98: match = entryName.match(/xl\/drawings\/([a-zA-Z0-9]+)[.]xml/); if (!match) { _context12.next = 103; break; } _context12.next = 102; return this._processDrawingEntry(stream, model, match[1]); case 102: return _context12.abrupt("break", 123); case 103: match = entryName.match(/xl\/(comments\d+)[.]xml/); if (!match) { _context12.next = 108; break; } _context12.next = 107; return this._processCommentEntry(stream, model, match[1]); case 107: return _context12.abrupt("break", 123); case 108: match = entryName.match(/xl\/tables\/(table\d+)[.]xml/); if (!match) { _context12.next = 113; break; } _context12.next = 112; return this._processTableEntry(stream, model, match[1]); case 112: return _context12.abrupt("break", 123); case 113: match = entryName.match(/xl\/drawings\/_rels\/([a-zA-Z0-9]+)[.]xml[.]rels/); if (!match) { _context12.next = 118; break; } _context12.next = 117; return this._processDrawingRelsEntry(stream, model, match[1]); case 117: return _context12.abrupt("break", 123); case 118: match = entryName.match(/xl\/drawings\/(vmlDrawing\d+)[.]vml/); if (!match) { _context12.next = 123; break; } _context12.next = 122; return this._processVmlDrawingEntry(stream, model, match[1]); case 122: return _context12.abrupt("break", 123); case 123: _i++; _context12.next = 6; break; case 126: this.reconcile(model, options); // apply model this.workbook.model = model; return _context12.abrupt("return", this.workbook); case 129: case "end": return _context12.stop(); } } }, _callee12, this); })); function load(_x34, _x35) { return _load.apply(this, arguments); } return load; }() // ========================================================================= // Write }, { key: "addMedia", value: function () { var _addMedia = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee14(zip, model) { return regeneratorRuntime.wrap(function _callee14$(_context14) { while (1) { switch (_context14.prev = _context14.next) { case 0: _context14.next = 2; return Promise.all(model.media.map( /*#__PURE__*/function () { var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee13(medium) { var filename, data, dataimg64, content; return regeneratorRuntime.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { case 0: if (!(medium.type === 'image')) { _context13.next = 13; break; } filename = "xl/media/".concat(medium.name, ".").concat(medium.extension); if (!medium.filename) { _context13.next = 7; break; } _context13.next = 5; return fsReadFileAsync(medium.filename); case 5: data = _context13.sent; return _context13.abrupt("return", zip.append(data, { name: filename })); case 7: if (!medium.buffer) { _context13.next = 9; break; } return _context13.abrupt("return", zip.append(medium.buffer, { name: filename })); case 9: if (!medium.base64) { _context13.next = 13; break; } dataimg64 = medium.base64; content = dataimg64.substring(dataimg64.indexOf(',') + 1); return _context13.abrupt("return", zip.append(content, { name: filename, base64: true })); case 13: throw new Error('Unsupported media'); case 14: case "end": return _context13.stop(); } } }, _callee13); })); return function (_x38) { return _ref.apply(this, arguments); }; }())); case 2: case "end": return _context14.stop(); } } }, _callee14); })); function addMedia(_x36, _x37) { return _addMedia.apply(this, arguments); } return addMedia; }() }, { key: "addDrawings", value: function addDrawings(zip, model) { var drawingXform = new DrawingXform(); var relsXform = new RelationshipsXform(); model.worksheets.forEach(function (worksheet) { var drawing = worksheet.drawing; if (drawing) { drawingXform.prepare(drawing, {}); var xml = drawingXform.toXml(drawing); zip.append(xml, { name: "xl/drawings/".concat(drawing.name, ".xml") }); xml = relsXform.toXml(drawing.rels); zip.append(xml, { name: "xl/drawings/_rels/".concat(drawing.name, ".xml.rels") }); } }); } }, { key: "addTables", value: function addTables(zip, model) { var tableXform = new TableXform(); model.worksheets.forEach(function (worksheet) { var tables = worksheet.tables; tables.forEach(function (table) { tableXform.prepare(table, {}); var tableXml = tableXform.toXml(table); zip.append(tableXml, { name: "xl/tables/".concat(table.target) }); }); }); } }, { key: "addContentTypes", value: function () { var _addContentTypes = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee15(zip, model) { var xform, xml; return regeneratorRuntime.wrap(function _callee15$(_context15) { while (1) { switch (_context15.prev = _context15.next) { case 0: xform = new ContentTypesXform(); xml = xform.toXml(model); zip.append(xml, { name: '[Content_Types].xml' }); case 3: case "end": return _context15.stop(); } } }, _callee15); })); function addContentTypes(_x39, _x40) { return _addContentTypes.apply(this, arguments); } return addContentTypes; }() }, { key: "addApp", value: function () { var _addApp = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee16(zip, model) { var xform, xml; return regeneratorRuntime.wrap(function _callee16$(_context16) { while (1) { switch (_context16.prev = _context16.next) { case 0: xform = new AppXform(); xml = xform.toXml(model); zip.append(xml, { name: 'docProps/app.xml' }); case 3: case "end": return _context16.stop(); } } }, _callee16); })); function addApp(_x41, _x42) { return _addApp.apply(this, arguments); } return addApp; }() }, { key: "addCore", value: function () { var _addCore = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee17(zip, model) { var coreXform; return regeneratorRuntime.wrap(function _callee17$(_context17) { while (1) { switch (_context17.prev = _context17.next) { case 0: coreXform = new CoreXform(); zip.append(coreXform.toXml(model), { name: 'docProps/core.xml' }); case 2: case "end": return _context17.stop(); } } }, _callee17); })); function addCore(_x43, _x44) { return _addCore.apply(this, arguments); } return addCore; }() }, { key: "addThemes", value: function () { var _addThemes = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee18(zip, model) { var themes; return regeneratorRuntime.wrap(function _callee18$(_context18) { while (1) { switch (_context18.prev = _context18.next) { case 0: themes = model.themes || { theme1: theme1Xml }; Object.keys(themes).forEach(function (name) { var xml = themes[name]; var path = "xl/theme/".concat(name, ".xml"); zip.append(xml, { name: path }); }); case 2: case "end": return _context18.stop(); } } }, _callee18); })); function addThemes(_x45, _x46) { return _addThemes.apply(this, arguments); } return addThemes; }() }, { key: "addOfficeRels", value: function () { var _addOfficeRels = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee19(zip) { var xform, xml; return regeneratorRuntime.wrap(function _callee19$(_context19) { while (1) { switch (_context19.prev = _context19.next) { case 0: xform = new RelationshipsXform(); xml = xform.toXml([{ Id: 'rId1', Type: XLSX.RelType.OfficeDocument, Target: 'xl/workbook.xml' }, { Id: 'rId2', Type: XLSX.RelType.CoreProperties, Target: 'docProps/core.xml' }, { Id: 'rId3', Type: XLSX.RelType.ExtenderProperties, Target: 'docProps/app.xml' }]); zip.append(xml, { name: '_rels/.rels' }); case 3: case "end": return _context19.stop(); } } }, _callee19); })); function addOfficeRels(_x47) { return _addOfficeRels.apply(this, arguments); } return addOfficeRels; }() }, { key: "addWorkbookRels", value: function () { var _addWorkbookRels = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee20(zip, model) { var count, relationships, xform, xml; return regeneratorRuntime.wrap(function _callee20$(_context20) { while (1) { switch (_context20.prev = _context20.next) { case 0: count = 1; relationships = [{ Id: "rId".concat(count++), Type: XLSX.RelType.Styles, Target: 'styles.xml' }, { Id: "rId".concat(count++), Type: XLSX.RelType.Theme, Target: 'theme/theme1.xml' }]; if (model.sharedStrings.count) { relationships.push({ Id: "rId".concat(count++), Type: XLSX.RelType.SharedStrings, Target: 'sharedStrings.xml' }); } model.worksheets.forEach(function (worksheet) { worksheet.rId = "rId".concat(count++); relationships.push({ Id: worksheet.rId, Type: XLSX.RelType.Worksheet, Target: "worksheets/sheet".concat(worksheet.id, ".xml") }); }); xform = new RelationshipsXform(); xml = xform.toXml(relationships); zip.append(xml, { name: 'xl/_rels/workbook.xml.rels' }); case 7: case "end": return _context20.stop(); } } }, _callee20); })); function addWorkbookRels(_x48, _x49) { return _addWorkbookRels.apply(this, arguments); } return addWorkbookRels; }() }, { key: "addSharedStrings", value: function () { var _addSharedStrings = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee21(zip, model) { return regeneratorRuntime.wrap(function _callee21$(_context21) { while (1) { switch (_context21.prev = _context21.next) { case 0: if (model.sharedStrings && model.sharedStrings.count) { zip.append(model.sharedStrings.xml, { name: 'xl/sharedStrings.xml' }); } case 1: case "end": return _context21.stop(); } } }, _callee21); })); function addSharedStrings(_x50, _x51) { return _addSharedStrings.apply(this, arguments); } return addSharedStrings; }() }, { key: "addStyles", value: function () { var _addStyles = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee22(zip, model) { var xml; return regeneratorRuntime.wrap(function _callee22$(_context22) { while (1) { switch (_context22.prev = _context22.next) { case 0: xml = model.styles.xml; if (xml) { zip.append(xml, { name: 'xl/styles.xml' }); } case 2: case "end": return _context22.stop(); } } }, _callee22); })); function addStyles(_x52, _x53) { return _addStyles.apply(this, arguments); } return addStyles; }() }, { key: "addWorkbook", value: function () { var _addWorkbook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee23(zip, model) { var xform; return regeneratorRuntime.wrap(function _callee23$(_context23) { while (1) { switch (_context23.prev = _context23.next) { case 0: xform = new WorkbookXform(); zip.append(xform.toXml(model), { name: 'xl/workbook.xml' }); case 2: case "end": return _context23.stop(); } } }, _callee23); })); function addWorkbook(_x54, _x55) { return _addWorkbook.apply(this, arguments); } return addWorkbook; }() }, { key: "addWorksheets", value: function () { var _addWorksheets = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee24(zip, model) { var worksheetXform, relationshipsXform, commentsXform, vmlNotesXform; return regeneratorRuntime.wrap(function _callee24$(_context24) { while (1) { switch (_context24.prev = _context24.next) { case 0: // preparation phase worksheetXform = new WorksheetXform(); relationshipsXform = new RelationshipsXform(); commentsXform = new CommentsXform(); vmlNotesXform = new VmlNotesXform(); // write sheets model.worksheets.forEach(function (worksheet) { var xmlStream = new XmlStream(); worksheetXform.render(xmlStream, worksheet); zip.append(xmlStream.xml, { name: "xl/worksheets/sheet".concat(worksheet.id, ".xml") }); if (worksheet.rels && worksheet.rels.length) { xmlStream = new XmlStream(); relationshipsXform.render(xmlStream, worksheet.rels); zip.append(xmlStream.xml, { name: "xl/worksheets/_rels/sheet".concat(worksheet.id, ".xml.rels") }); } if (worksheet.comments.length > 0) { xmlStream = new XmlStream(); commentsXform.render(xmlStream, worksheet); zip.append(xmlStream.xml, { name: "xl/comments".concat(worksheet.id, ".xml") }); xmlStream = new XmlStream(); vmlNotesXform.render(xmlStream, worksheet); zip.append(xmlStream.xml, { name: "xl/drawings/vmlDrawing".concat(worksheet.id, ".vml") }); } }); case 5: case "end": return _context24.stop(); } } }, _callee24); })); function addWorksheets(_x56, _x57) { return _addWorksheets.apply(this, arguments); } return addWorksheets; }() }, { key: "_finalize", value: function _finalize(zip) { var _this = this; return new Promise(function (resolve, reject) { zip.on('finish', function () { resolve(_this); }); zip.on('error', reject); zip.finalize(); }); } }, { key: "prepareModel", value: function prepareModel(model, options) { // ensure following properties have sane values model.creator = model.creator || 'ExcelJS'; model.lastModifiedBy = model.lastModifiedBy || 'ExcelJS'; model.created = model.created || new Date(); model.modified = model.modified || new Date(); model.useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : true; model.useStyles = options.useStyles !== undefined ? options.useStyles : true; // Manage the shared strings model.sharedStrings = new SharedStringsXform(); // add a style manager to handle cell formats, fonts, etc. model.styles = model.useStyles ? new StylesXform(true) : new StylesXform.Mock(); // prepare all of the things before the render var workbookXform = new WorkbookXform(); var worksheetXform = new WorksheetXform(); workbookXform.prepare(model); var worksheetOptions = { sharedStrings: model.sharedStrings, styles: model.styles, date1904: model.properties.date1904, drawingsCount: 0, media: model.media }; worksheetOptions.drawings = model.drawings = []; worksheetOptions.commentRefs = model.commentRefs = []; var tableCount = 0; model.tables = []; model.worksheets.forEach(function (worksheet) { // assign unique filenames to tables worksheet.tables.forEach(function (table) { tableCount++; table.target = "table".concat(tableCount, ".xml"); table.id = tableCount; model.tables.push(table); }); worksheetXform.prepare(worksheet, worksheetOptions); }); // TODO: workbook drawing list } }, { key: "write", value: function () { var _write = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee25(stream, options) { var model, zip; return regeneratorRuntime.wrap(function _callee25$(_context25) { while (1) { switch (_context25.prev = _context25.next) { case 0: options = options || {}; model = this.workbook.model; zip = new ZipStream.ZipWriter(options.zip); zip.pipe(stream); this.prepareModel(model, options); // render _context25.next = 7; return this.addContentTypes(zip, model); case 7: _context25.next = 9; return this.addOfficeRels(zip, model); case 9: _context25.next = 11; return this.addWorkbookRels(zip, model); case 11: _context25.next = 13; return this.addWorksheets(zip, model); case 13: _context25.next = 15; return this.addSharedStrings(zip, model); case 15: _context25.next = 17; return this.addDrawings(zip, model); case 17: _context25.next = 19; return this.addTables(zip, model); case 19: _context25.next = 21; return Promise.all([this.addThemes(zip, model), this.addStyles(zip, model)]); case 21: _context25.next = 23; return this.addMedia(zip, model); case 23: _context25.next = 25; return Promise.all([this.addApp(zip, model), this.addCore(zip, model)]); case 25: _context25.next = 27; return this.addWorkbook(zip, model); case 27: return _context25.abrupt("return", this._finalize(zip)); case 28: case "end": return _context25.stop(); } } }, _callee25, this); })); function write(_x58, _x59) { return _write.apply(this, arguments); } return write; }() }, { key: "writeFile", value: function writeFile(filename, options) { var _this2 = this; var stream = fs.createWriteStream(filename); return new Promise(function (resolve, reject) { stream.on('finish', function () { resolve(); }); stream.on('error', function (error) { reject(error); }); _this2.write(stream, options).then(function () { stream.end(); }); }); } }, { key: "writeBuffer", value: function () { var _writeBuffer = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee26(options) { var stream; return regeneratorRuntime.wrap(function _callee26$(_context26) { while (1) { switch (_context26.prev = _context26.next) { case 0: stream = new StreamBuf(); _context26.next = 3; return this.write(stream, options); case 3: return _context26.abrupt("return", stream.read()); case 4: case "end": return _context26.stop(); } } }, _callee26, this); })); function writeBuffer(_x60) { return _writeBuffer.apply(this, arguments); } return writeBuffer; }() }]); return XLSX; }(); XLSX.RelType = require('./rel-type'); module.exports = XLSX; }).call(this,require('_process'),require("buffer").Buffer) },{"../utils/browser-buffer-decode":16,"../utils/stream-buf":23,"../utils/utils":26,"../utils/xml-stream":27,"../utils/zip-stream":28,"./rel-type":30,"./xform/book/workbook-xform":37,"./xform/comment/comments-xform":39,"./xform/comment/vml-notes-xform":44,"./xform/core/app-xform":50,"./xform/core/content-types-xform":51,"./xform/core/core-xform":52,"./xform/core/relationships-xform":54,"./xform/drawing/drawing-xform":61,"./xform/sheet/worksheet-xform":114,"./xform/strings/shared-strings-xform":123,"./xform/style/styles-xform":134,"./xform/table/table-xform":140,"./xml/theme1.js":142,"_process":467,"buffer":216,"fs":215,"jszip":399,"readable-stream":491}],142:[function(require,module,exports){ "use strict"; /* eslint-disable */ module.exports = '\n '; },{}],143:[function(require,module,exports){ (function (Buffer){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.CsvFormatterStream = void 0; var stream_1 = require("stream"); var formatter_1 = require("./formatter"); var CsvFormatterStream = /*#__PURE__*/function (_stream_1$Transform) { _inherits(CsvFormatterStream, _stream_1$Transform); var _super = _createSuper(CsvFormatterStream); function CsvFormatterStream(formatterOptions) { var _this; _classCallCheck(this, CsvFormatterStream); _this = _super.call(this, { writableObjectMode: formatterOptions.objectMode }); _this.hasWrittenBOM = false; _this.formatterOptions = formatterOptions; _this.rowFormatter = new formatter_1.RowFormatter(formatterOptions); // if writeBOM is false then set to true // if writeBOM is true then set to false by default so it is written out _this.hasWrittenBOM = !formatterOptions.writeBOM; return _this; } _createClass(CsvFormatterStream, [{ key: "transform", value: function transform(transformFunction) { this.rowFormatter.rowTransform = transformFunction; return this; } }, { key: "_transform", value: function _transform(row, encoding, cb) { var _this2 = this; var cbCalled = false; try { if (!this.hasWrittenBOM) { this.push(this.formatterOptions.BOM); this.hasWrittenBOM = true; } this.rowFormatter.format(row, function (err, rows) { if (err) { cbCalled = true; return cb(err); } if (rows) { rows.forEach(function (r) { _this2.push(Buffer.from(r, 'utf8')); }); } cbCalled = true; return cb(); }); } catch (e) { if (cbCalled) { throw e; } cb(e); } } }, { key: "_flush", value: function _flush(cb) { var _this3 = this; this.rowFormatter.finish(function (err, rows) { if (err) { return cb(err); } if (rows) { rows.forEach(function (r) { _this3.push(Buffer.from(r, 'utf8')); }); } return cb(); }); } }]); return CsvFormatterStream; }(stream_1.Transform); exports.CsvFormatterStream = CsvFormatterStream; }).call(this,require("buffer").Buffer) },{"./formatter":147,"buffer":216,"stream":506}],144:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } Object.defineProperty(exports, "__esModule", { value: true }); exports.FormatterOptions = void 0; var FormatterOptions = function FormatterOptions() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; _classCallCheck(this, FormatterOptions); var _a; this.objectMode = true; this.delimiter = ','; this.rowDelimiter = '\n'; this.quote = '"'; this.escape = this.quote; this.quoteColumns = false; this.quoteHeaders = this.quoteColumns; this.headers = null; this.includeEndRowDelimiter = false; this.writeBOM = false; this.BOM = "\uFEFF"; this.alwaysWriteHeaders = false; Object.assign(this, opts || {}); if (typeof (opts === null || opts === void 0 ? void 0 : opts.quoteHeaders) === 'undefined') { this.quoteHeaders = this.quoteColumns; } if ((opts === null || opts === void 0 ? void 0 : opts.quote) === true) { this.quote = '"'; } else if ((opts === null || opts === void 0 ? void 0 : opts.quote) === false) { this.quote = ''; } if (typeof (opts === null || opts === void 0 ? void 0 : opts.escape) !== 'string') { this.escape = this.quote; } this.shouldWriteHeaders = !!this.headers && ((_a = opts.writeHeaders) !== null && _a !== void 0 ? _a : true); this.headers = Array.isArray(this.headers) ? this.headers : null; this.escapedQuote = "".concat(this.escape).concat(this.quote); }; exports.FormatterOptions = FormatterOptions; },{}],145:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FieldFormatter = void 0; var lodash_isboolean_1 = __importDefault(require("lodash.isboolean")); var lodash_isnil_1 = __importDefault(require("lodash.isnil")); var lodash_escaperegexp_1 = __importDefault(require("lodash.escaperegexp")); var FieldFormatter = /*#__PURE__*/function () { function FieldFormatter(formatterOptions) { _classCallCheck(this, FieldFormatter); this._headers = null; this.formatterOptions = formatterOptions; if (formatterOptions.headers !== null) { this.headers = formatterOptions.headers; } this.REPLACE_REGEXP = new RegExp(formatterOptions.quote, 'g'); var escapePattern = "[".concat(formatterOptions.delimiter).concat(lodash_escaperegexp_1.default(formatterOptions.rowDelimiter), "|\r|\n']"); this.ESCAPE_REGEXP = new RegExp(escapePattern); } _createClass(FieldFormatter, [{ key: "shouldQuote", value: function shouldQuote(fieldIndex, isHeader) { var quoteConfig = isHeader ? this.formatterOptions.quoteHeaders : this.formatterOptions.quoteColumns; if (lodash_isboolean_1.default(quoteConfig)) { return quoteConfig; } if (Array.isArray(quoteConfig)) { return quoteConfig[fieldIndex]; } if (this._headers !== null) { return quoteConfig[this._headers[fieldIndex]]; } return false; } }, { key: "format", value: function format(field, fieldIndex, isHeader) { var preparedField = "".concat(lodash_isnil_1.default(field) ? '' : field).replace(/\0/g, ''); var formatterOptions = this.formatterOptions; if (formatterOptions.quote !== '') { var shouldEscape = preparedField.indexOf(formatterOptions.quote) !== -1; if (shouldEscape) { return this.quoteField(preparedField.replace(this.REPLACE_REGEXP, formatterOptions.escapedQuote)); } } var hasEscapeCharacters = preparedField.search(this.ESCAPE_REGEXP) !== -1; if (hasEscapeCharacters || this.shouldQuote(fieldIndex, isHeader)) { return this.quoteField(preparedField); } return preparedField; } }, { key: "quoteField", value: function quoteField(field) { var quote = this.formatterOptions.quote; return "".concat(quote).concat(field).concat(quote); } }, { key: "headers", set: function set(headers) { this._headers = headers; } }]); return FieldFormatter; }(); exports.FieldFormatter = FieldFormatter; },{"lodash.escaperegexp":426,"lodash.isboolean":428,"lodash.isnil":431}],146:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RowFormatter = void 0; var lodash_isfunction_1 = __importDefault(require("lodash.isfunction")); var lodash_isequal_1 = __importDefault(require("lodash.isequal")); var FieldFormatter_1 = require("./FieldFormatter"); var types_1 = require("../types"); var RowFormatter = /*#__PURE__*/function () { function RowFormatter(formatterOptions) { _classCallCheck(this, RowFormatter); this.rowCount = 0; this.formatterOptions = formatterOptions; this.fieldFormatter = new FieldFormatter_1.FieldFormatter(formatterOptions); this.headers = formatterOptions.headers; this.shouldWriteHeaders = formatterOptions.shouldWriteHeaders; this.hasWrittenHeaders = false; if (this.headers !== null) { this.fieldFormatter.headers = this.headers; } if (formatterOptions.transform) { this.rowTransform = formatterOptions.transform; } } _createClass(RowFormatter, [{ key: "format", value: function format(row, cb) { var _this = this; this.callTransformer(row, function (err, transformedRow) { if (err) { return cb(err); } if (!row) { return cb(null); } var rows = []; if (transformedRow) { var _this$checkHeaders = _this.checkHeaders(transformedRow), shouldFormatColumns = _this$checkHeaders.shouldFormatColumns, headers = _this$checkHeaders.headers; if (_this.shouldWriteHeaders && headers && !_this.hasWrittenHeaders) { rows.push(_this.formatColumns(headers, true)); _this.hasWrittenHeaders = true; } if (shouldFormatColumns) { var columns = _this.gatherColumns(transformedRow); rows.push(_this.formatColumns(columns, false)); } } return cb(null, rows); }); } }, { key: "finish", value: function finish(cb) { var rows = []; // check if we should write headers and we didnt get any rows if (this.formatterOptions.alwaysWriteHeaders && this.rowCount === 0) { if (!this.headers) { return cb(new Error('`alwaysWriteHeaders` option is set to true but `headers` option not provided.')); } rows.push(this.formatColumns(this.headers, true)); } if (this.formatterOptions.includeEndRowDelimiter) { rows.push(this.formatterOptions.rowDelimiter); } return cb(null, rows); } // check if we need to write header return true if we should also write a row // could be false if headers is true and the header row(first item) is passed in }, { key: "checkHeaders", value: function checkHeaders(row) { if (this.headers) { // either the headers were provided by the user or we have already gathered them. return { shouldFormatColumns: true, headers: this.headers }; } var headers = RowFormatter.gatherHeaders(row); this.headers = headers; this.fieldFormatter.headers = headers; if (!this.shouldWriteHeaders) { // if we are not supposed to write the headers then // always format the columns return { shouldFormatColumns: true, headers: null }; } // if the row is equal to headers dont format return { shouldFormatColumns: !lodash_isequal_1.default(headers, row), headers: headers }; } // todo change this method to unknown[] }, { key: "gatherColumns", value: function gatherColumns(row) { if (this.headers === null) { throw new Error('Headers is currently null'); } if (!Array.isArray(row)) { return this.headers.map(function (header) { return row[header]; }); } if (RowFormatter.isHashArray(row)) { return this.headers.map(function (header, i) { var col = row[i]; if (col) { return col[1]; } return ''; }); } return this.headers.map(function (header, i) { return row[i]; }); } }, { key: "callTransformer", value: function callTransformer(row, cb) { if (!this._rowTransform) { return cb(null, row); } return this._rowTransform(row, cb); } }, { key: "formatColumns", value: function formatColumns(columns, isHeadersRow) { var _this2 = this; var formattedCols = columns.map(function (field, i) { return _this2.fieldFormatter.format(field, i, isHeadersRow); }).join(this.formatterOptions.delimiter); var rowCount = this.rowCount; this.rowCount += 1; if (rowCount) { return [this.formatterOptions.rowDelimiter, formattedCols].join(''); } return formattedCols; } }, { key: "rowTransform", set: function set(transformFunction) { if (!lodash_isfunction_1.default(transformFunction)) { throw new TypeError('The transform should be a function'); } this._rowTransform = RowFormatter.createTransform(transformFunction); } }], [{ key: "isHashArray", value: function isHashArray(row) { if (Array.isArray(row)) { return Array.isArray(row[0]) && row[0].length === 2; } return false; } // get headers from a row item }, { key: "gatherHeaders", value: function gatherHeaders(row) { if (RowFormatter.isHashArray(row)) { // lets assume a multi-dimesional array with item 0 being the header return row.map(function (it) { return it[0]; }); } if (Array.isArray(row)) { return row; } return Object.keys(row); } }, { key: "createTransform", value: function createTransform(transformFunction) { if (types_1.isSyncTransform(transformFunction)) { return function (row, cb) { var transformedRow = null; try { transformedRow = transformFunction(row); } catch (e) { return cb(e); } return cb(null, transformedRow); }; } return function (row, cb) { transformFunction(row, cb); }; } }]); return RowFormatter; }(); exports.RowFormatter = RowFormatter; },{"../types":149,"./FieldFormatter":145,"lodash.isequal":429,"lodash.isfunction":430}],147:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var RowFormatter_1 = require("./RowFormatter"); Object.defineProperty(exports, "RowFormatter", { enumerable: true, get: function get() { return RowFormatter_1.RowFormatter; } }); var FieldFormatter_1 = require("./FieldFormatter"); Object.defineProperty(exports, "FieldFormatter", { enumerable: true, get: function get() { return FieldFormatter_1.FieldFormatter; } }); },{"./FieldFormatter":145,"./RowFormatter":146}],148:[function(require,module,exports){ (function (Buffer){ "use strict"; var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function get() { return m[k]; } }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = void 0 && (void 0).__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) { for (var p in m) { if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.writeToPath = exports.writeToString = exports.writeToBuffer = exports.writeToStream = exports.write = exports.format = void 0; var util_1 = require("util"); var stream_1 = require("stream"); var fs = __importStar(require("fs")); var FormatterOptions_1 = require("./FormatterOptions"); var CsvFormatterStream_1 = require("./CsvFormatterStream"); __exportStar(require("./types"), exports); var CsvFormatterStream_2 = require("./CsvFormatterStream"); Object.defineProperty(exports, "CsvFormatterStream", { enumerable: true, get: function get() { return CsvFormatterStream_2.CsvFormatterStream; } }); var FormatterOptions_2 = require("./FormatterOptions"); Object.defineProperty(exports, "FormatterOptions", { enumerable: true, get: function get() { return FormatterOptions_2.FormatterOptions; } }); exports.format = function (options) { return new CsvFormatterStream_1.CsvFormatterStream(new FormatterOptions_1.FormatterOptions(options)); }; exports.write = function (rows, options) { var csvStream = exports.format(options); var promiseWrite = util_1.promisify(function (row, cb) { csvStream.write(row, undefined, cb); }); rows.reduce(function (prev, row) { return prev.then(function () { return promiseWrite(row); }); }, Promise.resolve()).then(function () { return csvStream.end(); }).catch(function (err) { csvStream.emit('error', err); }); return csvStream; }; exports.writeToStream = function (ws, rows, options) { return exports.write(rows, options).pipe(ws); }; exports.writeToBuffer = function (rows) { var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var buffers = []; var ws = new stream_1.Writable({ write: function write(data, enc, writeCb) { buffers.push(data); writeCb(); } }); return new Promise(function (res, rej) { ws.on('error', rej).on('finish', function () { return res(Buffer.concat(buffers)); }); exports.write(rows, opts).pipe(ws); }); }; exports.writeToString = function (rows, options) { return exports.writeToBuffer(rows, options).then(function (buffer) { return buffer.toString(); }); }; exports.writeToPath = function (path, rows, options) { var stream = fs.createWriteStream(path, { encoding: 'utf8' }); return exports.write(rows, options).pipe(stream); }; }).call(this,require("buffer").Buffer) },{"./CsvFormatterStream":143,"./FormatterOptions":144,"./types":149,"buffer":216,"fs":215,"stream":506,"util":525}],149:[function(require,module,exports){ "use strict"; /* eslint-disable @typescript-eslint/no-explicit-any */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isSyncTransform = void 0; exports.isSyncTransform = function (transform) { return transform.length === 1; }; },{}],150:[function(require,module,exports){ (function (setImmediate){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } Object.defineProperty(exports, "__esModule", { value: true }); exports.CsvParserStream = void 0; var string_decoder_1 = require("string_decoder"); var stream_1 = require("stream"); var transforms_1 = require("./transforms"); var parser_1 = require("./parser"); var CsvParserStream = /*#__PURE__*/function (_stream_1$Transform) { _inherits(CsvParserStream, _stream_1$Transform); var _super = _createSuper(CsvParserStream); function CsvParserStream(parserOptions) { var _this; _classCallCheck(this, CsvParserStream); _this = _super.call(this, { objectMode: parserOptions.objectMode }); _this.lines = ''; _this.rowCount = 0; _this.parsedRowCount = 0; _this.parsedLineCount = 0; _this.endEmitted = false; _this.headersEmitted = false; _this.parserOptions = parserOptions; _this.parser = new parser_1.Parser(parserOptions); _this.headerTransformer = new transforms_1.HeaderTransformer(parserOptions); _this.decoder = new string_decoder_1.StringDecoder(parserOptions.encoding); _this.rowTransformerValidator = new transforms_1.RowTransformerValidator(); return _this; } _createClass(CsvParserStream, [{ key: "transform", value: function transform(transformFunction) { this.rowTransformerValidator.rowTransform = transformFunction; return this; } }, { key: "validate", value: function validate(validateFunction) { this.rowTransformerValidator.rowValidator = validateFunction; return this; } // eslint-disable-next-line @typescript-eslint/no-explicit-any }, { key: "emit", value: function emit(event) { var _get2; if (event === 'end') { if (!this.endEmitted) { this.endEmitted = true; _get(_getPrototypeOf(CsvParserStream.prototype), "emit", this).call(this, 'end', this.rowCount); } return false; } for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { rest[_key - 1] = arguments[_key]; } return (_get2 = _get(_getPrototypeOf(CsvParserStream.prototype), "emit", this)).call.apply(_get2, [this, event].concat(rest)); } }, { key: "_transform", value: function _transform(data, encoding, done) { // if we have hit our maxRows parsing limit then skip parsing if (this.hasHitRowLimit) { return done(); } try { var lines = this.lines; var newLine = lines + this.decoder.write(data); var rows = this.parse(newLine, true); return this.processRows(rows, done); } catch (e) { return done(e); } } }, { key: "_flush", value: function _flush(done) { // if we have hit our maxRows parsing limit then skip parsing if (this.hasHitRowLimit) { return done(); } try { var newLine = this.lines + this.decoder.end(); var rows = this.parse(newLine, false); return this.processRows(rows, done); } catch (e) { return done(e); } } }, { key: "parse", value: function parse(data, hasMoreData) { if (!data) { return []; } var _this$parser$parse = this.parser.parse(data, hasMoreData), line = _this$parser$parse.line, rows = _this$parser$parse.rows; this.lines = line; return rows; } }, { key: "processRows", value: function processRows(rows, cb) { var _this2 = this; var rowsLength = rows.length; var iterate = function iterate(i) { var callNext = function callNext(err) { if (err) { return cb(err); } if (i % 100 === 0) { // incase the transform are sync insert a next tick to prevent stack overflow setImmediate(function () { return iterate(i + 1); }); return undefined; } return iterate(i + 1); }; _this2.checkAndEmitHeaders(); // if we have emitted all rows or we have hit the maxRows limit option // then end if (i >= rowsLength || _this2.hasHitRowLimit) { return cb(); } _this2.parsedLineCount += 1; if (_this2.shouldSkipLine) { return callNext(); } var row = rows[i]; _this2.rowCount += 1; _this2.parsedRowCount += 1; var nextRowCount = _this2.rowCount; return _this2.transformRow(row, function (err, transformResult) { if (err) { _this2.rowCount -= 1; return callNext(err); } if (!transformResult) { return callNext(new Error('expected transform result')); } if (!transformResult.isValid) { _this2.emit('data-invalid', transformResult.row, nextRowCount, transformResult.reason); } else if (transformResult.row) { return _this2.pushRow(transformResult.row, callNext); } return callNext(); }); }; iterate(0); } }, { key: "transformRow", value: function transformRow(parsedRow, cb) { var _this3 = this; try { this.headerTransformer.transform(parsedRow, function (err, withHeaders) { if (err) { return cb(err); } if (!withHeaders) { return cb(new Error('Expected result from header transform')); } if (!withHeaders.isValid) { if (_this3.shouldEmitRows) { return cb(null, { isValid: false, row: parsedRow }); } // skipped because of skipRows option remove from total row count return _this3.skipRow(cb); } if (withHeaders.row) { if (_this3.shouldEmitRows) { return _this3.rowTransformerValidator.transformAndValidate(withHeaders.row, cb); } // skipped because of skipRows option remove from total row count return _this3.skipRow(cb); } // this is a header row dont include in the rowCount or parsedRowCount _this3.rowCount -= 1; _this3.parsedRowCount -= 1; return cb(null, { row: null, isValid: true }); }); } catch (e) { cb(e); } } }, { key: "checkAndEmitHeaders", value: function checkAndEmitHeaders() { if (!this.headersEmitted && this.headerTransformer.headers) { this.headersEmitted = true; this.emit('headers', this.headerTransformer.headers); } } }, { key: "skipRow", value: function skipRow(cb) { // skipped because of skipRows option remove from total row count this.rowCount -= 1; return cb(null, { row: null, isValid: true }); } }, { key: "pushRow", value: function pushRow(row, cb) { try { if (!this.parserOptions.objectMode) { this.push(JSON.stringify(row)); } else { this.push(row); } cb(); } catch (e) { cb(e); } } }, { key: "hasHitRowLimit", get: function get() { return this.parserOptions.limitRows && this.rowCount >= this.parserOptions.maxRows; } }, { key: "shouldEmitRows", get: function get() { return this.parsedRowCount > this.parserOptions.skipRows; } }, { key: "shouldSkipLine", get: function get() { return this.parsedLineCount <= this.parserOptions.skipLines; } }]); return CsvParserStream; }(stream_1.Transform); exports.CsvParserStream = CsvParserStream; }).call(this,require("timers").setImmediate) },{"./parser":162,"./transforms":165,"stream":506,"string_decoder":520,"timers":521}],151:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParserOptions = void 0; var lodash_escaperegexp_1 = __importDefault(require("lodash.escaperegexp")); var lodash_isnil_1 = __importDefault(require("lodash.isnil")); var ParserOptions = function ParserOptions(opts) { _classCallCheck(this, ParserOptions); var _a; this.objectMode = true; this.delimiter = ','; this.ignoreEmpty = false; this.quote = '"'; this.escape = null; this.escapeChar = this.quote; this.comment = null; this.supportsComments = false; this.ltrim = false; this.rtrim = false; this.trim = false; this.headers = null; this.renameHeaders = false; this.strictColumnHandling = false; this.discardUnmappedColumns = false; this.carriageReturn = '\r'; this.encoding = 'utf8'; this.limitRows = false; this.maxRows = 0; this.skipLines = 0; this.skipRows = 0; Object.assign(this, opts || {}); if (this.delimiter.length > 1) { throw new Error('delimiter option must be one character long'); } this.escapedDelimiter = lodash_escaperegexp_1.default(this.delimiter); this.escapeChar = (_a = this.escape) !== null && _a !== void 0 ? _a : this.quote; this.supportsComments = !lodash_isnil_1.default(this.comment); this.NEXT_TOKEN_REGEXP = new RegExp("([^\\s]|\\r\\n|\\n|\\r|".concat(this.escapedDelimiter, ")")); if (this.maxRows > 0) { this.limitRows = true; } }; exports.ParserOptions = ParserOptions; },{"lodash.escaperegexp":426,"lodash.isnil":431}],152:[function(require,module,exports){ "use strict"; var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function get() { return m[k]; } }); } : function (o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = void 0 && (void 0).__setModuleDefault || (Object.create ? function (o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function (o, v) { o["default"] = v; }); var __importStar = void 0 && (void 0).__importStar || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) { if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); } __setModuleDefault(result, mod); return result; }; var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) { for (var p in m) { if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseString = exports.parseFile = exports.parseStream = exports.parse = void 0; var fs = __importStar(require("fs")); var stream_1 = require("stream"); var ParserOptions_1 = require("./ParserOptions"); var CsvParserStream_1 = require("./CsvParserStream"); __exportStar(require("./types"), exports); var CsvParserStream_2 = require("./CsvParserStream"); Object.defineProperty(exports, "CsvParserStream", { enumerable: true, get: function get() { return CsvParserStream_2.CsvParserStream; } }); var ParserOptions_2 = require("./ParserOptions"); Object.defineProperty(exports, "ParserOptions", { enumerable: true, get: function get() { return ParserOptions_2.ParserOptions; } }); exports.parse = function (args) { return new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(args)); }; exports.parseStream = function (stream, options) { return stream.pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options))); }; exports.parseFile = function (location) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return fs.createReadStream(location).pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options))); }; exports.parseString = function (string, options) { var rs = new stream_1.Readable(); rs.push(string); rs.push(null); return rs.pipe(new CsvParserStream_1.CsvParserStream(new ParserOptions_1.ParserOptions(options))); }; },{"./CsvParserStream":150,"./ParserOptions":151,"./types":166,"fs":215,"stream":506}],153:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.Parser = void 0; var Scanner_1 = require("./Scanner"); var RowParser_1 = require("./RowParser"); var Token_1 = require("./Token"); var EMPTY_ROW_REGEXP = /^\s*(?:''|"")?\s*(?:,\s*(?:''|"")?\s*)*$/; var Parser = /*#__PURE__*/function () { function Parser(parserOptions) { _classCallCheck(this, Parser); this.parserOptions = parserOptions; this.rowParser = new RowParser_1.RowParser(this.parserOptions); } _createClass(Parser, [{ key: "parse", value: function parse(line, hasMoreData) { var scanner = new Scanner_1.Scanner({ line: Parser.removeBOM(line), parserOptions: this.parserOptions, hasMoreData: hasMoreData }); if (this.parserOptions.supportsComments) { return this.parseWithComments(scanner); } return this.parseWithoutComments(scanner); } }, { key: "parseWithoutComments", value: function parseWithoutComments(scanner) { var rows = []; var shouldContinue = true; while (shouldContinue) { shouldContinue = this.parseRow(scanner, rows); } return { line: scanner.line, rows: rows }; } }, { key: "parseWithComments", value: function parseWithComments(scanner) { var parserOptions = this.parserOptions; var rows = []; for (var nextToken = scanner.nextCharacterToken; nextToken !== null; nextToken = scanner.nextCharacterToken) { if (Token_1.Token.isTokenComment(nextToken, parserOptions)) { var cursor = scanner.advancePastLine(); if (cursor === null) { return { line: scanner.lineFromCursor, rows: rows }; } if (!scanner.hasMoreCharacters) { return { line: scanner.lineFromCursor, rows: rows }; } scanner.truncateToCursor(); } else if (!this.parseRow(scanner, rows)) { break; } } return { line: scanner.line, rows: rows }; } }, { key: "parseRow", value: function parseRow(scanner, rows) { var nextToken = scanner.nextNonSpaceToken; if (!nextToken) { return false; } var row = this.rowParser.parse(scanner); if (row === null) { return false; } if (this.parserOptions.ignoreEmpty && EMPTY_ROW_REGEXP.test(row.join(''))) { return true; } rows.push(row); return true; } }], [{ key: "removeBOM", value: function removeBOM(line) { // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string // conversion translates it to FEFF (UTF-16 BOM) if (line && line.charCodeAt(0) === 0xfeff) { return line.slice(1); } return line; } }]); return Parser; }(); exports.Parser = Parser; },{"./RowParser":154,"./Scanner":155,"./Token":156}],154:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.RowParser = void 0; var column_1 = require("./column"); var Token_1 = require("./Token"); var _Token_1$Token = Token_1.Token, isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter, isTokenCarriageReturn = _Token_1$Token.isTokenCarriageReturn, isTokenDelimiter = _Token_1$Token.isTokenDelimiter; var RowParser = /*#__PURE__*/function () { function RowParser(parserOptions) { _classCallCheck(this, RowParser); this.parserOptions = parserOptions; this.columnParser = new column_1.ColumnParser(parserOptions); } _createClass(RowParser, [{ key: "parse", value: function parse(scanner) { var parserOptions = this.parserOptions; var hasMoreData = scanner.hasMoreData; var currentScanner = scanner; var columns = []; var currentToken = this.getStartToken(currentScanner, columns); while (currentToken) { if (isTokenRowDelimiter(currentToken)) { currentScanner.advancePastToken(currentToken); // if ends with CR and there is more data, keep unparsed due to possible // coming LF in CRLF if (!currentScanner.hasMoreCharacters && isTokenCarriageReturn(currentToken, parserOptions) && hasMoreData) { return null; } currentScanner.truncateToCursor(); return columns; } if (!this.shouldSkipColumnParse(currentScanner, currentToken, columns)) { var item = this.columnParser.parse(currentScanner); if (item === null) { return null; } columns.push(item); } currentToken = currentScanner.nextNonSpaceToken; } if (!hasMoreData) { currentScanner.truncateToCursor(); return columns; } return null; } }, { key: "getStartToken", value: function getStartToken(scanner, columns) { var currentToken = scanner.nextNonSpaceToken; if (currentToken !== null && isTokenDelimiter(currentToken, this.parserOptions)) { columns.push(''); return scanner.nextNonSpaceToken; } return currentToken; } }, { key: "shouldSkipColumnParse", value: function shouldSkipColumnParse(scanner, currentToken, columns) { var parserOptions = this.parserOptions; if (isTokenDelimiter(currentToken, parserOptions)) { scanner.advancePastToken(currentToken); // if the delimiter is at the end of a line var nextToken = scanner.nextCharacterToken; if (!scanner.hasMoreCharacters || nextToken !== null && isTokenRowDelimiter(nextToken)) { columns.push(''); return true; } if (nextToken !== null && isTokenDelimiter(nextToken, parserOptions)) { columns.push(''); return true; } } return false; } }]); return RowParser; }(); exports.RowParser = RowParser; },{"./Token":156,"./column":161}],155:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.Scanner = void 0; var Token_1 = require("./Token"); var ROW_DELIMITER = /((?:\r\n)|\n|\r)/; var Scanner = /*#__PURE__*/function () { function Scanner(args) { _classCallCheck(this, Scanner); this.cursor = 0; this.line = args.line; this.lineLength = this.line.length; this.parserOptions = args.parserOptions; this.hasMoreData = args.hasMoreData; this.cursor = args.cursor || 0; } _createClass(Scanner, [{ key: "advancePastLine", value: function advancePastLine() { var match = ROW_DELIMITER.exec(this.lineFromCursor); if (!match) { if (this.hasMoreData) { return null; } this.cursor = this.lineLength; return this; } this.cursor += (match.index || 0) + match[0].length; return this; } }, { key: "advanceTo", value: function advanceTo(cursor) { this.cursor = cursor; return this; } }, { key: "advanceToToken", value: function advanceToToken(token) { this.cursor = token.startCursor; return this; } }, { key: "advancePastToken", value: function advancePastToken(token) { this.cursor = token.endCursor + 1; return this; } }, { key: "truncateToCursor", value: function truncateToCursor() { this.line = this.lineFromCursor; this.lineLength = this.line.length; this.cursor = 0; return this; } }, { key: "hasMoreCharacters", get: function get() { return this.lineLength > this.cursor; } }, { key: "nextNonSpaceToken", get: function get() { var lineFromCursor = this.lineFromCursor; var regex = this.parserOptions.NEXT_TOKEN_REGEXP; if (lineFromCursor.search(regex) === -1) { return null; } var match = regex.exec(lineFromCursor); if (match == null) { return null; } var token = match[1]; var startCursor = this.cursor + (match.index || 0); return new Token_1.Token({ token: token, startCursor: startCursor, endCursor: startCursor + token.length - 1 }); } }, { key: "nextCharacterToken", get: function get() { var cursor = this.cursor, lineLength = this.lineLength; if (lineLength <= cursor) { return null; } return new Token_1.Token({ token: this.line[cursor], startCursor: cursor, endCursor: cursor }); } }, { key: "lineFromCursor", get: function get() { return this.line.substr(this.cursor); } }]); return Scanner; }(); exports.Scanner = Scanner; },{"./Token":156}],156:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.Token = void 0; var Token = /*#__PURE__*/function () { function Token(tokenArgs) { _classCallCheck(this, Token); this.token = tokenArgs.token; this.startCursor = tokenArgs.startCursor; this.endCursor = tokenArgs.endCursor; } _createClass(Token, null, [{ key: "isTokenRowDelimiter", value: function isTokenRowDelimiter(token) { var content = token.token; return content === '\r' || content === '\n' || content === '\r\n'; } }, { key: "isTokenCarriageReturn", value: function isTokenCarriageReturn(token, parserOptions) { return token.token === parserOptions.carriageReturn; } }, { key: "isTokenComment", value: function isTokenComment(token, parserOptions) { return parserOptions.supportsComments && !!token && token.token === parserOptions.comment; } }, { key: "isTokenEscapeCharacter", value: function isTokenEscapeCharacter(token, parserOptions) { return token.token === parserOptions.escapeChar; } }, { key: "isTokenQuote", value: function isTokenQuote(token, parserOptions) { return token.token === parserOptions.quote; } }, { key: "isTokenDelimiter", value: function isTokenDelimiter(token, parserOptions) { return token.token === parserOptions.delimiter; } }]); return Token; }(); exports.Token = Token; },{}],157:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnFormatter = void 0; var ColumnFormatter = function ColumnFormatter(parserOptions) { _classCallCheck(this, ColumnFormatter); if (parserOptions.trim) { this.format = function (col) { return col.trim(); }; } else if (parserOptions.ltrim) { this.format = function (col) { return col.trimLeft(); }; } else if (parserOptions.rtrim) { this.format = function (col) { return col.trimRight(); }; } else { this.format = function (col) { return col; }; } }; exports.ColumnFormatter = ColumnFormatter; },{}],158:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.ColumnParser = void 0; var NonQuotedColumnParser_1 = require("./NonQuotedColumnParser"); var QuotedColumnParser_1 = require("./QuotedColumnParser"); var Token_1 = require("../Token"); var ColumnParser = /*#__PURE__*/function () { function ColumnParser(parserOptions) { _classCallCheck(this, ColumnParser); this.parserOptions = parserOptions; this.quotedColumnParser = new QuotedColumnParser_1.QuotedColumnParser(parserOptions); this.nonQuotedColumnParser = new NonQuotedColumnParser_1.NonQuotedColumnParser(parserOptions); } _createClass(ColumnParser, [{ key: "parse", value: function parse(scanner) { var nextNonSpaceToken = scanner.nextNonSpaceToken; if (nextNonSpaceToken !== null && Token_1.Token.isTokenQuote(nextNonSpaceToken, this.parserOptions)) { scanner.advanceToToken(nextNonSpaceToken); return this.quotedColumnParser.parse(scanner); } return this.nonQuotedColumnParser.parse(scanner); } }]); return ColumnParser; }(); exports.ColumnParser = ColumnParser; },{"../Token":156,"./NonQuotedColumnParser":159,"./QuotedColumnParser":160}],159:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.NonQuotedColumnParser = void 0; var ColumnFormatter_1 = require("./ColumnFormatter"); var Token_1 = require("../Token"); var _Token_1$Token = Token_1.Token, isTokenDelimiter = _Token_1$Token.isTokenDelimiter, isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter; var NonQuotedColumnParser = /*#__PURE__*/function () { function NonQuotedColumnParser(parserOptions) { _classCallCheck(this, NonQuotedColumnParser); this.parserOptions = parserOptions; this.columnFormatter = new ColumnFormatter_1.ColumnFormatter(parserOptions); } _createClass(NonQuotedColumnParser, [{ key: "parse", value: function parse(scanner) { if (!scanner.hasMoreCharacters) { return null; } var parserOptions = this.parserOptions; var characters = []; var nextToken = scanner.nextCharacterToken; for (; nextToken; nextToken = scanner.nextCharacterToken) { if (isTokenDelimiter(nextToken, parserOptions) || isTokenRowDelimiter(nextToken)) { break; } characters.push(nextToken.token); scanner.advancePastToken(nextToken); } return this.columnFormatter.format(characters.join('')); } }]); return NonQuotedColumnParser; }(); exports.NonQuotedColumnParser = NonQuotedColumnParser; },{"../Token":156,"./ColumnFormatter":157}],160:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } Object.defineProperty(exports, "__esModule", { value: true }); exports.QuotedColumnParser = void 0; var ColumnFormatter_1 = require("./ColumnFormatter"); var Token_1 = require("../Token"); var _Token_1$Token = Token_1.Token, isTokenDelimiter = _Token_1$Token.isTokenDelimiter, isTokenRowDelimiter = _Token_1$Token.isTokenRowDelimiter, isTokenEscapeCharacter = _Token_1$Token.isTokenEscapeCharacter, isTokenQuote = _Token_1$Token.isTokenQuote; var QuotedColumnParser = /*#__PURE__*/function () { function QuotedColumnParser(parserOptions) { _classCallCheck(this, QuotedColumnParser); this.parserOptions = parserOptions; this.columnFormatter = new ColumnFormatter_1.ColumnFormatter(parserOptions); } _createClass(QuotedColumnParser, [{ key: "parse", value: function parse(scanner) { if (!scanner.hasMoreCharacters) { return null; } var originalCursor = scanner.cursor; var _this$gatherDataBetwe = this.gatherDataBetweenQuotes(scanner), foundClosingQuote = _this$gatherDataBetwe.foundClosingQuote, col = _this$gatherDataBetwe.col; if (!foundClosingQuote) { // reset the cursor to the original scanner.advanceTo(originalCursor); // if we didnt find a closing quote but we potentially have more data then skip the parsing // and return the original scanner. if (!scanner.hasMoreData) { throw new Error("Parse Error: missing closing: '".concat(this.parserOptions.quote || '', "' in line: at '").concat(scanner.lineFromCursor.replace(/[\r\n]/g, "\\n'"), "'")); } return null; } this.checkForMalformedColumn(scanner); return col; } }, { key: "gatherDataBetweenQuotes", value: function gatherDataBetweenQuotes(scanner) { var parserOptions = this.parserOptions; var foundStartingQuote = false; var foundClosingQuote = false; var characters = []; var nextToken = scanner.nextCharacterToken; for (; !foundClosingQuote && nextToken !== null; nextToken = scanner.nextCharacterToken) { var isQuote = isTokenQuote(nextToken, parserOptions); // ignore first quote if (!foundStartingQuote && isQuote) { foundStartingQuote = true; } else if (foundStartingQuote) { if (isTokenEscapeCharacter(nextToken, parserOptions)) { // advance past the escape character so we can get the next one in line scanner.advancePastToken(nextToken); var tokenFollowingEscape = scanner.nextCharacterToken; // if the character following the escape is a quote character then just add // the quote and advance to that character if (tokenFollowingEscape !== null && (isTokenQuote(tokenFollowingEscape, parserOptions) || isTokenEscapeCharacter(tokenFollowingEscape, parserOptions))) { characters.push(tokenFollowingEscape.token); nextToken = tokenFollowingEscape; } else if (isQuote) { // if the escape is also a quote then we found our closing quote and finish early foundClosingQuote = true; } else { // other wise add the escape token to the characters since it wast escaping anything characters.push(nextToken.token); } } else if (isQuote) { // we found our closing quote! foundClosingQuote = true; } else { // add the token to the characters characters.push(nextToken.token); } } scanner.advancePastToken(nextToken); } return { col: this.columnFormatter.format(characters.join('')), foundClosingQuote: foundClosingQuote }; } }, { key: "checkForMalformedColumn", value: function checkForMalformedColumn(scanner) { var parserOptions = this.parserOptions; var nextNonSpaceToken = scanner.nextNonSpaceToken; if (nextNonSpaceToken) { var isNextTokenADelimiter = isTokenDelimiter(nextNonSpaceToken, parserOptions); var isNextTokenARowDelimiter = isTokenRowDelimiter(nextNonSpaceToken); if (!(isNextTokenADelimiter || isNextTokenARowDelimiter)) { // if the final quote was NOT followed by a column (,) or row(\n) delimiter then its a bad column // tldr: only part of the column was quoted var linePreview = scanner.lineFromCursor.substr(0, 10).replace(/[\r\n]/g, "\\n'"); throw new Error("Parse Error: expected: '".concat(parserOptions.escapedDelimiter, "' OR new line got: '").concat(nextNonSpaceToken.token, "'. at '").concat(linePreview)); } scanner.advanceToToken(nextNonSpaceToken); } else if (!scanner.hasMoreData) { scanner.advancePastLine(); } } }]); return QuotedColumnParser; }(); exports.QuotedColumnParser = QuotedColumnParser; },{"../Token":156,"./ColumnFormatter":157}],161:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var ColumnParser_1 = require("./ColumnParser"); Object.defineProperty(exports, "ColumnParser", { enumerable: true, get: function get() { return ColumnParser_1.ColumnParser; } }); var NonQuotedColumnParser_1 = require("./NonQuotedColumnParser"); Object.defineProperty(exports, "NonQuotedColumnParser", { enumerable: true, get: function get() { return NonQuotedColumnParser_1.NonQuotedColumnParser; } }); var QuotedColumnParser_1 = require("./QuotedColumnParser"); Object.defineProperty(exports, "QuotedColumnParser", { enumerable: true, get: function get() { return QuotedColumnParser_1.QuotedColumnParser; } }); var ColumnFormatter_1 = require("./ColumnFormatter"); Object.defineProperty(exports, "ColumnFormatter", { enumerable: true, get: function get() { return ColumnFormatter_1.ColumnFormatter; } }); },{"./ColumnFormatter":157,"./ColumnParser":158,"./NonQuotedColumnParser":159,"./QuotedColumnParser":160}],162:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Parser_1 = require("./Parser"); Object.defineProperty(exports, "Parser", { enumerable: true, get: function get() { return Parser_1.Parser; } }); var RowParser_1 = require("./RowParser"); Object.defineProperty(exports, "RowParser", { enumerable: true, get: function get() { return RowParser_1.RowParser; } }); var Scanner_1 = require("./Scanner"); Object.defineProperty(exports, "Scanner", { enumerable: true, get: function get() { return Scanner_1.Scanner; } }); var Token_1 = require("./Token"); Object.defineProperty(exports, "Token", { enumerable: true, get: function get() { return Token_1.Token; } }); var column_1 = require("./column"); Object.defineProperty(exports, "ColumnParser", { enumerable: true, get: function get() { return column_1.ColumnParser; } }); Object.defineProperty(exports, "NonQuotedColumnParser", { enumerable: true, get: function get() { return column_1.NonQuotedColumnParser; } }); Object.defineProperty(exports, "QuotedColumnParser", { enumerable: true, get: function get() { return column_1.QuotedColumnParser; } }); },{"./Parser":153,"./RowParser":154,"./Scanner":155,"./Token":156,"./column":161}],163:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HeaderTransformer = void 0; var lodash_isundefined_1 = __importDefault(require("lodash.isundefined")); var lodash_isfunction_1 = __importDefault(require("lodash.isfunction")); var lodash_uniq_1 = __importDefault(require("lodash.uniq")); var lodash_groupby_1 = __importDefault(require("lodash.groupby")); var HeaderTransformer = /*#__PURE__*/function () { function HeaderTransformer(parserOptions) { _classCallCheck(this, HeaderTransformer); this.headers = null; this.receivedHeaders = false; this.shouldUseFirstRow = false; this.processedFirstRow = false; this.headersLength = 0; this.parserOptions = parserOptions; if (parserOptions.headers === true) { this.shouldUseFirstRow = true; } else if (Array.isArray(parserOptions.headers)) { this.setHeaders(parserOptions.headers); } else if (lodash_isfunction_1.default(parserOptions.headers)) { this.headersTransform = parserOptions.headers; } } _createClass(HeaderTransformer, [{ key: "transform", value: function transform(row, cb) { if (!this.shouldMapRow(row)) { return cb(null, { row: null, isValid: true }); } return cb(null, this.processRow(row)); } }, { key: "shouldMapRow", value: function shouldMapRow(row) { var parserOptions = this.parserOptions; if (!this.headersTransform && parserOptions.renameHeaders && !this.processedFirstRow) { if (!this.receivedHeaders) { throw new Error('Error renaming headers: new headers must be provided in an array'); } this.processedFirstRow = true; return false; } if (!this.receivedHeaders && Array.isArray(row)) { if (this.headersTransform) { this.setHeaders(this.headersTransform(row)); } else if (this.shouldUseFirstRow) { this.setHeaders(row); } else { // dont do anything with the headers if we didnt receive a transform or shouldnt use the first row. return true; } return false; } return true; } }, { key: "processRow", value: function processRow(row) { if (!this.headers) { return { row: row, isValid: true }; } var parserOptions = this.parserOptions; if (!parserOptions.discardUnmappedColumns && row.length > this.headersLength) { if (!parserOptions.strictColumnHandling) { throw new Error("Unexpected Error: column header mismatch expected: ".concat(this.headersLength, " columns got: ").concat(row.length)); } return { row: row, isValid: false, reason: "Column header mismatch expected: ".concat(this.headersLength, " columns got: ").concat(row.length) }; } if (parserOptions.strictColumnHandling && row.length < this.headersLength) { return { row: row, isValid: false, reason: "Column header mismatch expected: ".concat(this.headersLength, " columns got: ").concat(row.length) }; } return { row: this.mapHeaders(row), isValid: true }; } }, { key: "mapHeaders", value: function mapHeaders(row) { var rowMap = {}; var headers = this.headers, headersLength = this.headersLength; for (var i = 0; i < headersLength; i += 1) { var header = headers[i]; if (!lodash_isundefined_1.default(header)) { var val = row[i]; // eslint-disable-next-line no-param-reassign if (lodash_isundefined_1.default(val)) { rowMap[header] = ''; } else { rowMap[header] = val; } } } return rowMap; } }, { key: "setHeaders", value: function setHeaders(headers) { var _a; var filteredHeaders = headers.filter(function (h) { return !!h; }); if (lodash_uniq_1.default(filteredHeaders).length !== filteredHeaders.length) { var grouped = lodash_groupby_1.default(filteredHeaders); var duplicates = Object.keys(grouped).filter(function (dup) { return grouped[dup].length > 1; }); throw new Error("Duplicate headers found ".concat(JSON.stringify(duplicates))); } this.headers = headers; this.receivedHeaders = true; this.headersLength = ((_a = this.headers) === null || _a === void 0 ? void 0 : _a.length) || 0; } }]); return HeaderTransformer; }(); exports.HeaderTransformer = HeaderTransformer; },{"lodash.groupby":427,"lodash.isfunction":430,"lodash.isundefined":432,"lodash.uniq":433}],164:[function(require,module,exports){ "use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } var __importDefault = void 0 && (void 0).__importDefault || function (mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RowTransformerValidator = void 0; var lodash_isfunction_1 = __importDefault(require("lodash.isfunction")); var types_1 = require("../types"); var RowTransformerValidator = /*#__PURE__*/function () { function RowTransformerValidator() { _classCallCheck(this, RowTransformerValidator); this._rowTransform = null; this._rowValidator = null; } _createClass(RowTransformerValidator, [{ key: "transformAndValidate", value: function transformAndValidate(row, cb) { var _this = this; return this.callTransformer(row, function (transformErr, transformedRow) { if (transformErr) { return cb(transformErr); } if (!transformedRow) { return cb(null, { row: null, isValid: true }); } return _this.callValidator(transformedRow, function (validateErr, validationResult) { if (validateErr) { return cb(validateErr); } if (validationResult && !validationResult.isValid) { return cb(null, { row: transformedRow, isValid: false, reason: validationResult.reason }); } return cb(null, { row: transformedRow, isValid: true }); }); }); } }, { key: "callTransformer", value: function callTransformer(row, cb) { if (!this._rowTransform) { return cb(null, row); } return this._rowTransform(row, cb); } }, { key: "callValidator", value: function callValidator(row, cb) { if (!this._rowValidator) { return cb(null, { row: row, isValid: true }); } return this._rowValidator(row, cb); } }, { key: "rowTransform", set: function set(transformFunction) { if (!lodash_isfunction_1.default(transformFunction)) { throw new TypeError('The transform should be a function'); } this._rowTransform = RowTransformerValidator.createTransform(transformFunction); } }, { key: "rowValidator", set: function set(validateFunction) { if (!lodash_isfunction_1.default(validateFunction)) { throw new TypeError('The validate should be a function'); } this._rowValidator = RowTransformerValidator.createValidator(validateFunction); } }], [{ key: "createTransform", value: function createTransform(transformFunction) { if (types_1.isSyncTransform(transformFunction)) { return function (row, cb) { var transformed = null; try { transformed = transformFunction(row); } catch (e) { return cb(e); } return cb(null, transformed); }; } return transformFunction; } }, { key: "createValidator", value: function createValidator(validateFunction) { if (types_1.isSyncValidate(validateFunction)) { return function (row, cb) { cb(null, { row: row, isValid: validateFunction(row) }); }; } return function (row, cb) { validateFunction(row, function (err, isValid, reason) { if (err) { return cb(err); } if (isValid) { return cb(null, { row: row, isValid: isValid, reason: reason }); } return cb(null, { row: row, isValid: false, reason: reason }); }); }; } }]); return RowTransformerValidator; }(); exports.RowTransformerValidator = RowTransformerValidator; },{"../types":166,"lodash.isfunction":430}],165:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var RowTransformerValidator_1 = require("./RowTransformerValidator"); Object.defineProperty(exports, "RowTransformerValidator", { enumerable: true, get: function get() { return RowTransformerValidator_1.RowTransformerValidator; } }); var HeaderTransformer_1 = require("./HeaderTransformer"); Object.defineProperty(exports, "HeaderTransformer", { enumerable: true, get: function get() { return HeaderTransformer_1.HeaderTransformer; } }); },{"./HeaderTransformer":163,"./RowTransformerValidator":164}],166:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isSyncValidate = exports.isSyncTransform = void 0; exports.isSyncTransform = function (transform) { return transform.length === 1; }; exports.isSyncValidate = function (validate) { return validate.length === 1; }; },{}],167:[function(require,module,exports){ 'use strict'; var asn1 = exports; asn1.bignum = require('bn.js'); asn1.define = require('./asn1/api').define; asn1.base = require('./asn1/base'); asn1.constants = require('./asn1/constants'); asn1.decoders = require('./asn1/decoders'); asn1.encoders = require('./asn1/encoders'); },{"./asn1/api":168,"./asn1/base":170,"./asn1/constants":174,"./asn1/decoders":176,"./asn1/encoders":179,"bn.js":181}],168:[function(require,module,exports){ 'use strict'; var encoders = require('./encoders'); var decoders = require('./decoders'); var inherits = require('inherits'); var api = exports; api.define = function define(name, body) { return new Entity(name, body); }; function Entity(name, body) { this.name = name; this.body = body; this.decoders = {}; this.encoders = {}; } Entity.prototype._createNamed = function createNamed(Base) { var name = this.name; function Generated(entity) { this._initNamed(entity, name); } inherits(Generated, Base); Generated.prototype._initNamed = function _initNamed(entity, name) { Base.call(this, entity, name); }; return new Generated(this); }; Entity.prototype._getDecoder = function _getDecoder(enc) { enc = enc || 'der'; // Lazily create decoder if (!this.decoders.hasOwnProperty(enc)) this.decoders[enc] = this._createNamed(decoders[enc]); return this.decoders[enc]; }; Entity.prototype.decode = function decode(data, enc, options) { return this._getDecoder(enc).decode(data, options); }; Entity.prototype._getEncoder = function _getEncoder(enc) { enc = enc || 'der'; // Lazily create encoder if (!this.encoders.hasOwnProperty(enc)) this.encoders[enc] = this._createNamed(encoders[enc]); return this.encoders[enc]; }; Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; },{"./decoders":176,"./encoders":179,"inherits":387}],169:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var inherits = require('inherits'); var Reporter = require('../base/reporter').Reporter; var Buffer = require('safer-buffer').Buffer; function DecoderBuffer(base, options) { Reporter.call(this, options); if (!Buffer.isBuffer(base)) { this.error('Input not Buffer'); return; } this.base = base; this.offset = 0; this.length = base.length; } inherits(DecoderBuffer, Reporter); exports.DecoderBuffer = DecoderBuffer; DecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) { if (data instanceof DecoderBuffer) { return true; } // Or accept compatible API var isCompatible = _typeof(data) === 'object' && Buffer.isBuffer(data.base) && data.constructor.name === 'DecoderBuffer' && typeof data.offset === 'number' && typeof data.length === 'number' && typeof data.save === 'function' && typeof data.restore === 'function' && typeof data.isEmpty === 'function' && typeof data.readUInt8 === 'function' && typeof data.skip === 'function' && typeof data.raw === 'function'; return isCompatible; }; DecoderBuffer.prototype.save = function save() { return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; }; DecoderBuffer.prototype.restore = function restore(save) { // Return skipped data var res = new DecoderBuffer(this.base); res.offset = save.offset; res.length = this.offset; this.offset = save.offset; Reporter.prototype.restore.call(this, save.reporter); return res; }; DecoderBuffer.prototype.isEmpty = function isEmpty() { return this.offset === this.length; }; DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { if (this.offset + 1 <= this.length) return this.base.readUInt8(this.offset++, true);else return this.error(fail || 'DecoderBuffer overrun'); }; DecoderBuffer.prototype.skip = function skip(bytes, fail) { if (!(this.offset + bytes <= this.length)) return this.error(fail || 'DecoderBuffer overrun'); var res = new DecoderBuffer(this.base); // Share reporter state res._reporterState = this._reporterState; res.offset = this.offset; res.length = this.offset + bytes; this.offset += bytes; return res; }; DecoderBuffer.prototype.raw = function raw(save) { return this.base.slice(save ? save.offset : this.offset, this.length); }; function EncoderBuffer(value, reporter) { if (Array.isArray(value)) { this.length = 0; this.value = value.map(function (item) { if (!EncoderBuffer.isEncoderBuffer(item)) item = new EncoderBuffer(item, reporter); this.length += item.length; return item; }, this); } else if (typeof value === 'number') { if (!(0 <= value && value <= 0xff)) return reporter.error('non-byte EncoderBuffer value'); this.value = value; this.length = 1; } else if (typeof value === 'string') { this.value = value; this.length = Buffer.byteLength(value); } else if (Buffer.isBuffer(value)) { this.value = value; this.length = value.length; } else { return reporter.error('Unsupported type: ' + _typeof(value)); } } exports.EncoderBuffer = EncoderBuffer; EncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) { if (data instanceof EncoderBuffer) { return true; } // Or accept compatible API var isCompatible = _typeof(data) === 'object' && data.constructor.name === 'EncoderBuffer' && typeof data.length === 'number' && typeof data.join === 'function'; return isCompatible; }; EncoderBuffer.prototype.join = function join(out, offset) { if (!out) out = Buffer.alloc(this.length); if (!offset) offset = 0; if (this.length === 0) return out; if (Array.isArray(this.value)) { this.value.forEach(function (item) { item.join(out, offset); offset += item.length; }); } else { if (typeof this.value === 'number') out[offset] = this.value;else if (typeof this.value === 'string') out.write(this.value, offset);else if (Buffer.isBuffer(this.value)) this.value.copy(out, offset); offset += this.length; } return out; }; },{"../base/reporter":172,"inherits":387,"safer-buffer":495}],170:[function(require,module,exports){ 'use strict'; var base = exports; base.Reporter = require('./reporter').Reporter; base.DecoderBuffer = require('./buffer').DecoderBuffer; base.EncoderBuffer = require('./buffer').EncoderBuffer; base.Node = require('./node'); },{"./buffer":169,"./node":171,"./reporter":172}],171:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var Reporter = require('../base/reporter').Reporter; var EncoderBuffer = require('../base/buffer').EncoderBuffer; var DecoderBuffer = require('../base/buffer').DecoderBuffer; var assert = require('minimalistic-assert'); // Supported tags var tags = ['seq', 'seqof', 'set', 'setof', 'objid', 'bool', 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc', 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str', 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr']; // Public methods list var methods = ['key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice', 'any', 'contains'].concat(tags); // Overrided methods list var overrided = ['_peekTag', '_decodeTag', '_use', '_decodeStr', '_decodeObjid', '_decodeTime', '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList', '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime', '_encodeNull', '_encodeInt', '_encodeBool']; function Node(enc, parent, name) { var state = {}; this._baseState = state; state.name = name; state.enc = enc; state.parent = parent || null; state.children = null; // State state.tag = null; state.args = null; state.reverseArgs = null; state.choice = null; state.optional = false; state.any = false; state.obj = false; state.use = null; state.useDecoder = null; state.key = null; state['default'] = null; state.explicit = null; state.implicit = null; state.contains = null; // Should create new instance on each method if (!state.parent) { state.children = []; this._wrap(); } } module.exports = Node; var stateProps = ['enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice', 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit', 'implicit', 'contains']; Node.prototype.clone = function clone() { var state = this._baseState; var cstate = {}; stateProps.forEach(function (prop) { cstate[prop] = state[prop]; }); var res = new this.constructor(cstate.parent); res._baseState = cstate; return res; }; Node.prototype._wrap = function wrap() { var state = this._baseState; methods.forEach(function (method) { this[method] = function _wrappedMethod() { var clone = new this.constructor(this); state.children.push(clone); return clone[method].apply(clone, arguments); }; }, this); }; Node.prototype._init = function init(body) { var state = this._baseState; assert(state.parent === null); body.call(this); // Filter children state.children = state.children.filter(function (child) { return child._baseState.parent === this; }, this); assert.equal(state.children.length, 1, 'Root node can have only one child'); }; Node.prototype._useArgs = function useArgs(args) { var state = this._baseState; // Filter children and args var children = args.filter(function (arg) { return arg instanceof this.constructor; }, this); args = args.filter(function (arg) { return !(arg instanceof this.constructor); }, this); if (children.length !== 0) { assert(state.children === null); state.children = children; // Replace parent to maintain backward link children.forEach(function (child) { child._baseState.parent = this; }, this); } if (args.length !== 0) { assert(state.args === null); state.args = args; state.reverseArgs = args.map(function (arg) { if (_typeof(arg) !== 'object' || arg.constructor !== Object) return arg; var res = {}; Object.keys(arg).forEach(function (key) { if (key == (key | 0)) key |= 0; var value = arg[key]; res[value] = key; }); return res; }); } }; // // Overrided methods // overrided.forEach(function (method) { Node.prototype[method] = function _overrided() { var state = this._baseState; throw new Error(method + ' not implemented for encoding: ' + state.enc); }; }); // // Public methods // tags.forEach(function (tag) { Node.prototype[tag] = function _tagMethod() { var state = this._baseState; var args = Array.prototype.slice.call(arguments); assert(state.tag === null); state.tag = tag; this._useArgs(args); return this; }; }); Node.prototype.use = function use(item) { assert(item); var state = this._baseState; assert(state.use === null); state.use = item; return this; }; Node.prototype.optional = function optional() { var state = this._baseState; state.optional = true; return this; }; Node.prototype.def = function def(val) { var state = this._baseState; assert(state['default'] === null); state['default'] = val; state.optional = true; return this; }; Node.prototype.explicit = function explicit(num) { var state = this._baseState; assert(state.explicit === null && state.implicit === null); state.explicit = num; return this; }; Node.prototype.implicit = function implicit(num) { var state = this._baseState; assert(state.explicit === null && state.implicit === null); state.implicit = num; return this; }; Node.prototype.obj = function obj() { var state = this._baseState; var args = Array.prototype.slice.call(arguments); state.obj = true; if (args.length !== 0) this._useArgs(args); return this; }; Node.prototype.key = function key(newKey) { var state = this._baseState; assert(state.key === null); state.key = newKey; return this; }; Node.prototype.any = function any() { var state = this._baseState; state.any = true; return this; }; Node.prototype.choice = function choice(obj) { var state = this._baseState; assert(state.choice === null); state.choice = obj; this._useArgs(Object.keys(obj).map(function (key) { return obj[key]; })); return this; }; Node.prototype.contains = function contains(item) { var state = this._baseState; assert(state.use === null); state.contains = item; return this; }; // // Decoding // Node.prototype._decode = function decode(input, options) { var state = this._baseState; // Decode root node if (state.parent === null) return input.wrapResult(state.children[0]._decode(input, options)); var result = state['default']; var present = true; var prevKey = null; if (state.key !== null) prevKey = input.enterKey(state.key); // Check if tag is there if (state.optional) { var tag = null; if (state.explicit !== null) tag = state.explicit;else if (state.implicit !== null) tag = state.implicit;else if (state.tag !== null) tag = state.tag; if (tag === null && !state.any) { // Trial and Error var save = input.save(); try { if (state.choice === null) this._decodeGeneric(state.tag, input, options);else this._decodeChoice(input, options); present = true; } catch (e) { present = false; } input.restore(save); } else { present = this._peekTag(input, tag, state.any); if (input.isError(present)) return present; } } // Push object on stack var prevObj; if (state.obj && present) prevObj = input.enterObject(); if (present) { // Unwrap explicit values if (state.explicit !== null) { var explicit = this._decodeTag(input, state.explicit); if (input.isError(explicit)) return explicit; input = explicit; } var start = input.offset; // Unwrap implicit and normal values if (state.use === null && state.choice === null) { var _save; if (state.any) _save = input.save(); var body = this._decodeTag(input, state.implicit !== null ? state.implicit : state.tag, state.any); if (input.isError(body)) return body; if (state.any) result = input.raw(_save);else input = body; } if (options && options.track && state.tag !== null) options.track(input.path(), start, input.length, 'tagged'); if (options && options.track && state.tag !== null) options.track(input.path(), input.offset, input.length, 'content'); // Select proper method for tag if (state.any) {// no-op } else if (state.choice === null) { result = this._decodeGeneric(state.tag, input, options); } else { result = this._decodeChoice(input, options); } if (input.isError(result)) return result; // Decode children if (!state.any && state.choice === null && state.children !== null) { state.children.forEach(function decodeChildren(child) { // NOTE: We are ignoring errors here, to let parser continue with other // parts of encoded data child._decode(input, options); }); } // Decode contained/encoded by schema, only in bit or octet strings if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) { var data = new DecoderBuffer(result); result = this._getUse(state.contains, input._reporterState.obj)._decode(data, options); } } // Pop object if (state.obj && present) result = input.leaveObject(prevObj); // Set key if (state.key !== null && (result !== null || present === true)) input.leaveKey(prevKey, state.key, result);else if (prevKey !== null) input.exitKey(prevKey); return result; }; Node.prototype._decodeGeneric = function decodeGeneric(tag, input, options) { var state = this._baseState; if (tag === 'seq' || tag === 'set') return null; if (tag === 'seqof' || tag === 'setof') return this._decodeList(input, tag, state.args[0], options);else if (/str$/.test(tag)) return this._decodeStr(input, tag, options);else if (tag === 'objid' && state.args) return this._decodeObjid(input, state.args[0], state.args[1], options);else if (tag === 'objid') return this._decodeObjid(input, null, null, options);else if (tag === 'gentime' || tag === 'utctime') return this._decodeTime(input, tag, options);else if (tag === 'null_') return this._decodeNull(input, options);else if (tag === 'bool') return this._decodeBool(input, options);else if (tag === 'objDesc') return this._decodeStr(input, tag, options);else if (tag === 'int' || tag === 'enum') return this._decodeInt(input, state.args && state.args[0], options); if (state.use !== null) { return this._getUse(state.use, input._reporterState.obj)._decode(input, options); } else { return input.error('unknown tag: ' + tag); } }; Node.prototype._getUse = function _getUse(entity, obj) { var state = this._baseState; // Create altered use decoder if implicit is set state.useDecoder = this._use(entity, obj); assert(state.useDecoder._baseState.parent === null); state.useDecoder = state.useDecoder._baseState.children[0]; if (state.implicit !== state.useDecoder._baseState.implicit) { state.useDecoder = state.useDecoder.clone(); state.useDecoder._baseState.implicit = state.implicit; } return state.useDecoder; }; Node.prototype._decodeChoice = function decodeChoice(input, options) { var state = this._baseState; var result = null; var match = false; Object.keys(state.choice).some(function (key) { var save = input.save(); var node = state.choice[key]; try { var value = node._decode(input, options); if (input.isError(value)) return false; result = { type: key, value: value }; match = true; } catch (e) { input.restore(save); return false; } return true; }, this); if (!match) return input.error('Choice not matched'); return result; }; // // Encoding // Node.prototype._createEncoderBuffer = function createEncoderBuffer(data) { return new EncoderBuffer(data, this.reporter); }; Node.prototype._encode = function encode(data, reporter, parent) { var state = this._baseState; if (state['default'] !== null && state['default'] === data) return; var result = this._encodeValue(data, reporter, parent); if (result === undefined) return; if (this._skipDefault(result, reporter, parent)) return; return result; }; Node.prototype._encodeValue = function encode(data, reporter, parent) { var state = this._baseState; // Decode root node if (state.parent === null) return state.children[0]._encode(data, reporter || new Reporter()); var result = null; // Set reporter to share it with a child class this.reporter = reporter; // Check if data is there if (state.optional && data === undefined) { if (state['default'] !== null) data = state['default'];else return; } // Encode children first var content = null; var primitive = false; if (state.any) { // Anything that was given is translated to buffer result = this._createEncoderBuffer(data); } else if (state.choice) { result = this._encodeChoice(data, reporter); } else if (state.contains) { content = this._getUse(state.contains, parent)._encode(data, reporter); primitive = true; } else if (state.children) { content = state.children.map(function (child) { if (child._baseState.tag === 'null_') return child._encode(null, reporter, data); if (child._baseState.key === null) return reporter.error('Child should have a key'); var prevKey = reporter.enterKey(child._baseState.key); if (_typeof(data) !== 'object') return reporter.error('Child expected, but input is not object'); var res = child._encode(data[child._baseState.key], reporter, data); reporter.leaveKey(prevKey); return res; }, this).filter(function (child) { return child; }); content = this._createEncoderBuffer(content); } else { if (state.tag === 'seqof' || state.tag === 'setof') { // TODO(indutny): this should be thrown on DSL level if (!(state.args && state.args.length === 1)) return reporter.error('Too many args for : ' + state.tag); if (!Array.isArray(data)) return reporter.error('seqof/setof, but data is not Array'); var child = this.clone(); child._baseState.implicit = null; content = this._createEncoderBuffer(data.map(function (item) { var state = this._baseState; return this._getUse(state.args[0], data)._encode(item, reporter); }, child)); } else if (state.use !== null) { result = this._getUse(state.use, parent)._encode(data, reporter); } else { content = this._encodePrimitive(state.tag, data); primitive = true; } } // Encode data itself if (!state.any && state.choice === null) { var tag = state.implicit !== null ? state.implicit : state.tag; var cls = state.implicit === null ? 'universal' : 'context'; if (tag === null) { if (state.use === null) reporter.error('Tag could be omitted only for .use()'); } else { if (state.use === null) result = this._encodeComposite(tag, primitive, cls, content); } } // Wrap in explicit if (state.explicit !== null) result = this._encodeComposite(state.explicit, false, 'context', result); return result; }; Node.prototype._encodeChoice = function encodeChoice(data, reporter) { var state = this._baseState; var node = state.choice[data.type]; if (!node) { assert(false, data.type + ' not found in ' + JSON.stringify(Object.keys(state.choice))); } return node._encode(data.value, reporter); }; Node.prototype._encodePrimitive = function encodePrimitive(tag, data) { var state = this._baseState; if (/str$/.test(tag)) return this._encodeStr(data, tag);else if (tag === 'objid' && state.args) return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);else if (tag === 'objid') return this._encodeObjid(data, null, null);else if (tag === 'gentime' || tag === 'utctime') return this._encodeTime(data, tag);else if (tag === 'null_') return this._encodeNull();else if (tag === 'int' || tag === 'enum') return this._encodeInt(data, state.args && state.reverseArgs[0]);else if (tag === 'bool') return this._encodeBool(data);else if (tag === 'objDesc') return this._encodeStr(data, tag);else throw new Error('Unsupported tag: ' + tag); }; Node.prototype._isNumstr = function isNumstr(str) { return /^[0-9 ]*$/.test(str); }; Node.prototype._isPrintstr = function isPrintstr(str) { return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str); }; },{"../base/buffer":169,"../base/reporter":172,"minimalistic-assert":437}],172:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); function Reporter(options) { this._reporterState = { obj: null, path: [], options: options || {}, errors: [] }; } exports.Reporter = Reporter; Reporter.prototype.isError = function isError(obj) { return obj instanceof ReporterError; }; Reporter.prototype.save = function save() { var state = this._reporterState; return { obj: state.obj, pathLen: state.path.length }; }; Reporter.prototype.restore = function restore(data) { var state = this._reporterState; state.obj = data.obj; state.path = state.path.slice(0, data.pathLen); }; Reporter.prototype.enterKey = function enterKey(key) { return this._reporterState.path.push(key); }; Reporter.prototype.exitKey = function exitKey(index) { var state = this._reporterState; state.path = state.path.slice(0, index - 1); }; Reporter.prototype.leaveKey = function leaveKey(index, key, value) { var state = this._reporterState; this.exitKey(index); if (state.obj !== null) state.obj[key] = value; }; Reporter.prototype.path = function path() { return this._reporterState.path.join('/'); }; Reporter.prototype.enterObject = function enterObject() { var state = this._reporterState; var prev = state.obj; state.obj = {}; return prev; }; Reporter.prototype.leaveObject = function leaveObject(prev) { var state = this._reporterState; var now = state.obj; state.obj = prev; return now; }; Reporter.prototype.error = function error(msg) { var err; var state = this._reporterState; var inherited = msg instanceof ReporterError; if (inherited) { err = msg; } else { err = new ReporterError(state.path.map(function (elem) { return '[' + JSON.stringify(elem) + ']'; }).join(''), msg.message || msg, msg.stack); } if (!state.options.partial) throw err; if (!inherited) state.errors.push(err); return err; }; Reporter.prototype.wrapResult = function wrapResult(result) { var state = this._reporterState; if (!state.options.partial) return result; return { result: this.isError(result) ? null : result, errors: state.errors }; }; function ReporterError(path, msg) { this.path = path; this.rethrow(msg); } inherits(ReporterError, Error); ReporterError.prototype.rethrow = function rethrow(msg) { this.message = msg + ' at: ' + (this.path || '(shallow)'); if (Error.captureStackTrace) Error.captureStackTrace(this, ReporterError); if (!this.stack) { try { // IE only adds stack when thrown throw new Error(this.message); } catch (e) { this.stack = e.stack; } } return this; }; },{"inherits":387}],173:[function(require,module,exports){ 'use strict'; // Helper function reverse(map) { var res = {}; Object.keys(map).forEach(function (key) { // Convert key to integer if it is stringified if ((key | 0) == key) key = key | 0; var value = map[key]; res[value] = key; }); return res; } exports.tagClass = { 0: 'universal', 1: 'application', 2: 'context', 3: 'private' }; exports.tagClassByName = reverse(exports.tagClass); exports.tag = { 0x00: 'end', 0x01: 'bool', 0x02: 'int', 0x03: 'bitstr', 0x04: 'octstr', 0x05: 'null_', 0x06: 'objid', 0x07: 'objDesc', 0x08: 'external', 0x09: 'real', 0x0a: 'enum', 0x0b: 'embed', 0x0c: 'utf8str', 0x0d: 'relativeOid', 0x10: 'seq', 0x11: 'set', 0x12: 'numstr', 0x13: 'printstr', 0x14: 't61str', 0x15: 'videostr', 0x16: 'ia5str', 0x17: 'utctime', 0x18: 'gentime', 0x19: 'graphstr', 0x1a: 'iso646str', 0x1b: 'genstr', 0x1c: 'unistr', 0x1d: 'charstr', 0x1e: 'bmpstr' }; exports.tagByName = reverse(exports.tag); },{}],174:[function(require,module,exports){ 'use strict'; var constants = exports; // Helper constants._reverse = function reverse(map) { var res = {}; Object.keys(map).forEach(function (key) { // Convert key to integer if it is stringified if ((key | 0) == key) key = key | 0; var value = map[key]; res[value] = key; }); return res; }; constants.der = require('./der'); },{"./der":173}],175:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var bignum = require('bn.js'); var DecoderBuffer = require('../base/buffer').DecoderBuffer; var Node = require('../base/node'); // Import DER constants var der = require('../constants/der'); function DERDecoder(entity) { this.enc = 'der'; this.name = entity.name; this.entity = entity; // Construct base tree this.tree = new DERNode(); this.tree._init(entity.body); } module.exports = DERDecoder; DERDecoder.prototype.decode = function decode(data, options) { if (!DecoderBuffer.isDecoderBuffer(data)) { data = new DecoderBuffer(data, options); } return this.tree._decode(data, options); }; // Tree methods function DERNode(parent) { Node.call(this, 'der', parent); } inherits(DERNode, Node); DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { if (buffer.isEmpty()) return false; var state = buffer.save(); var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); if (buffer.isError(decodedTag)) return decodedTag; buffer.restore(state); return decodedTag.tag === tag || decodedTag.tagStr === tag || decodedTag.tagStr + 'of' === tag || any; }; DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { var decodedTag = derDecodeTag(buffer, 'Failed to decode tag of "' + tag + '"'); if (buffer.isError(decodedTag)) return decodedTag; var len = derDecodeLen(buffer, decodedTag.primitive, 'Failed to get length of "' + tag + '"'); // Failure if (buffer.isError(len)) return len; if (!any && decodedTag.tag !== tag && decodedTag.tagStr !== tag && decodedTag.tagStr + 'of' !== tag) { return buffer.error('Failed to match tag: "' + tag + '"'); } if (decodedTag.primitive || len !== null) return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); // Indefinite length... find END tag var state = buffer.save(); var res = this._skipUntilEnd(buffer, 'Failed to skip indefinite length body: "' + this.tag + '"'); if (buffer.isError(res)) return res; len = buffer.offset - state.offset; buffer.restore(state); return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); }; DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { for (;;) { var tag = derDecodeTag(buffer, fail); if (buffer.isError(tag)) return tag; var len = derDecodeLen(buffer, tag.primitive, fail); if (buffer.isError(len)) return len; var res = void 0; if (tag.primitive || len !== null) res = buffer.skip(len);else res = this._skipUntilEnd(buffer, fail); // Failure if (buffer.isError(res)) return res; if (tag.tagStr === 'end') break; } }; DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, options) { var result = []; while (!buffer.isEmpty()) { var possibleEnd = this._peekTag(buffer, 'end'); if (buffer.isError(possibleEnd)) return possibleEnd; var res = decoder.decode(buffer, 'der', options); if (buffer.isError(res) && possibleEnd) break; result.push(res); } return result; }; DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { if (tag === 'bitstr') { var unused = buffer.readUInt8(); if (buffer.isError(unused)) return unused; return { unused: unused, data: buffer.raw() }; } else if (tag === 'bmpstr') { var raw = buffer.raw(); if (raw.length % 2 === 1) return buffer.error('Decoding of string type: bmpstr length mismatch'); var str = ''; for (var i = 0; i < raw.length / 2; i++) { str += String.fromCharCode(raw.readUInt16BE(i * 2)); } return str; } else if (tag === 'numstr') { var numstr = buffer.raw().toString('ascii'); if (!this._isNumstr(numstr)) { return buffer.error('Decoding of string type: ' + 'numstr unsupported characters'); } return numstr; } else if (tag === 'octstr') { return buffer.raw(); } else if (tag === 'objDesc') { return buffer.raw(); } else if (tag === 'printstr') { var printstr = buffer.raw().toString('ascii'); if (!this._isPrintstr(printstr)) { return buffer.error('Decoding of string type: ' + 'printstr unsupported characters'); } return printstr; } else if (/str$/.test(tag)) { return buffer.raw().toString(); } else { return buffer.error('Decoding of string type: ' + tag + ' unsupported'); } }; DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { var result; var identifiers = []; var ident = 0; var subident = 0; while (!buffer.isEmpty()) { subident = buffer.readUInt8(); ident <<= 7; ident |= subident & 0x7f; if ((subident & 0x80) === 0) { identifiers.push(ident); ident = 0; } } if (subident & 0x80) identifiers.push(ident); var first = identifiers[0] / 40 | 0; var second = identifiers[0] % 40; if (relative) result = identifiers;else result = [first, second].concat(identifiers.slice(1)); if (values) { var tmp = values[result.join(' ')]; if (tmp === undefined) tmp = values[result.join('.')]; if (tmp !== undefined) result = tmp; } return result; }; DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { var str = buffer.raw().toString(); var year; var mon; var day; var hour; var min; var sec; if (tag === 'gentime') { year = str.slice(0, 4) | 0; mon = str.slice(4, 6) | 0; day = str.slice(6, 8) | 0; hour = str.slice(8, 10) | 0; min = str.slice(10, 12) | 0; sec = str.slice(12, 14) | 0; } else if (tag === 'utctime') { year = str.slice(0, 2) | 0; mon = str.slice(2, 4) | 0; day = str.slice(4, 6) | 0; hour = str.slice(6, 8) | 0; min = str.slice(8, 10) | 0; sec = str.slice(10, 12) | 0; if (year < 70) year = 2000 + year;else year = 1900 + year; } else { return buffer.error('Decoding ' + tag + ' time is not supported yet'); } return Date.UTC(year, mon - 1, day, hour, min, sec, 0); }; DERNode.prototype._decodeNull = function decodeNull() { return null; }; DERNode.prototype._decodeBool = function decodeBool(buffer) { var res = buffer.readUInt8(); if (buffer.isError(res)) return res;else return res !== 0; }; DERNode.prototype._decodeInt = function decodeInt(buffer, values) { // Bigint, return as it is (assume big endian) var raw = buffer.raw(); var res = new bignum(raw); if (values) res = values[res.toString(10)] || res; return res; }; DERNode.prototype._use = function use(entity, obj) { if (typeof entity === 'function') entity = entity(obj); return entity._getDecoder('der').tree; }; // Utility methods function derDecodeTag(buf, fail) { var tag = buf.readUInt8(fail); if (buf.isError(tag)) return tag; var cls = der.tagClass[tag >> 6]; var primitive = (tag & 0x20) === 0; // Multi-octet tag - load if ((tag & 0x1f) === 0x1f) { var oct = tag; tag = 0; while ((oct & 0x80) === 0x80) { oct = buf.readUInt8(fail); if (buf.isError(oct)) return oct; tag <<= 7; tag |= oct & 0x7f; } } else { tag &= 0x1f; } var tagStr = der.tag[tag]; return { cls: cls, primitive: primitive, tag: tag, tagStr: tagStr }; } function derDecodeLen(buf, primitive, fail) { var len = buf.readUInt8(fail); if (buf.isError(len)) return len; // Indefinite form if (!primitive && len === 0x80) return null; // Definite form if ((len & 0x80) === 0) { // Short form return len; } // Long form var num = len & 0x7f; if (num > 4) return buf.error('length octect is too long'); len = 0; for (var i = 0; i < num; i++) { len <<= 8; var j = buf.readUInt8(fail); if (buf.isError(j)) return j; len |= j; } return len; } },{"../base/buffer":169,"../base/node":171,"../constants/der":173,"bn.js":181,"inherits":387}],176:[function(require,module,exports){ 'use strict'; var decoders = exports; decoders.der = require('./der'); decoders.pem = require('./pem'); },{"./der":175,"./pem":177}],177:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var Buffer = require('safer-buffer').Buffer; var DERDecoder = require('./der'); function PEMDecoder(entity) { DERDecoder.call(this, entity); this.enc = 'pem'; } inherits(PEMDecoder, DERDecoder); module.exports = PEMDecoder; PEMDecoder.prototype.decode = function decode(data, options) { var lines = data.toString().split(/[\r\n]+/g); var label = options.label.toUpperCase(); var re = /^-----(BEGIN|END) ([^-]+)-----$/; var start = -1; var end = -1; for (var i = 0; i < lines.length; i++) { var match = lines[i].match(re); if (match === null) continue; if (match[2] !== label) continue; if (start === -1) { if (match[1] !== 'BEGIN') break; start = i; } else { if (match[1] !== 'END') break; end = i; break; } } if (start === -1 || end === -1) throw new Error('PEM section not found for: ' + label); var base64 = lines.slice(start + 1, end).join(''); // Remove excessive symbols base64.replace(/[^a-z0-9+/=]+/gi, ''); var input = Buffer.from(base64, 'base64'); return DERDecoder.prototype.decode.call(this, input, options); }; },{"./der":175,"inherits":387,"safer-buffer":495}],178:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var Buffer = require('safer-buffer').Buffer; var Node = require('../base/node'); // Import DER constants var der = require('../constants/der'); function DEREncoder(entity) { this.enc = 'der'; this.name = entity.name; this.entity = entity; // Construct base tree this.tree = new DERNode(); this.tree._init(entity.body); } module.exports = DEREncoder; DEREncoder.prototype.encode = function encode(data, reporter) { return this.tree._encode(data, reporter).join(); }; // Tree methods function DERNode(parent) { Node.call(this, 'der', parent); } inherits(DERNode, Node); DERNode.prototype._encodeComposite = function encodeComposite(tag, primitive, cls, content) { var encodedTag = encodeTag(tag, primitive, cls, this.reporter); // Short form if (content.length < 0x80) { var _header = Buffer.alloc(2); _header[0] = encodedTag; _header[1] = content.length; return this._createEncoderBuffer([_header, content]); } // Long form // Count octets required to store length var lenOctets = 1; for (var i = content.length; i >= 0x100; i >>= 8) { lenOctets++; } var header = Buffer.alloc(1 + 1 + lenOctets); header[0] = encodedTag; header[1] = 0x80 | lenOctets; for (var _i = 1 + lenOctets, j = content.length; j > 0; _i--, j >>= 8) { header[_i] = j & 0xff; } return this._createEncoderBuffer([header, content]); }; DERNode.prototype._encodeStr = function encodeStr(str, tag) { if (tag === 'bitstr') { return this._createEncoderBuffer([str.unused | 0, str.data]); } else if (tag === 'bmpstr') { var buf = Buffer.alloc(str.length * 2); for (var i = 0; i < str.length; i++) { buf.writeUInt16BE(str.charCodeAt(i), i * 2); } return this._createEncoderBuffer(buf); } else if (tag === 'numstr') { if (!this._isNumstr(str)) { return this.reporter.error('Encoding of string type: numstr supports ' + 'only digits and space'); } return this._createEncoderBuffer(str); } else if (tag === 'printstr') { if (!this._isPrintstr(str)) { return this.reporter.error('Encoding of string type: printstr supports ' + 'only latin upper and lower case letters, ' + 'digits, space, apostrophe, left and rigth ' + 'parenthesis, plus sign, comma, hyphen, ' + 'dot, slash, colon, equal sign, ' + 'question mark'); } return this._createEncoderBuffer(str); } else if (/str$/.test(tag)) { return this._createEncoderBuffer(str); } else if (tag === 'objDesc') { return this._createEncoderBuffer(str); } else { return this.reporter.error('Encoding of string type: ' + tag + ' unsupported'); } }; DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { if (typeof id === 'string') { if (!values) return this.reporter.error('string objid given, but no values map found'); if (!values.hasOwnProperty(id)) return this.reporter.error('objid not found in values map'); id = values[id].split(/[\s.]+/g); for (var i = 0; i < id.length; i++) { id[i] |= 0; } } else if (Array.isArray(id)) { id = id.slice(); for (var _i2 = 0; _i2 < id.length; _i2++) { id[_i2] |= 0; } } if (!Array.isArray(id)) { return this.reporter.error('objid() should be either array or string, ' + 'got: ' + JSON.stringify(id)); } if (!relative) { if (id[1] >= 40) return this.reporter.error('Second objid identifier OOB'); id.splice(0, 2, id[0] * 40 + id[1]); } // Count number of octets var size = 0; for (var _i3 = 0; _i3 < id.length; _i3++) { var ident = id[_i3]; for (size++; ident >= 0x80; ident >>= 7) { size++; } } var objid = Buffer.alloc(size); var offset = objid.length - 1; for (var _i4 = id.length - 1; _i4 >= 0; _i4--) { var _ident = id[_i4]; objid[offset--] = _ident & 0x7f; while ((_ident >>= 7) > 0) { objid[offset--] = 0x80 | _ident & 0x7f; } } return this._createEncoderBuffer(objid); }; function two(num) { if (num < 10) return '0' + num;else return num; } DERNode.prototype._encodeTime = function encodeTime(time, tag) { var str; var date = new Date(time); if (tag === 'gentime') { str = [two(date.getUTCFullYear()), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join(''); } else if (tag === 'utctime') { str = [two(date.getUTCFullYear() % 100), two(date.getUTCMonth() + 1), two(date.getUTCDate()), two(date.getUTCHours()), two(date.getUTCMinutes()), two(date.getUTCSeconds()), 'Z'].join(''); } else { this.reporter.error('Encoding ' + tag + ' time is not supported yet'); } return this._encodeStr(str, 'octstr'); }; DERNode.prototype._encodeNull = function encodeNull() { return this._createEncoderBuffer(''); }; DERNode.prototype._encodeInt = function encodeInt(num, values) { if (typeof num === 'string') { if (!values) return this.reporter.error('String int or enum given, but no values map'); if (!values.hasOwnProperty(num)) { return this.reporter.error('Values map doesn\'t contain: ' + JSON.stringify(num)); } num = values[num]; } // Bignum, assume big endian if (typeof num !== 'number' && !Buffer.isBuffer(num)) { var numArray = num.toArray(); if (!num.sign && numArray[0] & 0x80) { numArray.unshift(0); } num = Buffer.from(numArray); } if (Buffer.isBuffer(num)) { var _size = num.length; if (num.length === 0) _size++; var _out = Buffer.alloc(_size); num.copy(_out); if (num.length === 0) _out[0] = 0; return this._createEncoderBuffer(_out); } if (num < 0x80) return this._createEncoderBuffer(num); if (num < 0x100) return this._createEncoderBuffer([0, num]); var size = 1; for (var i = num; i >= 0x100; i >>= 8) { size++; } var out = new Array(size); for (var _i5 = out.length - 1; _i5 >= 0; _i5--) { out[_i5] = num & 0xff; num >>= 8; } if (out[0] & 0x80) { out.unshift(0); } return this._createEncoderBuffer(Buffer.from(out)); }; DERNode.prototype._encodeBool = function encodeBool(value) { return this._createEncoderBuffer(value ? 0xff : 0); }; DERNode.prototype._use = function use(entity, obj) { if (typeof entity === 'function') entity = entity(obj); return entity._getEncoder('der').tree; }; DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { var state = this._baseState; var i; if (state['default'] === null) return false; var data = dataBuffer.join(); if (state.defaultBuffer === undefined) state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); if (data.length !== state.defaultBuffer.length) return false; for (i = 0; i < data.length; i++) { if (data[i] !== state.defaultBuffer[i]) return false; } return true; }; // Utility methods function encodeTag(tag, primitive, cls, reporter) { var res; if (tag === 'seqof') tag = 'seq';else if (tag === 'setof') tag = 'set'; if (der.tagByName.hasOwnProperty(tag)) res = der.tagByName[tag];else if (typeof tag === 'number' && (tag | 0) === tag) res = tag;else return reporter.error('Unknown tag: ' + tag); if (res >= 0x1f) return reporter.error('Multi-octet tag encoding unsupported'); if (!primitive) res |= 0x20; res |= der.tagClassByName[cls || 'universal'] << 6; return res; } },{"../base/node":171,"../constants/der":173,"inherits":387,"safer-buffer":495}],179:[function(require,module,exports){ 'use strict'; var encoders = exports; encoders.der = require('./der'); encoders.pem = require('./pem'); },{"./der":178,"./pem":180}],180:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var DEREncoder = require('./der'); function PEMEncoder(entity) { DEREncoder.call(this, entity); this.enc = 'pem'; } inherits(PEMEncoder, DEREncoder); module.exports = PEMEncoder; PEMEncoder.prototype.encode = function encode(data, options) { var buf = DEREncoder.prototype.encode.call(this, data); var p = buf.toString('base64'); var out = ['-----BEGIN ' + options.label + '-----']; for (var i = 0; i < p.length; i += 64) { out.push(p.slice(i, i + 64)); } out.push('-----END ' + options.label + '-----'); return out.join('\n'); }; },{"./der":178,"inherits":387}],181:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } (function (module, exports) { 'use strict'; // Utils function assert(val, msg) { if (!val) throw new Error(msg || 'Assertion failed'); } // Could use `inherits` module, but don't want to move from single file // architecture yet. function inherits(ctor, superCtor) { ctor.super_ = superCtor; var TempCtor = function TempCtor() {}; TempCtor.prototype = superCtor.prototype; ctor.prototype = new TempCtor(); ctor.prototype.constructor = ctor; } // BN function BN(number, base, endian) { if (BN.isBN(number)) { return number; } this.negative = 0; this.words = null; this.length = 0; // Reduction context this.red = null; if (number !== null) { if (base === 'le' || base === 'be') { endian = base; base = 10; } this._init(number || 0, base || 10, endian || 'be'); } } if (_typeof(module) === 'object') { module.exports = BN; } else { exports.BN = BN; } BN.BN = BN; BN.wordSize = 26; var Buffer; try { Buffer = require('buffer').Buffer; } catch (e) {} BN.isBN = function isBN(num) { if (num instanceof BN) { return true; } return num !== null && _typeof(num) === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); }; BN.max = function max(left, right) { if (left.cmp(right) > 0) return left; return right; }; BN.min = function min(left, right) { if (left.cmp(right) < 0) return left; return right; }; BN.prototype._init = function init(number, base, endian) { if (typeof number === 'number') { return this._initNumber(number, base, endian); } if (_typeof(number) === 'object') { return this._initArray(number, base, endian); } if (base === 'hex') { base = 16; } assert(base === (base | 0) && base >= 2 && base <= 36); number = number.toString().replace(/\s+/g, ''); var start = 0; if (number[0] === '-') { start++; } if (base === 16) { this._parseHex(number, start); } else { this._parseBase(number, base, start); } if (number[0] === '-') { this.negative = 1; } this.strip(); if (endian !== 'le') return; this._initArray(this.toArray(), base, endian); }; BN.prototype._initNumber = function _initNumber(number, base, endian) { if (number < 0) { this.negative = 1; number = -number; } if (number < 0x4000000) { this.words = [number & 0x3ffffff]; this.length = 1; } else if (number < 0x10000000000000) { this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff]; this.length = 2; } else { assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1]; this.length = 3; } if (endian !== 'le') return; // Reverse the bytes this._initArray(this.toArray(), base, endian); }; BN.prototype._initArray = function _initArray(number, base, endian) { // Perhaps a Uint8Array assert(typeof number.length === 'number'); if (number.length <= 0) { this.words = [0]; this.length = 1; return this; } this.length = Math.ceil(number.length / 3); this.words = new Array(this.length); for (var i = 0; i < this.length; i++) { this.words[i] = 0; } var j, w; var off = 0; if (endian === 'be') { for (i = number.length - 1, j = 0; i >= 0; i -= 3) { w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] = w >>> 26 - off & 0x3ffffff; off += 24; if (off >= 26) { off -= 26; j++; } } } else if (endian === 'le') { for (i = 0, j = 0; i < number.length; i += 3) { w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] = w >>> 26 - off & 0x3ffffff; off += 24; if (off >= 26) { off -= 26; j++; } } } return this.strip(); }; function parseHex(str, start, end) { var r = 0; var len = Math.min(str.length, end); for (var i = start; i < len; i++) { var c = str.charCodeAt(i) - 48; r <<= 4; // 'a' - 'f' if (c >= 49 && c <= 54) { r |= c - 49 + 0xa; // 'A' - 'F' } else if (c >= 17 && c <= 22) { r |= c - 17 + 0xa; // '0' - '9' } else { r |= c & 0xf; } } return r; } BN.prototype._parseHex = function _parseHex(number, start) { // Create possibly bigger array to ensure that it fits the number this.length = Math.ceil((number.length - start) / 6); this.words = new Array(this.length); for (var i = 0; i < this.length; i++) { this.words[i] = 0; } var j, w; // Scan 24-bit chunks and add them to the number var off = 0; for (i = number.length - 6, j = 0; i >= start; i -= 6) { w = parseHex(number, i, i + 6); this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb this.words[j + 1] |= w >>> 26 - off & 0x3fffff; off += 24; if (off >= 26) { off -= 26; j++; } } if (i + 6 !== start) { w = parseHex(number, start, i + 6); this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] |= w >>> 26 - off & 0x3fffff; } this.strip(); }; function parseBase(str, start, end, mul) { var r = 0; var len = Math.min(str.length, end); for (var i = start; i < len; i++) { var c = str.charCodeAt(i) - 48; r *= mul; // 'a' if (c >= 49) { r += c - 49 + 0xa; // 'A' } else if (c >= 17) { r += c - 17 + 0xa; // '0' - '9' } else { r += c; } } return r; } BN.prototype._parseBase = function _parseBase(number, base, start) { // Initialize as zero this.words = [0]; this.length = 1; // Find length of limb in base for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { limbLen++; } limbLen--; limbPow = limbPow / base | 0; var total = number.length - start; var mod = total % limbLen; var end = Math.min(total, total - mod) + start; var word = 0; for (var i = start; i < end; i += limbLen) { word = parseBase(number, i, i + limbLen, base); this.imuln(limbPow); if (this.words[0] + word < 0x4000000) { this.words[0] += word; } else { this._iaddn(word); } } if (mod !== 0) { var pow = 1; word = parseBase(number, i, number.length, base); for (i = 0; i < mod; i++) { pow *= base; } this.imuln(pow); if (this.words[0] + word < 0x4000000) { this.words[0] += word; } else { this._iaddn(word); } } }; BN.prototype.copy = function copy(dest) { dest.words = new Array(this.length); for (var i = 0; i < this.length; i++) { dest.words[i] = this.words[i]; } dest.length = this.length; dest.negative = this.negative; dest.red = this.red; }; BN.prototype.clone = function clone() { var r = new BN(null); this.copy(r); return r; }; BN.prototype._expand = function _expand(size) { while (this.length < size) { this.words[this.length++] = 0; } return this; }; // Remove leading `0` from `this` BN.prototype.strip = function strip() { while (this.length > 1 && this.words[this.length - 1] === 0) { this.length--; } return this._normSign(); }; BN.prototype._normSign = function _normSign() { // -0 = 0 if (this.length === 1 && this.words[0] === 0) { this.negative = 0; } return this; }; BN.prototype.inspect = function inspect() { return (this.red ? ''; }; /* var zeros = []; var groupSizes = []; var groupBases = []; var s = ''; var i = -1; while (++i < BN.wordSize) { zeros[i] = s; s += '0'; } groupSizes[0] = 0; groupSizes[1] = 0; groupBases[0] = 0; groupBases[1] = 0; var base = 2 - 1; while (++base < 36 + 1) { var groupSize = 0; var groupBase = 1; while (groupBase < (1 << BN.wordSize) / base) { groupBase *= base; groupSize += 1; } groupSizes[base] = groupSize; groupBases[base] = groupBase; } */ var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000']; var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]; var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176]; BN.prototype.toString = function toString(base, padding) { base = base || 10; padding = padding | 0 || 1; var out; if (base === 16 || base === 'hex') { out = ''; var off = 0; var carry = 0; for (var i = 0; i < this.length; i++) { var w = this.words[i]; var word = ((w << off | carry) & 0xffffff).toString(16); carry = w >>> 24 - off & 0xffffff; if (carry !== 0 || i !== this.length - 1) { out = zeros[6 - word.length] + word + out; } else { out = word + out; } off += 2; if (off >= 26) { off -= 26; i--; } } if (carry !== 0) { out = carry.toString(16) + out; } while (out.length % padding !== 0) { out = '0' + out; } if (this.negative !== 0) { out = '-' + out; } return out; } if (base === (base | 0) && base >= 2 && base <= 36) { // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize); var groupBase = groupBases[base]; out = ''; var c = this.clone(); c.negative = 0; while (!c.isZero()) { var r = c.modn(groupBase).toString(base); c = c.idivn(groupBase); if (!c.isZero()) { out = zeros[groupSize - r.length] + r + out; } else { out = r + out; } } if (this.isZero()) { out = '0' + out; } while (out.length % padding !== 0) { out = '0' + out; } if (this.negative !== 0) { out = '-' + out; } return out; } assert(false, 'Base should be between 2 and 36'); }; BN.prototype.toNumber = function toNumber() { var ret = this.words[0]; if (this.length === 2) { ret += this.words[1] * 0x4000000; } else if (this.length === 3 && this.words[2] === 0x01) { // NOTE: at this stage it is known that the top bit is set ret += 0x10000000000000 + this.words[1] * 0x4000000; } else if (this.length > 2) { assert(false, 'Number can only safely store up to 53 bits'); } return this.negative !== 0 ? -ret : ret; }; BN.prototype.toJSON = function toJSON() { return this.toString(16); }; BN.prototype.toBuffer = function toBuffer(endian, length) { assert(typeof Buffer !== 'undefined'); return this.toArrayLike(Buffer, endian, length); }; BN.prototype.toArray = function toArray(endian, length) { return this.toArrayLike(Array, endian, length); }; BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { var byteLength = this.byteLength(); var reqLength = length || Math.max(1, byteLength); assert(byteLength <= reqLength, 'byte array longer than desired length'); assert(reqLength > 0, 'Requested array length <= 0'); this.strip(); var littleEndian = endian === 'le'; var res = new ArrayType(reqLength); var b, i; var q = this.clone(); if (!littleEndian) { // Assume big-endian for (i = 0; i < reqLength - byteLength; i++) { res[i] = 0; } for (i = 0; !q.isZero(); i++) { b = q.andln(0xff); q.iushrn(8); res[reqLength - i - 1] = b; } } else { for (i = 0; !q.isZero(); i++) { b = q.andln(0xff); q.iushrn(8); res[i] = b; } for (; i < reqLength; i++) { res[i] = 0; } } return res; }; if (Math.clz32) { BN.prototype._countBits = function _countBits(w) { return 32 - Math.clz32(w); }; } else { BN.prototype._countBits = function _countBits(w) { var t = w; var r = 0; if (t >= 0x1000) { r += 13; t >>>= 13; } if (t >= 0x40) { r += 7; t >>>= 7; } if (t >= 0x8) { r += 4; t >>>= 4; } if (t >= 0x02) { r += 2; t >>>= 2; } return r + t; }; } BN.prototype._zeroBits = function _zeroBits(w) { // Short-cut if (w === 0) return 26; var t = w; var r = 0; if ((t & 0x1fff) === 0) { r += 13; t >>>= 13; } if ((t & 0x7f) === 0) { r += 7; t >>>= 7; } if ((t & 0xf) === 0) { r += 4; t >>>= 4; } if ((t & 0x3) === 0) { r += 2; t >>>= 2; } if ((t & 0x1) === 0) { r++; } return r; }; // Return number of used bits in a BN BN.prototype.bitLength = function bitLength() { var w = this.words[this.length - 1]; var hi = this._countBits(w); return (this.length - 1) * 26 + hi; }; function toBitArray(num) { var w = new Array(num.bitLength()); for (var bit = 0; bit < w.length; bit++) { var off = bit / 26 | 0; var wbit = bit % 26; w[bit] = (num.words[off] & 1 << wbit) >>> wbit; } return w; } // Number of trailing zero bits BN.prototype.zeroBits = function zeroBits() { if (this.isZero()) return 0; var r = 0; for (var i = 0; i < this.length; i++) { var b = this._zeroBits(this.words[i]); r += b; if (b !== 26) break; } return r; }; BN.prototype.byteLength = function byteLength() { return Math.ceil(this.bitLength() / 8); }; BN.prototype.toTwos = function toTwos(width) { if (this.negative !== 0) { return this.abs().inotn(width).iaddn(1); } return this.clone(); }; BN.prototype.fromTwos = function fromTwos(width) { if (this.testn(width - 1)) { return this.notn(width).iaddn(1).ineg(); } return this.clone(); }; BN.prototype.isNeg = function isNeg() { return this.negative !== 0; }; // Return negative clone of `this` BN.prototype.neg = function neg() { return this.clone().ineg(); }; BN.prototype.ineg = function ineg() { if (!this.isZero()) { this.negative ^= 1; } return this; }; // Or `num` with `this` in-place BN.prototype.iuor = function iuor(num) { while (this.length < num.length) { this.words[this.length++] = 0; } for (var i = 0; i < num.length; i++) { this.words[i] = this.words[i] | num.words[i]; } return this.strip(); }; BN.prototype.ior = function ior(num) { assert((this.negative | num.negative) === 0); return this.iuor(num); }; // Or `num` with `this` BN.prototype.or = function or(num) { if (this.length > num.length) return this.clone().ior(num); return num.clone().ior(this); }; BN.prototype.uor = function uor(num) { if (this.length > num.length) return this.clone().iuor(num); return num.clone().iuor(this); }; // And `num` with `this` in-place BN.prototype.iuand = function iuand(num) { // b = min-length(num, this) var b; if (this.length > num.length) { b = num; } else { b = this; } for (var i = 0; i < b.length; i++) { this.words[i] = this.words[i] & num.words[i]; } this.length = b.length; return this.strip(); }; BN.prototype.iand = function iand(num) { assert((this.negative | num.negative) === 0); return this.iuand(num); }; // And `num` with `this` BN.prototype.and = function and(num) { if (this.length > num.length) return this.clone().iand(num); return num.clone().iand(this); }; BN.prototype.uand = function uand(num) { if (this.length > num.length) return this.clone().iuand(num); return num.clone().iuand(this); }; // Xor `num` with `this` in-place BN.prototype.iuxor = function iuxor(num) { // a.length > b.length var a; var b; if (this.length > num.length) { a = this; b = num; } else { a = num; b = this; } for (var i = 0; i < b.length; i++) { this.words[i] = a.words[i] ^ b.words[i]; } if (this !== a) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } this.length = a.length; return this.strip(); }; BN.prototype.ixor = function ixor(num) { assert((this.negative | num.negative) === 0); return this.iuxor(num); }; // Xor `num` with `this` BN.prototype.xor = function xor(num) { if (this.length > num.length) return this.clone().ixor(num); return num.clone().ixor(this); }; BN.prototype.uxor = function uxor(num) { if (this.length > num.length) return this.clone().iuxor(num); return num.clone().iuxor(this); }; // Not ``this`` with ``width`` bitwidth BN.prototype.inotn = function inotn(width) { assert(typeof width === 'number' && width >= 0); var bytesNeeded = Math.ceil(width / 26) | 0; var bitsLeft = width % 26; // Extend the buffer with leading zeroes this._expand(bytesNeeded); if (bitsLeft > 0) { bytesNeeded--; } // Handle complete words for (var i = 0; i < bytesNeeded; i++) { this.words[i] = ~this.words[i] & 0x3ffffff; } // Handle the residue if (bitsLeft > 0) { this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft; } // And remove leading zeroes return this.strip(); }; BN.prototype.notn = function notn(width) { return this.clone().inotn(width); }; // Set `bit` of `this` BN.prototype.setn = function setn(bit, val) { assert(typeof bit === 'number' && bit >= 0); var off = bit / 26 | 0; var wbit = bit % 26; this._expand(off + 1); if (val) { this.words[off] = this.words[off] | 1 << wbit; } else { this.words[off] = this.words[off] & ~(1 << wbit); } return this.strip(); }; // Add `num` to `this` in-place BN.prototype.iadd = function iadd(num) { var r; // negative + positive if (this.negative !== 0 && num.negative === 0) { this.negative = 0; r = this.isub(num); this.negative ^= 1; return this._normSign(); // positive + negative } else if (this.negative === 0 && num.negative !== 0) { num.negative = 0; r = this.isub(num); num.negative = 1; return r._normSign(); } // a.length > b.length var a, b; if (this.length > num.length) { a = this; b = num; } else { a = num; b = this; } var carry = 0; for (var i = 0; i < b.length; i++) { r = (a.words[i] | 0) + (b.words[i] | 0) + carry; this.words[i] = r & 0x3ffffff; carry = r >>> 26; } for (; carry !== 0 && i < a.length; i++) { r = (a.words[i] | 0) + carry; this.words[i] = r & 0x3ffffff; carry = r >>> 26; } this.length = a.length; if (carry !== 0) { this.words[this.length] = carry; this.length++; // Copy the rest of the words } else if (a !== this) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } return this; }; // Add `num` to `this` BN.prototype.add = function add(num) { var res; if (num.negative !== 0 && this.negative === 0) { num.negative = 0; res = this.sub(num); num.negative ^= 1; return res; } else if (num.negative === 0 && this.negative !== 0) { this.negative = 0; res = num.sub(this); this.negative = 1; return res; } if (this.length > num.length) return this.clone().iadd(num); return num.clone().iadd(this); }; // Subtract `num` from `this` in-place BN.prototype.isub = function isub(num) { // this - (-num) = this + num if (num.negative !== 0) { num.negative = 0; var r = this.iadd(num); num.negative = 1; return r._normSign(); // -this - num = -(this + num) } else if (this.negative !== 0) { this.negative = 0; this.iadd(num); this.negative = 1; return this._normSign(); } // At this point both numbers are positive var cmp = this.cmp(num); // Optimization - zeroify if (cmp === 0) { this.negative = 0; this.length = 1; this.words[0] = 0; return this; } // a > b var a, b; if (cmp > 0) { a = this; b = num; } else { a = num; b = this; } var carry = 0; for (var i = 0; i < b.length; i++) { r = (a.words[i] | 0) - (b.words[i] | 0) + carry; carry = r >> 26; this.words[i] = r & 0x3ffffff; } for (; carry !== 0 && i < a.length; i++) { r = (a.words[i] | 0) + carry; carry = r >> 26; this.words[i] = r & 0x3ffffff; } // Copy rest of the words if (carry === 0 && i < a.length && a !== this) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } this.length = Math.max(this.length, i); if (a !== this) { this.negative = 1; } return this.strip(); }; // Subtract `num` from `this` BN.prototype.sub = function sub(num) { return this.clone().isub(num); }; function smallMulTo(self, num, out) { out.negative = num.negative ^ self.negative; var len = self.length + num.length | 0; out.length = len; len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity) var a = self.words[0] | 0; var b = num.words[0] | 0; var r = a * b; var lo = r & 0x3ffffff; var carry = r / 0x4000000 | 0; out.words[0] = lo; for (var k = 1; k < len; k++) { // Sum all words with the same `i + j = k` and accumulate `ncarry`, // note that ncarry could be >= 0x3ffffff var ncarry = carry >>> 26; var rword = carry & 0x3ffffff; var maxJ = Math.min(k, num.length - 1); for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { var i = k - j | 0; a = self.words[i] | 0; b = num.words[j] | 0; r = a * b + rword; ncarry += r / 0x4000000 | 0; rword = r & 0x3ffffff; } out.words[k] = rword | 0; carry = ncarry | 0; } if (carry !== 0) { out.words[k] = carry | 0; } else { out.length--; } return out.strip(); } // TODO(indutny): it may be reasonable to omit it for users who don't need // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit // multiplication (like elliptic secp256k1). var comb10MulTo = function comb10MulTo(self, num, out) { var a = self.words; var b = num.words; var o = out.words; var c = 0; var lo; var mid; var hi; var a0 = a[0] | 0; var al0 = a0 & 0x1fff; var ah0 = a0 >>> 13; var a1 = a[1] | 0; var al1 = a1 & 0x1fff; var ah1 = a1 >>> 13; var a2 = a[2] | 0; var al2 = a2 & 0x1fff; var ah2 = a2 >>> 13; var a3 = a[3] | 0; var al3 = a3 & 0x1fff; var ah3 = a3 >>> 13; var a4 = a[4] | 0; var al4 = a4 & 0x1fff; var ah4 = a4 >>> 13; var a5 = a[5] | 0; var al5 = a5 & 0x1fff; var ah5 = a5 >>> 13; var a6 = a[6] | 0; var al6 = a6 & 0x1fff; var ah6 = a6 >>> 13; var a7 = a[7] | 0; var al7 = a7 & 0x1fff; var ah7 = a7 >>> 13; var a8 = a[8] | 0; var al8 = a8 & 0x1fff; var ah8 = a8 >>> 13; var a9 = a[9] | 0; var al9 = a9 & 0x1fff; var ah9 = a9 >>> 13; var b0 = b[0] | 0; var bl0 = b0 & 0x1fff; var bh0 = b0 >>> 13; var b1 = b[1] | 0; var bl1 = b1 & 0x1fff; var bh1 = b1 >>> 13; var b2 = b[2] | 0; var bl2 = b2 & 0x1fff; var bh2 = b2 >>> 13; var b3 = b[3] | 0; var bl3 = b3 & 0x1fff; var bh3 = b3 >>> 13; var b4 = b[4] | 0; var bl4 = b4 & 0x1fff; var bh4 = b4 >>> 13; var b5 = b[5] | 0; var bl5 = b5 & 0x1fff; var bh5 = b5 >>> 13; var b6 = b[6] | 0; var bl6 = b6 & 0x1fff; var bh6 = b6 >>> 13; var b7 = b[7] | 0; var bl7 = b7 & 0x1fff; var bh7 = b7 >>> 13; var b8 = b[8] | 0; var bl8 = b8 & 0x1fff; var bh8 = b8 >>> 13; var b9 = b[9] | 0; var bl9 = b9 & 0x1fff; var bh9 = b9 >>> 13; out.negative = self.negative ^ num.negative; out.length = 19; /* k = 0 */ lo = Math.imul(al0, bl0); mid = Math.imul(al0, bh0); mid = mid + Math.imul(ah0, bl0) | 0; hi = Math.imul(ah0, bh0); var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; w0 &= 0x3ffffff; /* k = 1 */ lo = Math.imul(al1, bl0); mid = Math.imul(al1, bh0); mid = mid + Math.imul(ah1, bl0) | 0; hi = Math.imul(ah1, bh0); lo = lo + Math.imul(al0, bl1) | 0; mid = mid + Math.imul(al0, bh1) | 0; mid = mid + Math.imul(ah0, bl1) | 0; hi = hi + Math.imul(ah0, bh1) | 0; var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; w1 &= 0x3ffffff; /* k = 2 */ lo = Math.imul(al2, bl0); mid = Math.imul(al2, bh0); mid = mid + Math.imul(ah2, bl0) | 0; hi = Math.imul(ah2, bh0); lo = lo + Math.imul(al1, bl1) | 0; mid = mid + Math.imul(al1, bh1) | 0; mid = mid + Math.imul(ah1, bl1) | 0; hi = hi + Math.imul(ah1, bh1) | 0; lo = lo + Math.imul(al0, bl2) | 0; mid = mid + Math.imul(al0, bh2) | 0; mid = mid + Math.imul(ah0, bl2) | 0; hi = hi + Math.imul(ah0, bh2) | 0; var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; w2 &= 0x3ffffff; /* k = 3 */ lo = Math.imul(al3, bl0); mid = Math.imul(al3, bh0); mid = mid + Math.imul(ah3, bl0) | 0; hi = Math.imul(ah3, bh0); lo = lo + Math.imul(al2, bl1) | 0; mid = mid + Math.imul(al2, bh1) | 0; mid = mid + Math.imul(ah2, bl1) | 0; hi = hi + Math.imul(ah2, bh1) | 0; lo = lo + Math.imul(al1, bl2) | 0; mid = mid + Math.imul(al1, bh2) | 0; mid = mid + Math.imul(ah1, bl2) | 0; hi = hi + Math.imul(ah1, bh2) | 0; lo = lo + Math.imul(al0, bl3) | 0; mid = mid + Math.imul(al0, bh3) | 0; mid = mid + Math.imul(ah0, bl3) | 0; hi = hi + Math.imul(ah0, bh3) | 0; var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; w3 &= 0x3ffffff; /* k = 4 */ lo = Math.imul(al4, bl0); mid = Math.imul(al4, bh0); mid = mid + Math.imul(ah4, bl0) | 0; hi = Math.imul(ah4, bh0); lo = lo + Math.imul(al3, bl1) | 0; mid = mid + Math.imul(al3, bh1) | 0; mid = mid + Math.imul(ah3, bl1) | 0; hi = hi + Math.imul(ah3, bh1) | 0; lo = lo + Math.imul(al2, bl2) | 0; mid = mid + Math.imul(al2, bh2) | 0; mid = mid + Math.imul(ah2, bl2) | 0; hi = hi + Math.imul(ah2, bh2) | 0; lo = lo + Math.imul(al1, bl3) | 0; mid = mid + Math.imul(al1, bh3) | 0; mid = mid + Math.imul(ah1, bl3) | 0; hi = hi + Math.imul(ah1, bh3) | 0; lo = lo + Math.imul(al0, bl4) | 0; mid = mid + Math.imul(al0, bh4) | 0; mid = mid + Math.imul(ah0, bl4) | 0; hi = hi + Math.imul(ah0, bh4) | 0; var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; w4 &= 0x3ffffff; /* k = 5 */ lo = Math.imul(al5, bl0); mid = Math.imul(al5, bh0); mid = mid + Math.imul(ah5, bl0) | 0; hi = Math.imul(ah5, bh0); lo = lo + Math.imul(al4, bl1) | 0; mid = mid + Math.imul(al4, bh1) | 0; mid = mid + Math.imul(ah4, bl1) | 0; hi = hi + Math.imul(ah4, bh1) | 0; lo = lo + Math.imul(al3, bl2) | 0; mid = mid + Math.imul(al3, bh2) | 0; mid = mid + Math.imul(ah3, bl2) | 0; hi = hi + Math.imul(ah3, bh2) | 0; lo = lo + Math.imul(al2, bl3) | 0; mid = mid + Math.imul(al2, bh3) | 0; mid = mid + Math.imul(ah2, bl3) | 0; hi = hi + Math.imul(ah2, bh3) | 0; lo = lo + Math.imul(al1, bl4) | 0; mid = mid + Math.imul(al1, bh4) | 0; mid = mid + Math.imul(ah1, bl4) | 0; hi = hi + Math.imul(ah1, bh4) | 0; lo = lo + Math.imul(al0, bl5) | 0; mid = mid + Math.imul(al0, bh5) | 0; mid = mid + Math.imul(ah0, bl5) | 0; hi = hi + Math.imul(ah0, bh5) | 0; var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; w5 &= 0x3ffffff; /* k = 6 */ lo = Math.imul(al6, bl0); mid = Math.imul(al6, bh0); mid = mid + Math.imul(ah6, bl0) | 0; hi = Math.imul(ah6, bh0); lo = lo + Math.imul(al5, bl1) | 0; mid = mid + Math.imul(al5, bh1) | 0; mid = mid + Math.imul(ah5, bl1) | 0; hi = hi + Math.imul(ah5, bh1) | 0; lo = lo + Math.imul(al4, bl2) | 0; mid = mid + Math.imul(al4, bh2) | 0; mid = mid + Math.imul(ah4, bl2) | 0; hi = hi + Math.imul(ah4, bh2) | 0; lo = lo + Math.imul(al3, bl3) | 0; mid = mid + Math.imul(al3, bh3) | 0; mid = mid + Math.imul(ah3, bl3) | 0; hi = hi + Math.imul(ah3, bh3) | 0; lo = lo + Math.imul(al2, bl4) | 0; mid = mid + Math.imul(al2, bh4) | 0; mid = mid + Math.imul(ah2, bl4) | 0; hi = hi + Math.imul(ah2, bh4) | 0; lo = lo + Math.imul(al1, bl5) | 0; mid = mid + Math.imul(al1, bh5) | 0; mid = mid + Math.imul(ah1, bl5) | 0; hi = hi + Math.imul(ah1, bh5) | 0; lo = lo + Math.imul(al0, bl6) | 0; mid = mid + Math.imul(al0, bh6) | 0; mid = mid + Math.imul(ah0, bl6) | 0; hi = hi + Math.imul(ah0, bh6) | 0; var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; w6 &= 0x3ffffff; /* k = 7 */ lo = Math.imul(al7, bl0); mid = Math.imul(al7, bh0); mid = mid + Math.imul(ah7, bl0) | 0; hi = Math.imul(ah7, bh0); lo = lo + Math.imul(al6, bl1) | 0; mid = mid + Math.imul(al6, bh1) | 0; mid = mid + Math.imul(ah6, bl1) | 0; hi = hi + Math.imul(ah6, bh1) | 0; lo = lo + Math.imul(al5, bl2) | 0; mid = mid + Math.imul(al5, bh2) | 0; mid = mid + Math.imul(ah5, bl2) | 0; hi = hi + Math.imul(ah5, bh2) | 0; lo = lo + Math.imul(al4, bl3) | 0; mid = mid + Math.imul(al4, bh3) | 0; mid = mid + Math.imul(ah4, bl3) | 0; hi = hi + Math.imul(ah4, bh3) | 0; lo = lo + Math.imul(al3, bl4) | 0; mid = mid + Math.imul(al3, bh4) | 0; mid = mid + Math.imul(ah3, bl4) | 0; hi = hi + Math.imul(ah3, bh4) | 0; lo = lo + Math.imul(al2, bl5) | 0; mid = mid + Math.imul(al2, bh5) | 0; mid = mid + Math.imul(ah2, bl5) | 0; hi = hi + Math.imul(ah2, bh5) | 0; lo = lo + Math.imul(al1, bl6) | 0; mid = mid + Math.imul(al1, bh6) | 0; mid = mid + Math.imul(ah1, bl6) | 0; hi = hi + Math.imul(ah1, bh6) | 0; lo = lo + Math.imul(al0, bl7) | 0; mid = mid + Math.imul(al0, bh7) | 0; mid = mid + Math.imul(ah0, bl7) | 0; hi = hi + Math.imul(ah0, bh7) | 0; var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; w7 &= 0x3ffffff; /* k = 8 */ lo = Math.imul(al8, bl0); mid = Math.imul(al8, bh0); mid = mid + Math.imul(ah8, bl0) | 0; hi = Math.imul(ah8, bh0); lo = lo + Math.imul(al7, bl1) | 0; mid = mid + Math.imul(al7, bh1) | 0; mid = mid + Math.imul(ah7, bl1) | 0; hi = hi + Math.imul(ah7, bh1) | 0; lo = lo + Math.imul(al6, bl2) | 0; mid = mid + Math.imul(al6, bh2) | 0; mid = mid + Math.imul(ah6, bl2) | 0; hi = hi + Math.imul(ah6, bh2) | 0; lo = lo + Math.imul(al5, bl3) | 0; mid = mid + Math.imul(al5, bh3) | 0; mid = mid + Math.imul(ah5, bl3) | 0; hi = hi + Math.imul(ah5, bh3) | 0; lo = lo + Math.imul(al4, bl4) | 0; mid = mid + Math.imul(al4, bh4) | 0; mid = mid + Math.imul(ah4, bl4) | 0; hi = hi + Math.imul(ah4, bh4) | 0; lo = lo + Math.imul(al3, bl5) | 0; mid = mid + Math.imul(al3, bh5) | 0; mid = mid + Math.imul(ah3, bl5) | 0; hi = hi + Math.imul(ah3, bh5) | 0; lo = lo + Math.imul(al2, bl6) | 0; mid = mid + Math.imul(al2, bh6) | 0; mid = mid + Math.imul(ah2, bl6) | 0; hi = hi + Math.imul(ah2, bh6) | 0; lo = lo + Math.imul(al1, bl7) | 0; mid = mid + Math.imul(al1, bh7) | 0; mid = mid + Math.imul(ah1, bl7) | 0; hi = hi + Math.imul(ah1, bh7) | 0; lo = lo + Math.imul(al0, bl8) | 0; mid = mid + Math.imul(al0, bh8) | 0; mid = mid + Math.imul(ah0, bl8) | 0; hi = hi + Math.imul(ah0, bh8) | 0; var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; w8 &= 0x3ffffff; /* k = 9 */ lo = Math.imul(al9, bl0); mid = Math.imul(al9, bh0); mid = mid + Math.imul(ah9, bl0) | 0; hi = Math.imul(ah9, bh0); lo = lo + Math.imul(al8, bl1) | 0; mid = mid + Math.imul(al8, bh1) | 0; mid = mid + Math.imul(ah8, bl1) | 0; hi = hi + Math.imul(ah8, bh1) | 0; lo = lo + Math.imul(al7, bl2) | 0; mid = mid + Math.imul(al7, bh2) | 0; mid = mid + Math.imul(ah7, bl2) | 0; hi = hi + Math.imul(ah7, bh2) | 0; lo = lo + Math.imul(al6, bl3) | 0; mid = mid + Math.imul(al6, bh3) | 0; mid = mid + Math.imul(ah6, bl3) | 0; hi = hi + Math.imul(ah6, bh3) | 0; lo = lo + Math.imul(al5, bl4) | 0; mid = mid + Math.imul(al5, bh4) | 0; mid = mid + Math.imul(ah5, bl4) | 0; hi = hi + Math.imul(ah5, bh4) | 0; lo = lo + Math.imul(al4, bl5) | 0; mid = mid + Math.imul(al4, bh5) | 0; mid = mid + Math.imul(ah4, bl5) | 0; hi = hi + Math.imul(ah4, bh5) | 0; lo = lo + Math.imul(al3, bl6) | 0; mid = mid + Math.imul(al3, bh6) | 0; mid = mid + Math.imul(ah3, bl6) | 0; hi = hi + Math.imul(ah3, bh6) | 0; lo = lo + Math.imul(al2, bl7) | 0; mid = mid + Math.imul(al2, bh7) | 0; mid = mid + Math.imul(ah2, bl7) | 0; hi = hi + Math.imul(ah2, bh7) | 0; lo = lo + Math.imul(al1, bl8) | 0; mid = mid + Math.imul(al1, bh8) | 0; mid = mid + Math.imul(ah1, bl8) | 0; hi = hi + Math.imul(ah1, bh8) | 0; lo = lo + Math.imul(al0, bl9) | 0; mid = mid + Math.imul(al0, bh9) | 0; mid = mid + Math.imul(ah0, bl9) | 0; hi = hi + Math.imul(ah0, bh9) | 0; var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; w9 &= 0x3ffffff; /* k = 10 */ lo = Math.imul(al9, bl1); mid = Math.imul(al9, bh1); mid = mid + Math.imul(ah9, bl1) | 0; hi = Math.imul(ah9, bh1); lo = lo + Math.imul(al8, bl2) | 0; mid = mid + Math.imul(al8, bh2) | 0; mid = mid + Math.imul(ah8, bl2) | 0; hi = hi + Math.imul(ah8, bh2) | 0; lo = lo + Math.imul(al7, bl3) | 0; mid = mid + Math.imul(al7, bh3) | 0; mid = mid + Math.imul(ah7, bl3) | 0; hi = hi + Math.imul(ah7, bh3) | 0; lo = lo + Math.imul(al6, bl4) | 0; mid = mid + Math.imul(al6, bh4) | 0; mid = mid + Math.imul(ah6, bl4) | 0; hi = hi + Math.imul(ah6, bh4) | 0; lo = lo + Math.imul(al5, bl5) | 0; mid = mid + Math.imul(al5, bh5) | 0; mid = mid + Math.imul(ah5, bl5) | 0; hi = hi + Math.imul(ah5, bh5) | 0; lo = lo + Math.imul(al4, bl6) | 0; mid = mid + Math.imul(al4, bh6) | 0; mid = mid + Math.imul(ah4, bl6) | 0; hi = hi + Math.imul(ah4, bh6) | 0; lo = lo + Math.imul(al3, bl7) | 0; mid = mid + Math.imul(al3, bh7) | 0; mid = mid + Math.imul(ah3, bl7) | 0; hi = hi + Math.imul(ah3, bh7) | 0; lo = lo + Math.imul(al2, bl8) | 0; mid = mid + Math.imul(al2, bh8) | 0; mid = mid + Math.imul(ah2, bl8) | 0; hi = hi + Math.imul(ah2, bh8) | 0; lo = lo + Math.imul(al1, bl9) | 0; mid = mid + Math.imul(al1, bh9) | 0; mid = mid + Math.imul(ah1, bl9) | 0; hi = hi + Math.imul(ah1, bh9) | 0; var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; w10 &= 0x3ffffff; /* k = 11 */ lo = Math.imul(al9, bl2); mid = Math.imul(al9, bh2); mid = mid + Math.imul(ah9, bl2) | 0; hi = Math.imul(ah9, bh2); lo = lo + Math.imul(al8, bl3) | 0; mid = mid + Math.imul(al8, bh3) | 0; mid = mid + Math.imul(ah8, bl3) | 0; hi = hi + Math.imul(ah8, bh3) | 0; lo = lo + Math.imul(al7, bl4) | 0; mid = mid + Math.imul(al7, bh4) | 0; mid = mid + Math.imul(ah7, bl4) | 0; hi = hi + Math.imul(ah7, bh4) | 0; lo = lo + Math.imul(al6, bl5) | 0; mid = mid + Math.imul(al6, bh5) | 0; mid = mid + Math.imul(ah6, bl5) | 0; hi = hi + Math.imul(ah6, bh5) | 0; lo = lo + Math.imul(al5, bl6) | 0; mid = mid + Math.imul(al5, bh6) | 0; mid = mid + Math.imul(ah5, bl6) | 0; hi = hi + Math.imul(ah5, bh6) | 0; lo = lo + Math.imul(al4, bl7) | 0; mid = mid + Math.imul(al4, bh7) | 0; mid = mid + Math.imul(ah4, bl7) | 0; hi = hi + Math.imul(ah4, bh7) | 0; lo = lo + Math.imul(al3, bl8) | 0; mid = mid + Math.imul(al3, bh8) | 0; mid = mid + Math.imul(ah3, bl8) | 0; hi = hi + Math.imul(ah3, bh8) | 0; lo = lo + Math.imul(al2, bl9) | 0; mid = mid + Math.imul(al2, bh9) | 0; mid = mid + Math.imul(ah2, bl9) | 0; hi = hi + Math.imul(ah2, bh9) | 0; var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; w11 &= 0x3ffffff; /* k = 12 */ lo = Math.imul(al9, bl3); mid = Math.imul(al9, bh3); mid = mid + Math.imul(ah9, bl3) | 0; hi = Math.imul(ah9, bh3); lo = lo + Math.imul(al8, bl4) | 0; mid = mid + Math.imul(al8, bh4) | 0; mid = mid + Math.imul(ah8, bl4) | 0; hi = hi + Math.imul(ah8, bh4) | 0; lo = lo + Math.imul(al7, bl5) | 0; mid = mid + Math.imul(al7, bh5) | 0; mid = mid + Math.imul(ah7, bl5) | 0; hi = hi + Math.imul(ah7, bh5) | 0; lo = lo + Math.imul(al6, bl6) | 0; mid = mid + Math.imul(al6, bh6) | 0; mid = mid + Math.imul(ah6, bl6) | 0; hi = hi + Math.imul(ah6, bh6) | 0; lo = lo + Math.imul(al5, bl7) | 0; mid = mid + Math.imul(al5, bh7) | 0; mid = mid + Math.imul(ah5, bl7) | 0; hi = hi + Math.imul(ah5, bh7) | 0; lo = lo + Math.imul(al4, bl8) | 0; mid = mid + Math.imul(al4, bh8) | 0; mid = mid + Math.imul(ah4, bl8) | 0; hi = hi + Math.imul(ah4, bh8) | 0; lo = lo + Math.imul(al3, bl9) | 0; mid = mid + Math.imul(al3, bh9) | 0; mid = mid + Math.imul(ah3, bl9) | 0; hi = hi + Math.imul(ah3, bh9) | 0; var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; w12 &= 0x3ffffff; /* k = 13 */ lo = Math.imul(al9, bl4); mid = Math.imul(al9, bh4); mid = mid + Math.imul(ah9, bl4) | 0; hi = Math.imul(ah9, bh4); lo = lo + Math.imul(al8, bl5) | 0; mid = mid + Math.imul(al8, bh5) | 0; mid = mid + Math.imul(ah8, bl5) | 0; hi = hi + Math.imul(ah8, bh5) | 0; lo = lo + Math.imul(al7, bl6) | 0; mid = mid + Math.imul(al7, bh6) | 0; mid = mid + Math.imul(ah7, bl6) | 0; hi = hi + Math.imul(ah7, bh6) | 0; lo = lo + Math.imul(al6, bl7) | 0; mid = mid + Math.imul(al6, bh7) | 0; mid = mid + Math.imul(ah6, bl7) | 0; hi = hi + Math.imul(ah6, bh7) | 0; lo = lo + Math.imul(al5, bl8) | 0; mid = mid + Math.imul(al5, bh8) | 0; mid = mid + Math.imul(ah5, bl8) | 0; hi = hi + Math.imul(ah5, bh8) | 0; lo = lo + Math.imul(al4, bl9) | 0; mid = mid + Math.imul(al4, bh9) | 0; mid = mid + Math.imul(ah4, bl9) | 0; hi = hi + Math.imul(ah4, bh9) | 0; var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; w13 &= 0x3ffffff; /* k = 14 */ lo = Math.imul(al9, bl5); mid = Math.imul(al9, bh5); mid = mid + Math.imul(ah9, bl5) | 0; hi = Math.imul(ah9, bh5); lo = lo + Math.imul(al8, bl6) | 0; mid = mid + Math.imul(al8, bh6) | 0; mid = mid + Math.imul(ah8, bl6) | 0; hi = hi + Math.imul(ah8, bh6) | 0; lo = lo + Math.imul(al7, bl7) | 0; mid = mid + Math.imul(al7, bh7) | 0; mid = mid + Math.imul(ah7, bl7) | 0; hi = hi + Math.imul(ah7, bh7) | 0; lo = lo + Math.imul(al6, bl8) | 0; mid = mid + Math.imul(al6, bh8) | 0; mid = mid + Math.imul(ah6, bl8) | 0; hi = hi + Math.imul(ah6, bh8) | 0; lo = lo + Math.imul(al5, bl9) | 0; mid = mid + Math.imul(al5, bh9) | 0; mid = mid + Math.imul(ah5, bl9) | 0; hi = hi + Math.imul(ah5, bh9) | 0; var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; w14 &= 0x3ffffff; /* k = 15 */ lo = Math.imul(al9, bl6); mid = Math.imul(al9, bh6); mid = mid + Math.imul(ah9, bl6) | 0; hi = Math.imul(ah9, bh6); lo = lo + Math.imul(al8, bl7) | 0; mid = mid + Math.imul(al8, bh7) | 0; mid = mid + Math.imul(ah8, bl7) | 0; hi = hi + Math.imul(ah8, bh7) | 0; lo = lo + Math.imul(al7, bl8) | 0; mid = mid + Math.imul(al7, bh8) | 0; mid = mid + Math.imul(ah7, bl8) | 0; hi = hi + Math.imul(ah7, bh8) | 0; lo = lo + Math.imul(al6, bl9) | 0; mid = mid + Math.imul(al6, bh9) | 0; mid = mid + Math.imul(ah6, bl9) | 0; hi = hi + Math.imul(ah6, bh9) | 0; var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; w15 &= 0x3ffffff; /* k = 16 */ lo = Math.imul(al9, bl7); mid = Math.imul(al9, bh7); mid = mid + Math.imul(ah9, bl7) | 0; hi = Math.imul(ah9, bh7); lo = lo + Math.imul(al8, bl8) | 0; mid = mid + Math.imul(al8, bh8) | 0; mid = mid + Math.imul(ah8, bl8) | 0; hi = hi + Math.imul(ah8, bh8) | 0; lo = lo + Math.imul(al7, bl9) | 0; mid = mid + Math.imul(al7, bh9) | 0; mid = mid + Math.imul(ah7, bl9) | 0; hi = hi + Math.imul(ah7, bh9) | 0; var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; w16 &= 0x3ffffff; /* k = 17 */ lo = Math.imul(al9, bl8); mid = Math.imul(al9, bh8); mid = mid + Math.imul(ah9, bl8) | 0; hi = Math.imul(ah9, bh8); lo = lo + Math.imul(al8, bl9) | 0; mid = mid + Math.imul(al8, bh9) | 0; mid = mid + Math.imul(ah8, bl9) | 0; hi = hi + Math.imul(ah8, bh9) | 0; var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; w17 &= 0x3ffffff; /* k = 18 */ lo = Math.imul(al9, bl9); mid = Math.imul(al9, bh9); mid = mid + Math.imul(ah9, bl9) | 0; hi = Math.imul(ah9, bh9); var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; w18 &= 0x3ffffff; o[0] = w0; o[1] = w1; o[2] = w2; o[3] = w3; o[4] = w4; o[5] = w5; o[6] = w6; o[7] = w7; o[8] = w8; o[9] = w9; o[10] = w10; o[11] = w11; o[12] = w12; o[13] = w13; o[14] = w14; o[15] = w15; o[16] = w16; o[17] = w17; o[18] = w18; if (c !== 0) { o[19] = c; out.length++; } return out; }; // Polyfill comb if (!Math.imul) { comb10MulTo = smallMulTo; } function bigMulTo(self, num, out) { out.negative = num.negative ^ self.negative; out.length = self.length + num.length; var carry = 0; var hncarry = 0; for (var k = 0; k < out.length - 1; k++) { // Sum all words with the same `i + j = k` and accumulate `ncarry`, // note that ncarry could be >= 0x3ffffff var ncarry = hncarry; hncarry = 0; var rword = carry & 0x3ffffff; var maxJ = Math.min(k, num.length - 1); for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { var i = k - j; var a = self.words[i] | 0; var b = num.words[j] | 0; var r = a * b; var lo = r & 0x3ffffff; ncarry = ncarry + (r / 0x4000000 | 0) | 0; lo = lo + rword | 0; rword = lo & 0x3ffffff; ncarry = ncarry + (lo >>> 26) | 0; hncarry += ncarry >>> 26; ncarry &= 0x3ffffff; } out.words[k] = rword; carry = ncarry; ncarry = hncarry; } if (carry !== 0) { out.words[k] = carry; } else { out.length--; } return out.strip(); } function jumboMulTo(self, num, out) { var fftm = new FFTM(); return fftm.mulp(self, num, out); } BN.prototype.mulTo = function mulTo(num, out) { var res; var len = this.length + num.length; if (this.length === 10 && num.length === 10) { res = comb10MulTo(this, num, out); } else if (len < 63) { res = smallMulTo(this, num, out); } else if (len < 1024) { res = bigMulTo(this, num, out); } else { res = jumboMulTo(this, num, out); } return res; }; // Cooley-Tukey algorithm for FFT // slightly revisited to rely on looping instead of recursion function FFTM(x, y) { this.x = x; this.y = y; } FFTM.prototype.makeRBT = function makeRBT(N) { var t = new Array(N); var l = BN.prototype._countBits(N) - 1; for (var i = 0; i < N; i++) { t[i] = this.revBin(i, l, N); } return t; }; // Returns binary-reversed representation of `x` FFTM.prototype.revBin = function revBin(x, l, N) { if (x === 0 || x === N - 1) return x; var rb = 0; for (var i = 0; i < l; i++) { rb |= (x & 1) << l - i - 1; x >>= 1; } return rb; }; // Performs "tweedling" phase, therefore 'emulating' // behaviour of the recursive algorithm FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { for (var i = 0; i < N; i++) { rtws[i] = rws[rbt[i]]; itws[i] = iws[rbt[i]]; } }; FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { this.permute(rbt, rws, iws, rtws, itws, N); for (var s = 1; s < N; s <<= 1) { var l = s << 1; var rtwdf = Math.cos(2 * Math.PI / l); var itwdf = Math.sin(2 * Math.PI / l); for (var p = 0; p < N; p += l) { var rtwdf_ = rtwdf; var itwdf_ = itwdf; for (var j = 0; j < s; j++) { var re = rtws[p + j]; var ie = itws[p + j]; var ro = rtws[p + j + s]; var io = itws[p + j + s]; var rx = rtwdf_ * ro - itwdf_ * io; io = rtwdf_ * io + itwdf_ * ro; ro = rx; rtws[p + j] = re + ro; itws[p + j] = ie + io; rtws[p + j + s] = re - ro; itws[p + j + s] = ie - io; /* jshint maxdepth : false */ if (j !== l) { rx = rtwdf * rtwdf_ - itwdf * itwdf_; itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; rtwdf_ = rx; } } } } }; FFTM.prototype.guessLen13b = function guessLen13b(n, m) { var N = Math.max(m, n) | 1; var odd = N & 1; var i = 0; for (N = N / 2 | 0; N; N = N >>> 1) { i++; } return 1 << i + 1 + odd; }; FFTM.prototype.conjugate = function conjugate(rws, iws, N) { if (N <= 1) return; for (var i = 0; i < N / 2; i++) { var t = rws[i]; rws[i] = rws[N - i - 1]; rws[N - i - 1] = t; t = iws[i]; iws[i] = -iws[N - i - 1]; iws[N - i - 1] = -t; } }; FFTM.prototype.normalize13b = function normalize13b(ws, N) { var carry = 0; for (var i = 0; i < N / 2; i++) { var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry; ws[i] = w & 0x3ffffff; if (w < 0x4000000) { carry = 0; } else { carry = w / 0x4000000 | 0; } } return ws; }; FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { var carry = 0; for (var i = 0; i < len; i++) { carry = carry + (ws[i] | 0); rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; } // Pad with zeroes for (i = 2 * len; i < N; ++i) { rws[i] = 0; } assert(carry === 0); assert((carry & ~0x1fff) === 0); }; FFTM.prototype.stub = function stub(N) { var ph = new Array(N); for (var i = 0; i < N; i++) { ph[i] = 0; } return ph; }; FFTM.prototype.mulp = function mulp(x, y, out) { var N = 2 * this.guessLen13b(x.length, y.length); var rbt = this.makeRBT(N); var _ = this.stub(N); var rws = new Array(N); var rwst = new Array(N); var iwst = new Array(N); var nrws = new Array(N); var nrwst = new Array(N); var niwst = new Array(N); var rmws = out.words; rmws.length = N; this.convert13b(x.words, x.length, rws, N); this.convert13b(y.words, y.length, nrws, N); this.transform(rws, _, rwst, iwst, N, rbt); this.transform(nrws, _, nrwst, niwst, N, rbt); for (var i = 0; i < N; i++) { var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; rwst[i] = rx; } this.conjugate(rwst, iwst, N); this.transform(rwst, iwst, rmws, _, N, rbt); this.conjugate(rmws, _, N); this.normalize13b(rmws, N); out.negative = x.negative ^ y.negative; out.length = x.length + y.length; return out.strip(); }; // Multiply `this` by `num` BN.prototype.mul = function mul(num) { var out = new BN(null); out.words = new Array(this.length + num.length); return this.mulTo(num, out); }; // Multiply employing FFT BN.prototype.mulf = function mulf(num) { var out = new BN(null); out.words = new Array(this.length + num.length); return jumboMulTo(this, num, out); }; // In-place Multiplication BN.prototype.imul = function imul(num) { return this.clone().mulTo(num, this); }; BN.prototype.imuln = function imuln(num) { assert(typeof num === 'number'); assert(num < 0x4000000); // Carry var carry = 0; for (var i = 0; i < this.length; i++) { var w = (this.words[i] | 0) * num; var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); carry >>= 26; carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum carry += lo >>> 26; this.words[i] = lo & 0x3ffffff; } if (carry !== 0) { this.words[i] = carry; this.length++; } return this; }; BN.prototype.muln = function muln(num) { return this.clone().imuln(num); }; // `this` * `this` BN.prototype.sqr = function sqr() { return this.mul(this); }; // `this` * `this` in-place BN.prototype.isqr = function isqr() { return this.imul(this.clone()); }; // Math.pow(`this`, `num`) BN.prototype.pow = function pow(num) { var w = toBitArray(num); if (w.length === 0) return new BN(1); // Skip leading zeroes var res = this; for (var i = 0; i < w.length; i++, res = res.sqr()) { if (w[i] !== 0) break; } if (++i < w.length) { for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { if (w[i] === 0) continue; res = res.mul(q); } } return res; }; // Shift-left in-place BN.prototype.iushln = function iushln(bits) { assert(typeof bits === 'number' && bits >= 0); var r = bits % 26; var s = (bits - r) / 26; var carryMask = 0x3ffffff >>> 26 - r << 26 - r; var i; if (r !== 0) { var carry = 0; for (i = 0; i < this.length; i++) { var newCarry = this.words[i] & carryMask; var c = (this.words[i] | 0) - newCarry << r; this.words[i] = c | carry; carry = newCarry >>> 26 - r; } if (carry) { this.words[i] = carry; this.length++; } } if (s !== 0) { for (i = this.length - 1; i >= 0; i--) { this.words[i + s] = this.words[i]; } for (i = 0; i < s; i++) { this.words[i] = 0; } this.length += s; } return this.strip(); }; BN.prototype.ishln = function ishln(bits) { // TODO(indutny): implement me assert(this.negative === 0); return this.iushln(bits); }; // Shift-right in-place // NOTE: `hint` is a lowest bit before trailing zeroes // NOTE: if `extended` is present - it will be filled with destroyed bits BN.prototype.iushrn = function iushrn(bits, hint, extended) { assert(typeof bits === 'number' && bits >= 0); var h; if (hint) { h = (hint - hint % 26) / 26; } else { h = 0; } var r = bits % 26; var s = Math.min((bits - r) / 26, this.length); var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; var maskedWords = extended; h -= s; h = Math.max(0, h); // Extended mode, copy masked part if (maskedWords) { for (var i = 0; i < s; i++) { maskedWords.words[i] = this.words[i]; } maskedWords.length = s; } if (s === 0) {// No-op, we should not move anything at all } else if (this.length > s) { this.length -= s; for (i = 0; i < this.length; i++) { this.words[i] = this.words[i + s]; } } else { this.words[0] = 0; this.length = 1; } var carry = 0; for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { var word = this.words[i] | 0; this.words[i] = carry << 26 - r | word >>> r; carry = word & mask; } // Push carried bits as a mask if (maskedWords && carry !== 0) { maskedWords.words[maskedWords.length++] = carry; } if (this.length === 0) { this.words[0] = 0; this.length = 1; } return this.strip(); }; BN.prototype.ishrn = function ishrn(bits, hint, extended) { // TODO(indutny): implement me assert(this.negative === 0); return this.iushrn(bits, hint, extended); }; // Shift-left BN.prototype.shln = function shln(bits) { return this.clone().ishln(bits); }; BN.prototype.ushln = function ushln(bits) { return this.clone().iushln(bits); }; // Shift-right BN.prototype.shrn = function shrn(bits) { return this.clone().ishrn(bits); }; BN.prototype.ushrn = function ushrn(bits) { return this.clone().iushrn(bits); }; // Test if n bit is set BN.prototype.testn = function testn(bit) { assert(typeof bit === 'number' && bit >= 0); var r = bit % 26; var s = (bit - r) / 26; var q = 1 << r; // Fast case: bit is much higher than all existing words if (this.length <= s) return false; // Check bit and return var w = this.words[s]; return !!(w & q); }; // Return only lowers bits of number (in-place) BN.prototype.imaskn = function imaskn(bits) { assert(typeof bits === 'number' && bits >= 0); var r = bits % 26; var s = (bits - r) / 26; assert(this.negative === 0, 'imaskn works only with positive numbers'); if (this.length <= s) { return this; } if (r !== 0) { s++; } this.length = Math.min(s, this.length); if (r !== 0) { var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; this.words[this.length - 1] &= mask; } return this.strip(); }; // Return only lowers bits of number BN.prototype.maskn = function maskn(bits) { return this.clone().imaskn(bits); }; // Add plain number `num` to `this` BN.prototype.iaddn = function iaddn(num) { assert(typeof num === 'number'); assert(num < 0x4000000); if (num < 0) return this.isubn(-num); // Possible sign change if (this.negative !== 0) { if (this.length === 1 && (this.words[0] | 0) < num) { this.words[0] = num - (this.words[0] | 0); this.negative = 0; return this; } this.negative = 0; this.isubn(num); this.negative = 1; return this; } // Add without checks return this._iaddn(num); }; BN.prototype._iaddn = function _iaddn(num) { this.words[0] += num; // Carry for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { this.words[i] -= 0x4000000; if (i === this.length - 1) { this.words[i + 1] = 1; } else { this.words[i + 1]++; } } this.length = Math.max(this.length, i + 1); return this; }; // Subtract plain number `num` from `this` BN.prototype.isubn = function isubn(num) { assert(typeof num === 'number'); assert(num < 0x4000000); if (num < 0) return this.iaddn(-num); if (this.negative !== 0) { this.negative = 0; this.iaddn(num); this.negative = 1; return this; } this.words[0] -= num; if (this.length === 1 && this.words[0] < 0) { this.words[0] = -this.words[0]; this.negative = 1; } else { // Carry for (var i = 0; i < this.length && this.words[i] < 0; i++) { this.words[i] += 0x4000000; this.words[i + 1] -= 1; } } return this.strip(); }; BN.prototype.addn = function addn(num) { return this.clone().iaddn(num); }; BN.prototype.subn = function subn(num) { return this.clone().isubn(num); }; BN.prototype.iabs = function iabs() { this.negative = 0; return this; }; BN.prototype.abs = function abs() { return this.clone().iabs(); }; BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { var len = num.length + shift; var i; this._expand(len); var w; var carry = 0; for (i = 0; i < num.length; i++) { w = (this.words[i + shift] | 0) + carry; var right = (num.words[i] | 0) * mul; w -= right & 0x3ffffff; carry = (w >> 26) - (right / 0x4000000 | 0); this.words[i + shift] = w & 0x3ffffff; } for (; i < this.length - shift; i++) { w = (this.words[i + shift] | 0) + carry; carry = w >> 26; this.words[i + shift] = w & 0x3ffffff; } if (carry === 0) return this.strip(); // Subtraction overflow assert(carry === -1); carry = 0; for (i = 0; i < this.length; i++) { w = -(this.words[i] | 0) + carry; carry = w >> 26; this.words[i] = w & 0x3ffffff; } this.negative = 1; return this.strip(); }; BN.prototype._wordDiv = function _wordDiv(num, mode) { var shift = this.length - num.length; var a = this.clone(); var b = num; // Normalize var bhi = b.words[b.length - 1] | 0; var bhiBits = this._countBits(bhi); shift = 26 - bhiBits; if (shift !== 0) { b = b.ushln(shift); a.iushln(shift); bhi = b.words[b.length - 1] | 0; } // Initialize quotient var m = a.length - b.length; var q; if (mode !== 'mod') { q = new BN(null); q.length = m + 1; q.words = new Array(q.length); for (var i = 0; i < q.length; i++) { q.words[i] = 0; } } var diff = a.clone()._ishlnsubmul(b, 1, m); if (diff.negative === 0) { a = diff; if (q) { q.words[m] = 1; } } for (var j = m - 1; j >= 0; j--) { var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max // (0x7ffffff) qj = Math.min(qj / bhi | 0, 0x3ffffff); a._ishlnsubmul(b, qj, j); while (a.negative !== 0) { qj--; a.negative = 0; a._ishlnsubmul(b, 1, j); if (!a.isZero()) { a.negative ^= 1; } } if (q) { q.words[j] = qj; } } if (q) { q.strip(); } a.strip(); // Denormalize if (mode !== 'div' && shift !== 0) { a.iushrn(shift); } return { div: q || null, mod: a }; }; // NOTE: 1) `mode` can be set to `mod` to request mod only, // to `div` to request div only, or be absent to // request both div & mod // 2) `positive` is true if unsigned mod is requested BN.prototype.divmod = function divmod(num, mode, positive) { assert(!num.isZero()); if (this.isZero()) { return { div: new BN(0), mod: new BN(0) }; } var div, mod, res; if (this.negative !== 0 && num.negative === 0) { res = this.neg().divmod(num, mode); if (mode !== 'mod') { div = res.div.neg(); } if (mode !== 'div') { mod = res.mod.neg(); if (positive && mod.negative !== 0) { mod.iadd(num); } } return { div: div, mod: mod }; } if (this.negative === 0 && num.negative !== 0) { res = this.divmod(num.neg(), mode); if (mode !== 'mod') { div = res.div.neg(); } return { div: div, mod: res.mod }; } if ((this.negative & num.negative) !== 0) { res = this.neg().divmod(num.neg(), mode); if (mode !== 'div') { mod = res.mod.neg(); if (positive && mod.negative !== 0) { mod.isub(num); } } return { div: res.div, mod: mod }; } // Both numbers are positive at this point // Strip both numbers to approximate shift value if (num.length > this.length || this.cmp(num) < 0) { return { div: new BN(0), mod: this }; } // Very short reduction if (num.length === 1) { if (mode === 'div') { return { div: this.divn(num.words[0]), mod: null }; } if (mode === 'mod') { return { div: null, mod: new BN(this.modn(num.words[0])) }; } return { div: this.divn(num.words[0]), mod: new BN(this.modn(num.words[0])) }; } return this._wordDiv(num, mode); }; // Find `this` / `num` BN.prototype.div = function div(num) { return this.divmod(num, 'div', false).div; }; // Find `this` % `num` BN.prototype.mod = function mod(num) { return this.divmod(num, 'mod', false).mod; }; BN.prototype.umod = function umod(num) { return this.divmod(num, 'mod', true).mod; }; // Find Round(`this` / `num`) BN.prototype.divRound = function divRound(num) { var dm = this.divmod(num); // Fast case - exact division if (dm.mod.isZero()) return dm.div; var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; var half = num.ushrn(1); var r2 = num.andln(1); var cmp = mod.cmp(half); // Round down if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); }; BN.prototype.modn = function modn(num) { assert(num <= 0x3ffffff); var p = (1 << 26) % num; var acc = 0; for (var i = this.length - 1; i >= 0; i--) { acc = (p * acc + (this.words[i] | 0)) % num; } return acc; }; // In-place division by number BN.prototype.idivn = function idivn(num) { assert(num <= 0x3ffffff); var carry = 0; for (var i = this.length - 1; i >= 0; i--) { var w = (this.words[i] | 0) + carry * 0x4000000; this.words[i] = w / num | 0; carry = w % num; } return this.strip(); }; BN.prototype.divn = function divn(num) { return this.clone().idivn(num); }; BN.prototype.egcd = function egcd(p) { assert(p.negative === 0); assert(!p.isZero()); var x = this; var y = p.clone(); if (x.negative !== 0) { x = x.umod(p); } else { x = x.clone(); } // A * x + B * y = x var A = new BN(1); var B = new BN(0); // C * x + D * y = y var C = new BN(0); var D = new BN(1); var g = 0; while (x.isEven() && y.isEven()) { x.iushrn(1); y.iushrn(1); ++g; } var yp = y.clone(); var xp = x.clone(); while (!x.isZero()) { for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { ; } if (i > 0) { x.iushrn(i); while (i-- > 0) { if (A.isOdd() || B.isOdd()) { A.iadd(yp); B.isub(xp); } A.iushrn(1); B.iushrn(1); } } for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { ; } if (j > 0) { y.iushrn(j); while (j-- > 0) { if (C.isOdd() || D.isOdd()) { C.iadd(yp); D.isub(xp); } C.iushrn(1); D.iushrn(1); } } if (x.cmp(y) >= 0) { x.isub(y); A.isub(C); B.isub(D); } else { y.isub(x); C.isub(A); D.isub(B); } } return { a: C, b: D, gcd: y.iushln(g) }; }; // This is reduced incarnation of the binary EEA // above, designated to invert members of the // _prime_ fields F(p) at a maximal speed BN.prototype._invmp = function _invmp(p) { assert(p.negative === 0); assert(!p.isZero()); var a = this; var b = p.clone(); if (a.negative !== 0) { a = a.umod(p); } else { a = a.clone(); } var x1 = new BN(1); var x2 = new BN(0); var delta = b.clone(); while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { ; } if (i > 0) { a.iushrn(i); while (i-- > 0) { if (x1.isOdd()) { x1.iadd(delta); } x1.iushrn(1); } } for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { ; } if (j > 0) { b.iushrn(j); while (j-- > 0) { if (x2.isOdd()) { x2.iadd(delta); } x2.iushrn(1); } } if (a.cmp(b) >= 0) { a.isub(b); x1.isub(x2); } else { b.isub(a); x2.isub(x1); } } var res; if (a.cmpn(1) === 0) { res = x1; } else { res = x2; } if (res.cmpn(0) < 0) { res.iadd(p); } return res; }; BN.prototype.gcd = function gcd(num) { if (this.isZero()) return num.abs(); if (num.isZero()) return this.abs(); var a = this.clone(); var b = num.clone(); a.negative = 0; b.negative = 0; // Remove common factor of two for (var shift = 0; a.isEven() && b.isEven(); shift++) { a.iushrn(1); b.iushrn(1); } do { while (a.isEven()) { a.iushrn(1); } while (b.isEven()) { b.iushrn(1); } var r = a.cmp(b); if (r < 0) { // Swap `a` and `b` to make `a` always bigger than `b` var t = a; a = b; b = t; } else if (r === 0 || b.cmpn(1) === 0) { break; } a.isub(b); } while (true); return b.iushln(shift); }; // Invert number in the field F(num) BN.prototype.invm = function invm(num) { return this.egcd(num).a.umod(num); }; BN.prototype.isEven = function isEven() { return (this.words[0] & 1) === 0; }; BN.prototype.isOdd = function isOdd() { return (this.words[0] & 1) === 1; }; // And first word and num BN.prototype.andln = function andln(num) { return this.words[0] & num; }; // Increment at the bit position in-line BN.prototype.bincn = function bincn(bit) { assert(typeof bit === 'number'); var r = bit % 26; var s = (bit - r) / 26; var q = 1 << r; // Fast case: bit is much higher than all existing words if (this.length <= s) { this._expand(s + 1); this.words[s] |= q; return this; } // Add bit and propagate, if needed var carry = q; for (var i = s; carry !== 0 && i < this.length; i++) { var w = this.words[i] | 0; w += carry; carry = w >>> 26; w &= 0x3ffffff; this.words[i] = w; } if (carry !== 0) { this.words[i] = carry; this.length++; } return this; }; BN.prototype.isZero = function isZero() { return this.length === 1 && this.words[0] === 0; }; BN.prototype.cmpn = function cmpn(num) { var negative = num < 0; if (this.negative !== 0 && !negative) return -1; if (this.negative === 0 && negative) return 1; this.strip(); var res; if (this.length > 1) { res = 1; } else { if (negative) { num = -num; } assert(num <= 0x3ffffff, 'Number is too big'); var w = this.words[0] | 0; res = w === num ? 0 : w < num ? -1 : 1; } if (this.negative !== 0) return -res | 0; return res; }; // Compare two numbers and return: // 1 - if `this` > `num` // 0 - if `this` == `num` // -1 - if `this` < `num` BN.prototype.cmp = function cmp(num) { if (this.negative !== 0 && num.negative === 0) return -1; if (this.negative === 0 && num.negative !== 0) return 1; var res = this.ucmp(num); if (this.negative !== 0) return -res | 0; return res; }; // Unsigned comparison BN.prototype.ucmp = function ucmp(num) { // At this point both numbers have the same sign if (this.length > num.length) return 1; if (this.length < num.length) return -1; var res = 0; for (var i = this.length - 1; i >= 0; i--) { var a = this.words[i] | 0; var b = num.words[i] | 0; if (a === b) continue; if (a < b) { res = -1; } else if (a > b) { res = 1; } break; } return res; }; BN.prototype.gtn = function gtn(num) { return this.cmpn(num) === 1; }; BN.prototype.gt = function gt(num) { return this.cmp(num) === 1; }; BN.prototype.gten = function gten(num) { return this.cmpn(num) >= 0; }; BN.prototype.gte = function gte(num) { return this.cmp(num) >= 0; }; BN.prototype.ltn = function ltn(num) { return this.cmpn(num) === -1; }; BN.prototype.lt = function lt(num) { return this.cmp(num) === -1; }; BN.prototype.lten = function lten(num) { return this.cmpn(num) <= 0; }; BN.prototype.lte = function lte(num) { return this.cmp(num) <= 0; }; BN.prototype.eqn = function eqn(num) { return this.cmpn(num) === 0; }; BN.prototype.eq = function eq(num) { return this.cmp(num) === 0; }; // // A reduce context, could be using montgomery or something better, depending // on the `m` itself. // BN.red = function red(num) { return new Red(num); }; BN.prototype.toRed = function toRed(ctx) { assert(!this.red, 'Already a number in reduction context'); assert(this.negative === 0, 'red works only with positives'); return ctx.convertTo(this)._forceRed(ctx); }; BN.prototype.fromRed = function fromRed() { assert(this.red, 'fromRed works only with numbers in reduction context'); return this.red.convertFrom(this); }; BN.prototype._forceRed = function _forceRed(ctx) { this.red = ctx; return this; }; BN.prototype.forceRed = function forceRed(ctx) { assert(!this.red, 'Already a number in reduction context'); return this._forceRed(ctx); }; BN.prototype.redAdd = function redAdd(num) { assert(this.red, 'redAdd works only with red numbers'); return this.red.add(this, num); }; BN.prototype.redIAdd = function redIAdd(num) { assert(this.red, 'redIAdd works only with red numbers'); return this.red.iadd(this, num); }; BN.prototype.redSub = function redSub(num) { assert(this.red, 'redSub works only with red numbers'); return this.red.sub(this, num); }; BN.prototype.redISub = function redISub(num) { assert(this.red, 'redISub works only with red numbers'); return this.red.isub(this, num); }; BN.prototype.redShl = function redShl(num) { assert(this.red, 'redShl works only with red numbers'); return this.red.shl(this, num); }; BN.prototype.redMul = function redMul(num) { assert(this.red, 'redMul works only with red numbers'); this.red._verify2(this, num); return this.red.mul(this, num); }; BN.prototype.redIMul = function redIMul(num) { assert(this.red, 'redMul works only with red numbers'); this.red._verify2(this, num); return this.red.imul(this, num); }; BN.prototype.redSqr = function redSqr() { assert(this.red, 'redSqr works only with red numbers'); this.red._verify1(this); return this.red.sqr(this); }; BN.prototype.redISqr = function redISqr() { assert(this.red, 'redISqr works only with red numbers'); this.red._verify1(this); return this.red.isqr(this); }; // Square root over p BN.prototype.redSqrt = function redSqrt() { assert(this.red, 'redSqrt works only with red numbers'); this.red._verify1(this); return this.red.sqrt(this); }; BN.prototype.redInvm = function redInvm() { assert(this.red, 'redInvm works only with red numbers'); this.red._verify1(this); return this.red.invm(this); }; // Return negative clone of `this` % `red modulo` BN.prototype.redNeg = function redNeg() { assert(this.red, 'redNeg works only with red numbers'); this.red._verify1(this); return this.red.neg(this); }; BN.prototype.redPow = function redPow(num) { assert(this.red && !num.red, 'redPow(normalNum)'); this.red._verify1(this); return this.red.pow(this, num); }; // Prime numbers with efficient reduction var primes = { k256: null, p224: null, p192: null, p25519: null }; // Pseudo-Mersenne prime function MPrime(name, p) { // P = 2 ^ N - K this.name = name; this.p = new BN(p, 16); this.n = this.p.bitLength(); this.k = new BN(1).iushln(this.n).isub(this.p); this.tmp = this._tmp(); } MPrime.prototype._tmp = function _tmp() { var tmp = new BN(null); tmp.words = new Array(Math.ceil(this.n / 13)); return tmp; }; MPrime.prototype.ireduce = function ireduce(num) { // Assumes that `num` is less than `P^2` // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) var r = num; var rlen; do { this.split(r, this.tmp); r = this.imulK(r); r = r.iadd(this.tmp); rlen = r.bitLength(); } while (rlen > this.n); var cmp = rlen < this.n ? -1 : r.ucmp(this.p); if (cmp === 0) { r.words[0] = 0; r.length = 1; } else if (cmp > 0) { r.isub(this.p); } else { if (r.strip !== undefined) { // r is BN v4 instance r.strip(); } else { // r is BN v5 instance r._strip(); } } return r; }; MPrime.prototype.split = function split(input, out) { input.iushrn(this.n, 0, out); }; MPrime.prototype.imulK = function imulK(num) { return num.imul(this.k); }; function K256() { MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); } inherits(K256, MPrime); K256.prototype.split = function split(input, output) { // 256 = 9 * 26 + 22 var mask = 0x3fffff; var outLen = Math.min(input.length, 9); for (var i = 0; i < outLen; i++) { output.words[i] = input.words[i]; } output.length = outLen; if (input.length <= 9) { input.words[0] = 0; input.length = 1; return; } // Shift by 9 limbs var prev = input.words[9]; output.words[output.length++] = prev & mask; for (i = 10; i < input.length; i++) { var next = input.words[i] | 0; input.words[i - 10] = (next & mask) << 4 | prev >>> 22; prev = next; } prev >>>= 22; input.words[i - 10] = prev; if (prev === 0 && input.length > 10) { input.length -= 10; } else { input.length -= 9; } }; K256.prototype.imulK = function imulK(num) { // K = 0x1000003d1 = [ 0x40, 0x3d1 ] num.words[num.length] = 0; num.words[num.length + 1] = 0; num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 var lo = 0; for (var i = 0; i < num.length; i++) { var w = num.words[i] | 0; lo += w * 0x3d1; num.words[i] = lo & 0x3ffffff; lo = w * 0x40 + (lo / 0x4000000 | 0); } // Fast length reduction if (num.words[num.length - 1] === 0) { num.length--; if (num.words[num.length - 1] === 0) { num.length--; } } return num; }; function P224() { MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); } inherits(P224, MPrime); function P192() { MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); } inherits(P192, MPrime); function P25519() { // 2 ^ 255 - 19 MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); } inherits(P25519, MPrime); P25519.prototype.imulK = function imulK(num) { // K = 0x13 var carry = 0; for (var i = 0; i < num.length; i++) { var hi = (num.words[i] | 0) * 0x13 + carry; var lo = hi & 0x3ffffff; hi >>>= 26; num.words[i] = lo; carry = hi; } if (carry !== 0) { num.words[num.length++] = carry; } return num; }; // Exported mostly for testing purposes, use plain name instead BN._prime = function prime(name) { // Cached version of prime if (primes[name]) return primes[name]; var prime; if (name === 'k256') { prime = new K256(); } else if (name === 'p224') { prime = new P224(); } else if (name === 'p192') { prime = new P192(); } else if (name === 'p25519') { prime = new P25519(); } else { throw new Error('Unknown prime ' + name); } primes[name] = prime; return prime; }; // // Base reduction engine // function Red(m) { if (typeof m === 'string') { var prime = BN._prime(m); this.m = prime.p; this.prime = prime; } else { assert(m.gtn(1), 'modulus must be greater than 1'); this.m = m; this.prime = null; } } Red.prototype._verify1 = function _verify1(a) { assert(a.negative === 0, 'red works only with positives'); assert(a.red, 'red works only with red numbers'); }; Red.prototype._verify2 = function _verify2(a, b) { assert((a.negative | b.negative) === 0, 'red works only with positives'); assert(a.red && a.red === b.red, 'red works only with red numbers'); }; Red.prototype.imod = function imod(a) { if (this.prime) return this.prime.ireduce(a)._forceRed(this); return a.umod(this.m)._forceRed(this); }; Red.prototype.neg = function neg(a) { if (a.isZero()) { return a.clone(); } return this.m.sub(a)._forceRed(this); }; Red.prototype.add = function add(a, b) { this._verify2(a, b); var res = a.add(b); if (res.cmp(this.m) >= 0) { res.isub(this.m); } return res._forceRed(this); }; Red.prototype.iadd = function iadd(a, b) { this._verify2(a, b); var res = a.iadd(b); if (res.cmp(this.m) >= 0) { res.isub(this.m); } return res; }; Red.prototype.sub = function sub(a, b) { this._verify2(a, b); var res = a.sub(b); if (res.cmpn(0) < 0) { res.iadd(this.m); } return res._forceRed(this); }; Red.prototype.isub = function isub(a, b) { this._verify2(a, b); var res = a.isub(b); if (res.cmpn(0) < 0) { res.iadd(this.m); } return res; }; Red.prototype.shl = function shl(a, num) { this._verify1(a); return this.imod(a.ushln(num)); }; Red.prototype.imul = function imul(a, b) { this._verify2(a, b); return this.imod(a.imul(b)); }; Red.prototype.mul = function mul(a, b) { this._verify2(a, b); return this.imod(a.mul(b)); }; Red.prototype.isqr = function isqr(a) { return this.imul(a, a.clone()); }; Red.prototype.sqr = function sqr(a) { return this.mul(a, a); }; Red.prototype.sqrt = function sqrt(a) { if (a.isZero()) return a.clone(); var mod3 = this.m.andln(3); assert(mod3 % 2 === 1); // Fast case if (mod3 === 3) { var pow = this.m.add(new BN(1)).iushrn(2); return this.pow(a, pow); } // Tonelli-Shanks algorithm (Totally unoptimized and slow) // // Find Q and S, that Q * 2 ^ S = (P - 1) var q = this.m.subn(1); var s = 0; while (!q.isZero() && q.andln(1) === 0) { s++; q.iushrn(1); } assert(!q.isZero()); var one = new BN(1).toRed(this); var nOne = one.redNeg(); // Find quadratic non-residue // NOTE: Max is such because of generalized Riemann hypothesis. var lpow = this.m.subn(1).iushrn(1); var z = this.m.bitLength(); z = new BN(2 * z * z).toRed(this); while (this.pow(z, lpow).cmp(nOne) !== 0) { z.redIAdd(nOne); } var c = this.pow(z, q); var r = this.pow(a, q.addn(1).iushrn(1)); var t = this.pow(a, q); var m = s; while (t.cmp(one) !== 0) { var tmp = t; for (var i = 0; tmp.cmp(one) !== 0; i++) { tmp = tmp.redSqr(); } assert(i < m); var b = this.pow(c, new BN(1).iushln(m - i - 1)); r = r.redMul(b); c = b.redSqr(); t = t.redMul(c); m = i; } return r; }; Red.prototype.invm = function invm(a) { var inv = a._invmp(this.m); if (inv.negative !== 0) { inv.negative = 0; return this.imod(inv).redNeg(); } else { return this.imod(inv); } }; Red.prototype.pow = function pow(a, num) { if (num.isZero()) return new BN(1).toRed(this); if (num.cmpn(1) === 0) return a.clone(); var windowSize = 4; var wnd = new Array(1 << windowSize); wnd[0] = new BN(1).toRed(this); wnd[1] = a; for (var i = 2; i < wnd.length; i++) { wnd[i] = this.mul(wnd[i - 1], a); } var res = wnd[0]; var current = 0; var currentLen = 0; var start = num.bitLength() % 26; if (start === 0) { start = 26; } for (i = num.length - 1; i >= 0; i--) { var word = num.words[i]; for (var j = start - 1; j >= 0; j--) { var bit = word >> j & 1; if (res !== wnd[0]) { res = this.sqr(res); } if (bit === 0 && current === 0) { currentLen = 0; continue; } current <<= 1; current |= bit; currentLen++; if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; res = this.mul(res, wnd[current]); currentLen = 0; current = 0; } start = 26; } return res; }; Red.prototype.convertTo = function convertTo(num) { var r = num.umod(this.m); return r === num ? r.clone() : r; }; Red.prototype.convertFrom = function convertFrom(num) { var res = num.clone(); res.red = null; return res; }; // // Montgomery method engine // BN.mont = function mont(num) { return new Mont(num); }; function Mont(m) { Red.call(this, m); this.shift = this.m.bitLength(); if (this.shift % 26 !== 0) { this.shift += 26 - this.shift % 26; } this.r = new BN(1).iushln(this.shift); this.r2 = this.imod(this.r.sqr()); this.rinv = this.r._invmp(this.m); this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); this.minv = this.minv.umod(this.r); this.minv = this.r.sub(this.minv); } inherits(Mont, Red); Mont.prototype.convertTo = function convertTo(num) { return this.imod(num.ushln(this.shift)); }; Mont.prototype.convertFrom = function convertFrom(num) { var r = this.imod(num.mul(this.rinv)); r.red = null; return r; }; Mont.prototype.imul = function imul(a, b) { if (a.isZero() || b.isZero()) { a.words[0] = 0; a.length = 1; return a; } var t = a.imul(b); var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); var u = t.isub(c).iushrn(this.shift); var res = u; if (u.cmp(this.m) >= 0) { res = u.isub(this.m); } else if (u.cmpn(0) < 0) { res = u.iadd(this.m); } return res._forceRed(this); }; Mont.prototype.mul = function mul(a, b) { if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); var t = a.mul(b); var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); var u = t.isub(c).iushrn(this.shift); var res = u; if (u.cmp(this.m) >= 0) { res = u.isub(this.m); } else if (u.cmpn(0) < 0) { res = u.iadd(this.m); } return res._forceRed(this); }; Mont.prototype.invm = function invm(a) { // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R var res = this.imod(a._invmp(this.m).mul(this.r2)); return res._forceRed(this); }; })(typeof module === 'undefined' || module, void 0); },{"buffer":185}],182:[function(require,module,exports){ 'use strict'; exports.byteLength = byteLength; exports.toByteArray = toByteArray; exports.fromByteArray = fromByteArray; var lookup = []; var revLookup = []; var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; for (var i = 0, len = code.length; i < len; ++i) { lookup[i] = code[i]; revLookup[code.charCodeAt(i)] = i; } // Support decoding URL-safe base64 strings, as Node.js does. // See: https://en.wikipedia.org/wiki/Base64#URL_applications revLookup['-'.charCodeAt(0)] = 62; revLookup['_'.charCodeAt(0)] = 63; function getLens(b64) { var len = b64.length; if (len % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4'); } // Trim off extra bytes after placeholder bytes are found // See: https://github.com/beatgammit/base64-js/issues/42 var validLen = b64.indexOf('='); if (validLen === -1) validLen = len; var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; return [validLen, placeHoldersLen]; } // base64 is 4/3 + up to two characters of the original data function byteLength(b64) { var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function _byteLength(b64, validLen, placeHoldersLen) { return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; } function toByteArray(b64) { var tmp; var lens = getLens(b64); var validLen = lens[0]; var placeHoldersLen = lens[1]; var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars var len = placeHoldersLen > 0 ? validLen - 4 : validLen; var i; for (i = 0; i < len; i += 4) { tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; arr[curByte++] = tmp >> 16 & 0xFF; arr[curByte++] = tmp >> 8 & 0xFF; arr[curByte++] = tmp & 0xFF; } if (placeHoldersLen === 2) { tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; arr[curByte++] = tmp & 0xFF; } if (placeHoldersLen === 1) { tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; arr[curByte++] = tmp >> 8 & 0xFF; arr[curByte++] = tmp & 0xFF; } return arr; } function tripletToBase64(num) { return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; } function encodeChunk(uint8, start, end) { var tmp; var output = []; for (var i = start; i < end; i += 3) { tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); output.push(tripletToBase64(tmp)); } return output.join(''); } function fromByteArray(uint8) { var tmp; var len = uint8.length; var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes var parts = []; var maxChunkLength = 16383; // must be multiple of 3 // go through the array every three bytes, we'll deal with trailing stuff later for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); } // pad the end with zeros, but make sure to not forget the extra bytes if (extraBytes === 1) { tmp = uint8[len - 1]; parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); } else if (extraBytes === 2) { tmp = (uint8[len - 2] << 8) + uint8[len - 1]; parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); } return parts.join(''); } },{}],183:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } (function (module, exports) { 'use strict'; // Utils function assert(val, msg) { if (!val) throw new Error(msg || 'Assertion failed'); } // Could use `inherits` module, but don't want to move from single file // architecture yet. function inherits(ctor, superCtor) { ctor.super_ = superCtor; var TempCtor = function TempCtor() {}; TempCtor.prototype = superCtor.prototype; ctor.prototype = new TempCtor(); ctor.prototype.constructor = ctor; } // BN function BN(number, base, endian) { if (BN.isBN(number)) { return number; } this.negative = 0; this.words = null; this.length = 0; // Reduction context this.red = null; if (number !== null) { if (base === 'le' || base === 'be') { endian = base; base = 10; } this._init(number || 0, base || 10, endian || 'be'); } } if (_typeof(module) === 'object') { module.exports = BN; } else { exports.BN = BN; } BN.BN = BN; BN.wordSize = 26; var Buffer; try { Buffer = require('buffer').Buffer; } catch (e) {} BN.isBN = function isBN(num) { if (num instanceof BN) { return true; } return num !== null && _typeof(num) === 'object' && num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); }; BN.max = function max(left, right) { if (left.cmp(right) > 0) return left; return right; }; BN.min = function min(left, right) { if (left.cmp(right) < 0) return left; return right; }; BN.prototype._init = function init(number, base, endian) { if (typeof number === 'number') { return this._initNumber(number, base, endian); } if (_typeof(number) === 'object') { return this._initArray(number, base, endian); } if (base === 'hex') { base = 16; } assert(base === (base | 0) && base >= 2 && base <= 36); number = number.toString().replace(/\s+/g, ''); var start = 0; if (number[0] === '-') { start++; } if (base === 16) { this._parseHex(number, start); } else { this._parseBase(number, base, start); } if (number[0] === '-') { this.negative = 1; } this._strip(); if (endian !== 'le') return; this._initArray(this.toArray(), base, endian); }; BN.prototype._initNumber = function _initNumber(number, base, endian) { if (number < 0) { this.negative = 1; number = -number; } if (number < 0x4000000) { this.words = [number & 0x3ffffff]; this.length = 1; } else if (number < 0x10000000000000) { this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff]; this.length = 2; } else { assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) this.words = [number & 0x3ffffff, number / 0x4000000 & 0x3ffffff, 1]; this.length = 3; } if (endian !== 'le') return; // Reverse the bytes this._initArray(this.toArray(), base, endian); }; BN.prototype._initArray = function _initArray(number, base, endian) { // Perhaps a Uint8Array assert(typeof number.length === 'number'); if (number.length <= 0) { this.words = [0]; this.length = 1; return this; } this.length = Math.ceil(number.length / 3); this.words = new Array(this.length); for (var i = 0; i < this.length; i++) { this.words[i] = 0; } var j, w; var off = 0; if (endian === 'be') { for (i = number.length - 1, j = 0; i >= 0; i -= 3) { w = number[i] | number[i - 1] << 8 | number[i - 2] << 16; this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] = w >>> 26 - off & 0x3ffffff; off += 24; if (off >= 26) { off -= 26; j++; } } } else if (endian === 'le') { for (i = 0, j = 0; i < number.length; i += 3) { w = number[i] | number[i + 1] << 8 | number[i + 2] << 16; this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] = w >>> 26 - off & 0x3ffffff; off += 24; if (off >= 26) { off -= 26; j++; } } } return this._strip(); }; function parseHex(str, start, end) { var r = 0; var len = Math.min(str.length, end); var z = 0; for (var i = start; i < len; i++) { var c = str.charCodeAt(i) - 48; r <<= 4; var b; // 'a' - 'f' if (c >= 49 && c <= 54) { b = c - 49 + 0xa; // 'A' - 'F' } else if (c >= 17 && c <= 22) { b = c - 17 + 0xa; // '0' - '9' } else { b = c; } r |= b; z |= b; } assert(!(z & 0xf0), 'Invalid character in ' + str); return r; } BN.prototype._parseHex = function _parseHex(number, start) { // Create possibly bigger array to ensure that it fits the number this.length = Math.ceil((number.length - start) / 6); this.words = new Array(this.length); for (var i = 0; i < this.length; i++) { this.words[i] = 0; } var j, w; // Scan 24-bit chunks and add them to the number var off = 0; for (i = number.length - 6, j = 0; i >= start; i -= 6) { w = parseHex(number, i, i + 6); this.words[j] |= w << off & 0x3ffffff; // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb this.words[j + 1] |= w >>> 26 - off & 0x3fffff; off += 24; if (off >= 26) { off -= 26; j++; } } if (i + 6 !== start) { w = parseHex(number, start, i + 6); this.words[j] |= w << off & 0x3ffffff; this.words[j + 1] |= w >>> 26 - off & 0x3fffff; } this._strip(); }; function parseBase(str, start, end, mul) { var r = 0; var b = 0; var len = Math.min(str.length, end); for (var i = start; i < len; i++) { var c = str.charCodeAt(i) - 48; r *= mul; // 'a' if (c >= 49) { b = c - 49 + 0xa; // 'A' } else if (c >= 17) { b = c - 17 + 0xa; // '0' - '9' } else { b = c; } assert(c >= 0 && b < mul, 'Invalid character'); r += b; } return r; } BN.prototype._parseBase = function _parseBase(number, base, start) { // Initialize as zero this.words = [0]; this.length = 1; // Find length of limb in base for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { limbLen++; } limbLen--; limbPow = limbPow / base | 0; var total = number.length - start; var mod = total % limbLen; var end = Math.min(total, total - mod) + start; var word = 0; for (var i = start; i < end; i += limbLen) { word = parseBase(number, i, i + limbLen, base); this.imuln(limbPow); if (this.words[0] + word < 0x4000000) { this.words[0] += word; } else { this._iaddn(word); } } if (mod !== 0) { var pow = 1; word = parseBase(number, i, number.length, base); for (i = 0; i < mod; i++) { pow *= base; } this.imuln(pow); if (this.words[0] + word < 0x4000000) { this.words[0] += word; } else { this._iaddn(word); } } }; BN.prototype.copy = function copy(dest) { dest.words = new Array(this.length); for (var i = 0; i < this.length; i++) { dest.words[i] = this.words[i]; } dest.length = this.length; dest.negative = this.negative; dest.red = this.red; }; function move(dest, src) { dest.words = src.words; dest.length = src.length; dest.negative = src.negative; dest.red = src.red; } BN.prototype._move = function _move(dest) { move(dest, this); }; BN.prototype.clone = function clone() { var r = new BN(null); this.copy(r); return r; }; BN.prototype._expand = function _expand(size) { while (this.length < size) { this.words[this.length++] = 0; } return this; }; // Remove leading `0` from `this` BN.prototype._strip = function strip() { while (this.length > 1 && this.words[this.length - 1] === 0) { this.length--; } return this._normSign(); }; BN.prototype._normSign = function _normSign() { // -0 = 0 if (this.length === 1 && this.words[0] === 0) { this.negative = 0; } return this; }; // Check Symbol.for because not everywhere where Symbol defined // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') { try { BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect; } catch (e) { BN.prototype.inspect = inspect; } } else { BN.prototype.inspect = inspect; } function inspect() { return (this.red ? ''; } /* var zeros = []; var groupSizes = []; var groupBases = []; var s = ''; var i = -1; while (++i < BN.wordSize) { zeros[i] = s; s += '0'; } groupSizes[0] = 0; groupSizes[1] = 0; groupBases[0] = 0; groupBases[1] = 0; var base = 2 - 1; while (++base < 36 + 1) { var groupSize = 0; var groupBase = 1; while (groupBase < (1 << BN.wordSize) / base) { groupBase *= base; groupSize += 1; } groupSizes[base] = groupSize; groupBases[base] = groupBase; } */ var zeros = ['', '0', '00', '000', '0000', '00000', '000000', '0000000', '00000000', '000000000', '0000000000', '00000000000', '000000000000', '0000000000000', '00000000000000', '000000000000000', '0000000000000000', '00000000000000000', '000000000000000000', '0000000000000000000', '00000000000000000000', '000000000000000000000', '0000000000000000000000', '00000000000000000000000', '000000000000000000000000', '0000000000000000000000000']; var groupSizes = [0, 0, 25, 16, 12, 11, 10, 9, 8, 8, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]; var groupBases = [0, 0, 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176]; BN.prototype.toString = function toString(base, padding) { base = base || 10; padding = padding | 0 || 1; var out; if (base === 16 || base === 'hex') { out = ''; var off = 0; var carry = 0; for (var i = 0; i < this.length; i++) { var w = this.words[i]; var word = ((w << off | carry) & 0xffffff).toString(16); carry = w >>> 24 - off & 0xffffff; if (carry !== 0 || i !== this.length - 1) { out = zeros[6 - word.length] + word + out; } else { out = word + out; } off += 2; if (off >= 26) { off -= 26; i--; } } if (carry !== 0) { out = carry.toString(16) + out; } while (out.length % padding !== 0) { out = '0' + out; } if (this.negative !== 0) { out = '-' + out; } return out; } if (base === (base | 0) && base >= 2 && base <= 36) { // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); var groupSize = groupSizes[base]; // var groupBase = Math.pow(base, groupSize); var groupBase = groupBases[base]; out = ''; var c = this.clone(); c.negative = 0; while (!c.isZero()) { var r = c.modrn(groupBase).toString(base); c = c.idivn(groupBase); if (!c.isZero()) { out = zeros[groupSize - r.length] + r + out; } else { out = r + out; } } if (this.isZero()) { out = '0' + out; } while (out.length % padding !== 0) { out = '0' + out; } if (this.negative !== 0) { out = '-' + out; } return out; } assert(false, 'Base should be between 2 and 36'); }; BN.prototype.toNumber = function toNumber() { var ret = this.words[0]; if (this.length === 2) { ret += this.words[1] * 0x4000000; } else if (this.length === 3 && this.words[2] === 0x01) { // NOTE: at this stage it is known that the top bit is set ret += 0x10000000000000 + this.words[1] * 0x4000000; } else if (this.length > 2) { assert(false, 'Number can only safely store up to 53 bits'); } return this.negative !== 0 ? -ret : ret; }; BN.prototype.toJSON = function toJSON() { return this.toString(16, 2); }; if (Buffer) { BN.prototype.toBuffer = function toBuffer(endian, length) { return this.toArrayLike(Buffer, endian, length); }; } BN.prototype.toArray = function toArray(endian, length) { return this.toArrayLike(Array, endian, length); }; var allocate = function allocate(ArrayType, size) { if (ArrayType.allocUnsafe) { return ArrayType.allocUnsafe(size); } return new ArrayType(size); }; BN.prototype.toArrayLike = function toArrayLike(ArrayType, endian, length) { this._strip(); var byteLength = this.byteLength(); var reqLength = length || Math.max(1, byteLength); assert(byteLength <= reqLength, 'byte array longer than desired length'); assert(reqLength > 0, 'Requested array length <= 0'); var res = allocate(ArrayType, reqLength); var postfix = endian === 'le' ? 'LE' : 'BE'; this['_toArrayLike' + postfix](res, byteLength); return res; }; BN.prototype._toArrayLikeLE = function _toArrayLikeLE(res, byteLength) { var position = 0; var carry = 0; for (var i = 0, shift = 0; i < this.length; i++) { var word = this.words[i] << shift | carry; res[position++] = word & 0xff; if (position < res.length) { res[position++] = word >> 8 & 0xff; } if (position < res.length) { res[position++] = word >> 16 & 0xff; } if (shift === 6) { if (position < res.length) { res[position++] = word >> 24 & 0xff; } carry = 0; shift = 0; } else { carry = word >>> 24; shift += 2; } } if (position < res.length) { res[position++] = carry; while (position < res.length) { res[position++] = 0; } } }; BN.prototype._toArrayLikeBE = function _toArrayLikeBE(res, byteLength) { var position = res.length - 1; var carry = 0; for (var i = 0, shift = 0; i < this.length; i++) { var word = this.words[i] << shift | carry; res[position--] = word & 0xff; if (position >= 0) { res[position--] = word >> 8 & 0xff; } if (position >= 0) { res[position--] = word >> 16 & 0xff; } if (shift === 6) { if (position >= 0) { res[position--] = word >> 24 & 0xff; } carry = 0; shift = 0; } else { carry = word >>> 24; shift += 2; } } if (position >= 0) { res[position--] = carry; while (position >= 0) { res[position--] = 0; } } }; if (Math.clz32) { BN.prototype._countBits = function _countBits(w) { return 32 - Math.clz32(w); }; } else { BN.prototype._countBits = function _countBits(w) { var t = w; var r = 0; if (t >= 0x1000) { r += 13; t >>>= 13; } if (t >= 0x40) { r += 7; t >>>= 7; } if (t >= 0x8) { r += 4; t >>>= 4; } if (t >= 0x02) { r += 2; t >>>= 2; } return r + t; }; } BN.prototype._zeroBits = function _zeroBits(w) { // Short-cut if (w === 0) return 26; var t = w; var r = 0; if ((t & 0x1fff) === 0) { r += 13; t >>>= 13; } if ((t & 0x7f) === 0) { r += 7; t >>>= 7; } if ((t & 0xf) === 0) { r += 4; t >>>= 4; } if ((t & 0x3) === 0) { r += 2; t >>>= 2; } if ((t & 0x1) === 0) { r++; } return r; }; // Return number of used bits in a BN BN.prototype.bitLength = function bitLength() { var w = this.words[this.length - 1]; var hi = this._countBits(w); return (this.length - 1) * 26 + hi; }; function toBitArray(num) { var w = new Array(num.bitLength()); for (var bit = 0; bit < w.length; bit++) { var off = bit / 26 | 0; var wbit = bit % 26; w[bit] = num.words[off] >>> wbit & 0x01; } return w; } // Number of trailing zero bits BN.prototype.zeroBits = function zeroBits() { if (this.isZero()) return 0; var r = 0; for (var i = 0; i < this.length; i++) { var b = this._zeroBits(this.words[i]); r += b; if (b !== 26) break; } return r; }; BN.prototype.byteLength = function byteLength() { return Math.ceil(this.bitLength() / 8); }; BN.prototype.toTwos = function toTwos(width) { if (this.negative !== 0) { return this.abs().inotn(width).iaddn(1); } return this.clone(); }; BN.prototype.fromTwos = function fromTwos(width) { if (this.testn(width - 1)) { return this.notn(width).iaddn(1).ineg(); } return this.clone(); }; BN.prototype.isNeg = function isNeg() { return this.negative !== 0; }; // Return negative clone of `this` BN.prototype.neg = function neg() { return this.clone().ineg(); }; BN.prototype.ineg = function ineg() { if (!this.isZero()) { this.negative ^= 1; } return this; }; // Or `num` with `this` in-place BN.prototype.iuor = function iuor(num) { while (this.length < num.length) { this.words[this.length++] = 0; } for (var i = 0; i < num.length; i++) { this.words[i] = this.words[i] | num.words[i]; } return this._strip(); }; BN.prototype.ior = function ior(num) { assert((this.negative | num.negative) === 0); return this.iuor(num); }; // Or `num` with `this` BN.prototype.or = function or(num) { if (this.length > num.length) return this.clone().ior(num); return num.clone().ior(this); }; BN.prototype.uor = function uor(num) { if (this.length > num.length) return this.clone().iuor(num); return num.clone().iuor(this); }; // And `num` with `this` in-place BN.prototype.iuand = function iuand(num) { // b = min-length(num, this) var b; if (this.length > num.length) { b = num; } else { b = this; } for (var i = 0; i < b.length; i++) { this.words[i] = this.words[i] & num.words[i]; } this.length = b.length; return this._strip(); }; BN.prototype.iand = function iand(num) { assert((this.negative | num.negative) === 0); return this.iuand(num); }; // And `num` with `this` BN.prototype.and = function and(num) { if (this.length > num.length) return this.clone().iand(num); return num.clone().iand(this); }; BN.prototype.uand = function uand(num) { if (this.length > num.length) return this.clone().iuand(num); return num.clone().iuand(this); }; // Xor `num` with `this` in-place BN.prototype.iuxor = function iuxor(num) { // a.length > b.length var a; var b; if (this.length > num.length) { a = this; b = num; } else { a = num; b = this; } for (var i = 0; i < b.length; i++) { this.words[i] = a.words[i] ^ b.words[i]; } if (this !== a) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } this.length = a.length; return this._strip(); }; BN.prototype.ixor = function ixor(num) { assert((this.negative | num.negative) === 0); return this.iuxor(num); }; // Xor `num` with `this` BN.prototype.xor = function xor(num) { if (this.length > num.length) return this.clone().ixor(num); return num.clone().ixor(this); }; BN.prototype.uxor = function uxor(num) { if (this.length > num.length) return this.clone().iuxor(num); return num.clone().iuxor(this); }; // Not ``this`` with ``width`` bitwidth BN.prototype.inotn = function inotn(width) { assert(typeof width === 'number' && width >= 0); var bytesNeeded = Math.ceil(width / 26) | 0; var bitsLeft = width % 26; // Extend the buffer with leading zeroes this._expand(bytesNeeded); if (bitsLeft > 0) { bytesNeeded--; } // Handle complete words for (var i = 0; i < bytesNeeded; i++) { this.words[i] = ~this.words[i] & 0x3ffffff; } // Handle the residue if (bitsLeft > 0) { this.words[i] = ~this.words[i] & 0x3ffffff >> 26 - bitsLeft; } // And remove leading zeroes return this._strip(); }; BN.prototype.notn = function notn(width) { return this.clone().inotn(width); }; // Set `bit` of `this` BN.prototype.setn = function setn(bit, val) { assert(typeof bit === 'number' && bit >= 0); var off = bit / 26 | 0; var wbit = bit % 26; this._expand(off + 1); if (val) { this.words[off] = this.words[off] | 1 << wbit; } else { this.words[off] = this.words[off] & ~(1 << wbit); } return this._strip(); }; // Add `num` to `this` in-place BN.prototype.iadd = function iadd(num) { var r; // negative + positive if (this.negative !== 0 && num.negative === 0) { this.negative = 0; r = this.isub(num); this.negative ^= 1; return this._normSign(); // positive + negative } else if (this.negative === 0 && num.negative !== 0) { num.negative = 0; r = this.isub(num); num.negative = 1; return r._normSign(); } // a.length > b.length var a, b; if (this.length > num.length) { a = this; b = num; } else { a = num; b = this; } var carry = 0; for (var i = 0; i < b.length; i++) { r = (a.words[i] | 0) + (b.words[i] | 0) + carry; this.words[i] = r & 0x3ffffff; carry = r >>> 26; } for (; carry !== 0 && i < a.length; i++) { r = (a.words[i] | 0) + carry; this.words[i] = r & 0x3ffffff; carry = r >>> 26; } this.length = a.length; if (carry !== 0) { this.words[this.length] = carry; this.length++; // Copy the rest of the words } else if (a !== this) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } return this; }; // Add `num` to `this` BN.prototype.add = function add(num) { var res; if (num.negative !== 0 && this.negative === 0) { num.negative = 0; res = this.sub(num); num.negative ^= 1; return res; } else if (num.negative === 0 && this.negative !== 0) { this.negative = 0; res = num.sub(this); this.negative = 1; return res; } if (this.length > num.length) return this.clone().iadd(num); return num.clone().iadd(this); }; // Subtract `num` from `this` in-place BN.prototype.isub = function isub(num) { // this - (-num) = this + num if (num.negative !== 0) { num.negative = 0; var r = this.iadd(num); num.negative = 1; return r._normSign(); // -this - num = -(this + num) } else if (this.negative !== 0) { this.negative = 0; this.iadd(num); this.negative = 1; return this._normSign(); } // At this point both numbers are positive var cmp = this.cmp(num); // Optimization - zeroify if (cmp === 0) { this.negative = 0; this.length = 1; this.words[0] = 0; return this; } // a > b var a, b; if (cmp > 0) { a = this; b = num; } else { a = num; b = this; } var carry = 0; for (var i = 0; i < b.length; i++) { r = (a.words[i] | 0) - (b.words[i] | 0) + carry; carry = r >> 26; this.words[i] = r & 0x3ffffff; } for (; carry !== 0 && i < a.length; i++) { r = (a.words[i] | 0) + carry; carry = r >> 26; this.words[i] = r & 0x3ffffff; } // Copy rest of the words if (carry === 0 && i < a.length && a !== this) { for (; i < a.length; i++) { this.words[i] = a.words[i]; } } this.length = Math.max(this.length, i); if (a !== this) { this.negative = 1; } return this._strip(); }; // Subtract `num` from `this` BN.prototype.sub = function sub(num) { return this.clone().isub(num); }; function smallMulTo(self, num, out) { out.negative = num.negative ^ self.negative; var len = self.length + num.length | 0; out.length = len; len = len - 1 | 0; // Peel one iteration (compiler can't do it, because of code complexity) var a = self.words[0] | 0; var b = num.words[0] | 0; var r = a * b; var lo = r & 0x3ffffff; var carry = r / 0x4000000 | 0; out.words[0] = lo; for (var k = 1; k < len; k++) { // Sum all words with the same `i + j = k` and accumulate `ncarry`, // note that ncarry could be >= 0x3ffffff var ncarry = carry >>> 26; var rword = carry & 0x3ffffff; var maxJ = Math.min(k, num.length - 1); for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { var i = k - j | 0; a = self.words[i] | 0; b = num.words[j] | 0; r = a * b + rword; ncarry += r / 0x4000000 | 0; rword = r & 0x3ffffff; } out.words[k] = rword | 0; carry = ncarry | 0; } if (carry !== 0) { out.words[k] = carry | 0; } else { out.length--; } return out._strip(); } // TODO(indutny): it may be reasonable to omit it for users who don't need // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit // multiplication (like elliptic secp256k1). var comb10MulTo = function comb10MulTo(self, num, out) { var a = self.words; var b = num.words; var o = out.words; var c = 0; var lo; var mid; var hi; var a0 = a[0] | 0; var al0 = a0 & 0x1fff; var ah0 = a0 >>> 13; var a1 = a[1] | 0; var al1 = a1 & 0x1fff; var ah1 = a1 >>> 13; var a2 = a[2] | 0; var al2 = a2 & 0x1fff; var ah2 = a2 >>> 13; var a3 = a[3] | 0; var al3 = a3 & 0x1fff; var ah3 = a3 >>> 13; var a4 = a[4] | 0; var al4 = a4 & 0x1fff; var ah4 = a4 >>> 13; var a5 = a[5] | 0; var al5 = a5 & 0x1fff; var ah5 = a5 >>> 13; var a6 = a[6] | 0; var al6 = a6 & 0x1fff; var ah6 = a6 >>> 13; var a7 = a[7] | 0; var al7 = a7 & 0x1fff; var ah7 = a7 >>> 13; var a8 = a[8] | 0; var al8 = a8 & 0x1fff; var ah8 = a8 >>> 13; var a9 = a[9] | 0; var al9 = a9 & 0x1fff; var ah9 = a9 >>> 13; var b0 = b[0] | 0; var bl0 = b0 & 0x1fff; var bh0 = b0 >>> 13; var b1 = b[1] | 0; var bl1 = b1 & 0x1fff; var bh1 = b1 >>> 13; var b2 = b[2] | 0; var bl2 = b2 & 0x1fff; var bh2 = b2 >>> 13; var b3 = b[3] | 0; var bl3 = b3 & 0x1fff; var bh3 = b3 >>> 13; var b4 = b[4] | 0; var bl4 = b4 & 0x1fff; var bh4 = b4 >>> 13; var b5 = b[5] | 0; var bl5 = b5 & 0x1fff; var bh5 = b5 >>> 13; var b6 = b[6] | 0; var bl6 = b6 & 0x1fff; var bh6 = b6 >>> 13; var b7 = b[7] | 0; var bl7 = b7 & 0x1fff; var bh7 = b7 >>> 13; var b8 = b[8] | 0; var bl8 = b8 & 0x1fff; var bh8 = b8 >>> 13; var b9 = b[9] | 0; var bl9 = b9 & 0x1fff; var bh9 = b9 >>> 13; out.negative = self.negative ^ num.negative; out.length = 19; /* k = 0 */ lo = Math.imul(al0, bl0); mid = Math.imul(al0, bh0); mid = mid + Math.imul(ah0, bl0) | 0; hi = Math.imul(ah0, bh0); var w0 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w0 >>> 26) | 0; w0 &= 0x3ffffff; /* k = 1 */ lo = Math.imul(al1, bl0); mid = Math.imul(al1, bh0); mid = mid + Math.imul(ah1, bl0) | 0; hi = Math.imul(ah1, bh0); lo = lo + Math.imul(al0, bl1) | 0; mid = mid + Math.imul(al0, bh1) | 0; mid = mid + Math.imul(ah0, bl1) | 0; hi = hi + Math.imul(ah0, bh1) | 0; var w1 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w1 >>> 26) | 0; w1 &= 0x3ffffff; /* k = 2 */ lo = Math.imul(al2, bl0); mid = Math.imul(al2, bh0); mid = mid + Math.imul(ah2, bl0) | 0; hi = Math.imul(ah2, bh0); lo = lo + Math.imul(al1, bl1) | 0; mid = mid + Math.imul(al1, bh1) | 0; mid = mid + Math.imul(ah1, bl1) | 0; hi = hi + Math.imul(ah1, bh1) | 0; lo = lo + Math.imul(al0, bl2) | 0; mid = mid + Math.imul(al0, bh2) | 0; mid = mid + Math.imul(ah0, bl2) | 0; hi = hi + Math.imul(ah0, bh2) | 0; var w2 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w2 >>> 26) | 0; w2 &= 0x3ffffff; /* k = 3 */ lo = Math.imul(al3, bl0); mid = Math.imul(al3, bh0); mid = mid + Math.imul(ah3, bl0) | 0; hi = Math.imul(ah3, bh0); lo = lo + Math.imul(al2, bl1) | 0; mid = mid + Math.imul(al2, bh1) | 0; mid = mid + Math.imul(ah2, bl1) | 0; hi = hi + Math.imul(ah2, bh1) | 0; lo = lo + Math.imul(al1, bl2) | 0; mid = mid + Math.imul(al1, bh2) | 0; mid = mid + Math.imul(ah1, bl2) | 0; hi = hi + Math.imul(ah1, bh2) | 0; lo = lo + Math.imul(al0, bl3) | 0; mid = mid + Math.imul(al0, bh3) | 0; mid = mid + Math.imul(ah0, bl3) | 0; hi = hi + Math.imul(ah0, bh3) | 0; var w3 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w3 >>> 26) | 0; w3 &= 0x3ffffff; /* k = 4 */ lo = Math.imul(al4, bl0); mid = Math.imul(al4, bh0); mid = mid + Math.imul(ah4, bl0) | 0; hi = Math.imul(ah4, bh0); lo = lo + Math.imul(al3, bl1) | 0; mid = mid + Math.imul(al3, bh1) | 0; mid = mid + Math.imul(ah3, bl1) | 0; hi = hi + Math.imul(ah3, bh1) | 0; lo = lo + Math.imul(al2, bl2) | 0; mid = mid + Math.imul(al2, bh2) | 0; mid = mid + Math.imul(ah2, bl2) | 0; hi = hi + Math.imul(ah2, bh2) | 0; lo = lo + Math.imul(al1, bl3) | 0; mid = mid + Math.imul(al1, bh3) | 0; mid = mid + Math.imul(ah1, bl3) | 0; hi = hi + Math.imul(ah1, bh3) | 0; lo = lo + Math.imul(al0, bl4) | 0; mid = mid + Math.imul(al0, bh4) | 0; mid = mid + Math.imul(ah0, bl4) | 0; hi = hi + Math.imul(ah0, bh4) | 0; var w4 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w4 >>> 26) | 0; w4 &= 0x3ffffff; /* k = 5 */ lo = Math.imul(al5, bl0); mid = Math.imul(al5, bh0); mid = mid + Math.imul(ah5, bl0) | 0; hi = Math.imul(ah5, bh0); lo = lo + Math.imul(al4, bl1) | 0; mid = mid + Math.imul(al4, bh1) | 0; mid = mid + Math.imul(ah4, bl1) | 0; hi = hi + Math.imul(ah4, bh1) | 0; lo = lo + Math.imul(al3, bl2) | 0; mid = mid + Math.imul(al3, bh2) | 0; mid = mid + Math.imul(ah3, bl2) | 0; hi = hi + Math.imul(ah3, bh2) | 0; lo = lo + Math.imul(al2, bl3) | 0; mid = mid + Math.imul(al2, bh3) | 0; mid = mid + Math.imul(ah2, bl3) | 0; hi = hi + Math.imul(ah2, bh3) | 0; lo = lo + Math.imul(al1, bl4) | 0; mid = mid + Math.imul(al1, bh4) | 0; mid = mid + Math.imul(ah1, bl4) | 0; hi = hi + Math.imul(ah1, bh4) | 0; lo = lo + Math.imul(al0, bl5) | 0; mid = mid + Math.imul(al0, bh5) | 0; mid = mid + Math.imul(ah0, bl5) | 0; hi = hi + Math.imul(ah0, bh5) | 0; var w5 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w5 >>> 26) | 0; w5 &= 0x3ffffff; /* k = 6 */ lo = Math.imul(al6, bl0); mid = Math.imul(al6, bh0); mid = mid + Math.imul(ah6, bl0) | 0; hi = Math.imul(ah6, bh0); lo = lo + Math.imul(al5, bl1) | 0; mid = mid + Math.imul(al5, bh1) | 0; mid = mid + Math.imul(ah5, bl1) | 0; hi = hi + Math.imul(ah5, bh1) | 0; lo = lo + Math.imul(al4, bl2) | 0; mid = mid + Math.imul(al4, bh2) | 0; mid = mid + Math.imul(ah4, bl2) | 0; hi = hi + Math.imul(ah4, bh2) | 0; lo = lo + Math.imul(al3, bl3) | 0; mid = mid + Math.imul(al3, bh3) | 0; mid = mid + Math.imul(ah3, bl3) | 0; hi = hi + Math.imul(ah3, bh3) | 0; lo = lo + Math.imul(al2, bl4) | 0; mid = mid + Math.imul(al2, bh4) | 0; mid = mid + Math.imul(ah2, bl4) | 0; hi = hi + Math.imul(ah2, bh4) | 0; lo = lo + Math.imul(al1, bl5) | 0; mid = mid + Math.imul(al1, bh5) | 0; mid = mid + Math.imul(ah1, bl5) | 0; hi = hi + Math.imul(ah1, bh5) | 0; lo = lo + Math.imul(al0, bl6) | 0; mid = mid + Math.imul(al0, bh6) | 0; mid = mid + Math.imul(ah0, bl6) | 0; hi = hi + Math.imul(ah0, bh6) | 0; var w6 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w6 >>> 26) | 0; w6 &= 0x3ffffff; /* k = 7 */ lo = Math.imul(al7, bl0); mid = Math.imul(al7, bh0); mid = mid + Math.imul(ah7, bl0) | 0; hi = Math.imul(ah7, bh0); lo = lo + Math.imul(al6, bl1) | 0; mid = mid + Math.imul(al6, bh1) | 0; mid = mid + Math.imul(ah6, bl1) | 0; hi = hi + Math.imul(ah6, bh1) | 0; lo = lo + Math.imul(al5, bl2) | 0; mid = mid + Math.imul(al5, bh2) | 0; mid = mid + Math.imul(ah5, bl2) | 0; hi = hi + Math.imul(ah5, bh2) | 0; lo = lo + Math.imul(al4, bl3) | 0; mid = mid + Math.imul(al4, bh3) | 0; mid = mid + Math.imul(ah4, bl3) | 0; hi = hi + Math.imul(ah4, bh3) | 0; lo = lo + Math.imul(al3, bl4) | 0; mid = mid + Math.imul(al3, bh4) | 0; mid = mid + Math.imul(ah3, bl4) | 0; hi = hi + Math.imul(ah3, bh4) | 0; lo = lo + Math.imul(al2, bl5) | 0; mid = mid + Math.imul(al2, bh5) | 0; mid = mid + Math.imul(ah2, bl5) | 0; hi = hi + Math.imul(ah2, bh5) | 0; lo = lo + Math.imul(al1, bl6) | 0; mid = mid + Math.imul(al1, bh6) | 0; mid = mid + Math.imul(ah1, bl6) | 0; hi = hi + Math.imul(ah1, bh6) | 0; lo = lo + Math.imul(al0, bl7) | 0; mid = mid + Math.imul(al0, bh7) | 0; mid = mid + Math.imul(ah0, bl7) | 0; hi = hi + Math.imul(ah0, bh7) | 0; var w7 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w7 >>> 26) | 0; w7 &= 0x3ffffff; /* k = 8 */ lo = Math.imul(al8, bl0); mid = Math.imul(al8, bh0); mid = mid + Math.imul(ah8, bl0) | 0; hi = Math.imul(ah8, bh0); lo = lo + Math.imul(al7, bl1) | 0; mid = mid + Math.imul(al7, bh1) | 0; mid = mid + Math.imul(ah7, bl1) | 0; hi = hi + Math.imul(ah7, bh1) | 0; lo = lo + Math.imul(al6, bl2) | 0; mid = mid + Math.imul(al6, bh2) | 0; mid = mid + Math.imul(ah6, bl2) | 0; hi = hi + Math.imul(ah6, bh2) | 0; lo = lo + Math.imul(al5, bl3) | 0; mid = mid + Math.imul(al5, bh3) | 0; mid = mid + Math.imul(ah5, bl3) | 0; hi = hi + Math.imul(ah5, bh3) | 0; lo = lo + Math.imul(al4, bl4) | 0; mid = mid + Math.imul(al4, bh4) | 0; mid = mid + Math.imul(ah4, bl4) | 0; hi = hi + Math.imul(ah4, bh4) | 0; lo = lo + Math.imul(al3, bl5) | 0; mid = mid + Math.imul(al3, bh5) | 0; mid = mid + Math.imul(ah3, bl5) | 0; hi = hi + Math.imul(ah3, bh5) | 0; lo = lo + Math.imul(al2, bl6) | 0; mid = mid + Math.imul(al2, bh6) | 0; mid = mid + Math.imul(ah2, bl6) | 0; hi = hi + Math.imul(ah2, bh6) | 0; lo = lo + Math.imul(al1, bl7) | 0; mid = mid + Math.imul(al1, bh7) | 0; mid = mid + Math.imul(ah1, bl7) | 0; hi = hi + Math.imul(ah1, bh7) | 0; lo = lo + Math.imul(al0, bl8) | 0; mid = mid + Math.imul(al0, bh8) | 0; mid = mid + Math.imul(ah0, bl8) | 0; hi = hi + Math.imul(ah0, bh8) | 0; var w8 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w8 >>> 26) | 0; w8 &= 0x3ffffff; /* k = 9 */ lo = Math.imul(al9, bl0); mid = Math.imul(al9, bh0); mid = mid + Math.imul(ah9, bl0) | 0; hi = Math.imul(ah9, bh0); lo = lo + Math.imul(al8, bl1) | 0; mid = mid + Math.imul(al8, bh1) | 0; mid = mid + Math.imul(ah8, bl1) | 0; hi = hi + Math.imul(ah8, bh1) | 0; lo = lo + Math.imul(al7, bl2) | 0; mid = mid + Math.imul(al7, bh2) | 0; mid = mid + Math.imul(ah7, bl2) | 0; hi = hi + Math.imul(ah7, bh2) | 0; lo = lo + Math.imul(al6, bl3) | 0; mid = mid + Math.imul(al6, bh3) | 0; mid = mid + Math.imul(ah6, bl3) | 0; hi = hi + Math.imul(ah6, bh3) | 0; lo = lo + Math.imul(al5, bl4) | 0; mid = mid + Math.imul(al5, bh4) | 0; mid = mid + Math.imul(ah5, bl4) | 0; hi = hi + Math.imul(ah5, bh4) | 0; lo = lo + Math.imul(al4, bl5) | 0; mid = mid + Math.imul(al4, bh5) | 0; mid = mid + Math.imul(ah4, bl5) | 0; hi = hi + Math.imul(ah4, bh5) | 0; lo = lo + Math.imul(al3, bl6) | 0; mid = mid + Math.imul(al3, bh6) | 0; mid = mid + Math.imul(ah3, bl6) | 0; hi = hi + Math.imul(ah3, bh6) | 0; lo = lo + Math.imul(al2, bl7) | 0; mid = mid + Math.imul(al2, bh7) | 0; mid = mid + Math.imul(ah2, bl7) | 0; hi = hi + Math.imul(ah2, bh7) | 0; lo = lo + Math.imul(al1, bl8) | 0; mid = mid + Math.imul(al1, bh8) | 0; mid = mid + Math.imul(ah1, bl8) | 0; hi = hi + Math.imul(ah1, bh8) | 0; lo = lo + Math.imul(al0, bl9) | 0; mid = mid + Math.imul(al0, bh9) | 0; mid = mid + Math.imul(ah0, bl9) | 0; hi = hi + Math.imul(ah0, bh9) | 0; var w9 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w9 >>> 26) | 0; w9 &= 0x3ffffff; /* k = 10 */ lo = Math.imul(al9, bl1); mid = Math.imul(al9, bh1); mid = mid + Math.imul(ah9, bl1) | 0; hi = Math.imul(ah9, bh1); lo = lo + Math.imul(al8, bl2) | 0; mid = mid + Math.imul(al8, bh2) | 0; mid = mid + Math.imul(ah8, bl2) | 0; hi = hi + Math.imul(ah8, bh2) | 0; lo = lo + Math.imul(al7, bl3) | 0; mid = mid + Math.imul(al7, bh3) | 0; mid = mid + Math.imul(ah7, bl3) | 0; hi = hi + Math.imul(ah7, bh3) | 0; lo = lo + Math.imul(al6, bl4) | 0; mid = mid + Math.imul(al6, bh4) | 0; mid = mid + Math.imul(ah6, bl4) | 0; hi = hi + Math.imul(ah6, bh4) | 0; lo = lo + Math.imul(al5, bl5) | 0; mid = mid + Math.imul(al5, bh5) | 0; mid = mid + Math.imul(ah5, bl5) | 0; hi = hi + Math.imul(ah5, bh5) | 0; lo = lo + Math.imul(al4, bl6) | 0; mid = mid + Math.imul(al4, bh6) | 0; mid = mid + Math.imul(ah4, bl6) | 0; hi = hi + Math.imul(ah4, bh6) | 0; lo = lo + Math.imul(al3, bl7) | 0; mid = mid + Math.imul(al3, bh7) | 0; mid = mid + Math.imul(ah3, bl7) | 0; hi = hi + Math.imul(ah3, bh7) | 0; lo = lo + Math.imul(al2, bl8) | 0; mid = mid + Math.imul(al2, bh8) | 0; mid = mid + Math.imul(ah2, bl8) | 0; hi = hi + Math.imul(ah2, bh8) | 0; lo = lo + Math.imul(al1, bl9) | 0; mid = mid + Math.imul(al1, bh9) | 0; mid = mid + Math.imul(ah1, bl9) | 0; hi = hi + Math.imul(ah1, bh9) | 0; var w10 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w10 >>> 26) | 0; w10 &= 0x3ffffff; /* k = 11 */ lo = Math.imul(al9, bl2); mid = Math.imul(al9, bh2); mid = mid + Math.imul(ah9, bl2) | 0; hi = Math.imul(ah9, bh2); lo = lo + Math.imul(al8, bl3) | 0; mid = mid + Math.imul(al8, bh3) | 0; mid = mid + Math.imul(ah8, bl3) | 0; hi = hi + Math.imul(ah8, bh3) | 0; lo = lo + Math.imul(al7, bl4) | 0; mid = mid + Math.imul(al7, bh4) | 0; mid = mid + Math.imul(ah7, bl4) | 0; hi = hi + Math.imul(ah7, bh4) | 0; lo = lo + Math.imul(al6, bl5) | 0; mid = mid + Math.imul(al6, bh5) | 0; mid = mid + Math.imul(ah6, bl5) | 0; hi = hi + Math.imul(ah6, bh5) | 0; lo = lo + Math.imul(al5, bl6) | 0; mid = mid + Math.imul(al5, bh6) | 0; mid = mid + Math.imul(ah5, bl6) | 0; hi = hi + Math.imul(ah5, bh6) | 0; lo = lo + Math.imul(al4, bl7) | 0; mid = mid + Math.imul(al4, bh7) | 0; mid = mid + Math.imul(ah4, bl7) | 0; hi = hi + Math.imul(ah4, bh7) | 0; lo = lo + Math.imul(al3, bl8) | 0; mid = mid + Math.imul(al3, bh8) | 0; mid = mid + Math.imul(ah3, bl8) | 0; hi = hi + Math.imul(ah3, bh8) | 0; lo = lo + Math.imul(al2, bl9) | 0; mid = mid + Math.imul(al2, bh9) | 0; mid = mid + Math.imul(ah2, bl9) | 0; hi = hi + Math.imul(ah2, bh9) | 0; var w11 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w11 >>> 26) | 0; w11 &= 0x3ffffff; /* k = 12 */ lo = Math.imul(al9, bl3); mid = Math.imul(al9, bh3); mid = mid + Math.imul(ah9, bl3) | 0; hi = Math.imul(ah9, bh3); lo = lo + Math.imul(al8, bl4) | 0; mid = mid + Math.imul(al8, bh4) | 0; mid = mid + Math.imul(ah8, bl4) | 0; hi = hi + Math.imul(ah8, bh4) | 0; lo = lo + Math.imul(al7, bl5) | 0; mid = mid + Math.imul(al7, bh5) | 0; mid = mid + Math.imul(ah7, bl5) | 0; hi = hi + Math.imul(ah7, bh5) | 0; lo = lo + Math.imul(al6, bl6) | 0; mid = mid + Math.imul(al6, bh6) | 0; mid = mid + Math.imul(ah6, bl6) | 0; hi = hi + Math.imul(ah6, bh6) | 0; lo = lo + Math.imul(al5, bl7) | 0; mid = mid + Math.imul(al5, bh7) | 0; mid = mid + Math.imul(ah5, bl7) | 0; hi = hi + Math.imul(ah5, bh7) | 0; lo = lo + Math.imul(al4, bl8) | 0; mid = mid + Math.imul(al4, bh8) | 0; mid = mid + Math.imul(ah4, bl8) | 0; hi = hi + Math.imul(ah4, bh8) | 0; lo = lo + Math.imul(al3, bl9) | 0; mid = mid + Math.imul(al3, bh9) | 0; mid = mid + Math.imul(ah3, bl9) | 0; hi = hi + Math.imul(ah3, bh9) | 0; var w12 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w12 >>> 26) | 0; w12 &= 0x3ffffff; /* k = 13 */ lo = Math.imul(al9, bl4); mid = Math.imul(al9, bh4); mid = mid + Math.imul(ah9, bl4) | 0; hi = Math.imul(ah9, bh4); lo = lo + Math.imul(al8, bl5) | 0; mid = mid + Math.imul(al8, bh5) | 0; mid = mid + Math.imul(ah8, bl5) | 0; hi = hi + Math.imul(ah8, bh5) | 0; lo = lo + Math.imul(al7, bl6) | 0; mid = mid + Math.imul(al7, bh6) | 0; mid = mid + Math.imul(ah7, bl6) | 0; hi = hi + Math.imul(ah7, bh6) | 0; lo = lo + Math.imul(al6, bl7) | 0; mid = mid + Math.imul(al6, bh7) | 0; mid = mid + Math.imul(ah6, bl7) | 0; hi = hi + Math.imul(ah6, bh7) | 0; lo = lo + Math.imul(al5, bl8) | 0; mid = mid + Math.imul(al5, bh8) | 0; mid = mid + Math.imul(ah5, bl8) | 0; hi = hi + Math.imul(ah5, bh8) | 0; lo = lo + Math.imul(al4, bl9) | 0; mid = mid + Math.imul(al4, bh9) | 0; mid = mid + Math.imul(ah4, bl9) | 0; hi = hi + Math.imul(ah4, bh9) | 0; var w13 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w13 >>> 26) | 0; w13 &= 0x3ffffff; /* k = 14 */ lo = Math.imul(al9, bl5); mid = Math.imul(al9, bh5); mid = mid + Math.imul(ah9, bl5) | 0; hi = Math.imul(ah9, bh5); lo = lo + Math.imul(al8, bl6) | 0; mid = mid + Math.imul(al8, bh6) | 0; mid = mid + Math.imul(ah8, bl6) | 0; hi = hi + Math.imul(ah8, bh6) | 0; lo = lo + Math.imul(al7, bl7) | 0; mid = mid + Math.imul(al7, bh7) | 0; mid = mid + Math.imul(ah7, bl7) | 0; hi = hi + Math.imul(ah7, bh7) | 0; lo = lo + Math.imul(al6, bl8) | 0; mid = mid + Math.imul(al6, bh8) | 0; mid = mid + Math.imul(ah6, bl8) | 0; hi = hi + Math.imul(ah6, bh8) | 0; lo = lo + Math.imul(al5, bl9) | 0; mid = mid + Math.imul(al5, bh9) | 0; mid = mid + Math.imul(ah5, bl9) | 0; hi = hi + Math.imul(ah5, bh9) | 0; var w14 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w14 >>> 26) | 0; w14 &= 0x3ffffff; /* k = 15 */ lo = Math.imul(al9, bl6); mid = Math.imul(al9, bh6); mid = mid + Math.imul(ah9, bl6) | 0; hi = Math.imul(ah9, bh6); lo = lo + Math.imul(al8, bl7) | 0; mid = mid + Math.imul(al8, bh7) | 0; mid = mid + Math.imul(ah8, bl7) | 0; hi = hi + Math.imul(ah8, bh7) | 0; lo = lo + Math.imul(al7, bl8) | 0; mid = mid + Math.imul(al7, bh8) | 0; mid = mid + Math.imul(ah7, bl8) | 0; hi = hi + Math.imul(ah7, bh8) | 0; lo = lo + Math.imul(al6, bl9) | 0; mid = mid + Math.imul(al6, bh9) | 0; mid = mid + Math.imul(ah6, bl9) | 0; hi = hi + Math.imul(ah6, bh9) | 0; var w15 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w15 >>> 26) | 0; w15 &= 0x3ffffff; /* k = 16 */ lo = Math.imul(al9, bl7); mid = Math.imul(al9, bh7); mid = mid + Math.imul(ah9, bl7) | 0; hi = Math.imul(ah9, bh7); lo = lo + Math.imul(al8, bl8) | 0; mid = mid + Math.imul(al8, bh8) | 0; mid = mid + Math.imul(ah8, bl8) | 0; hi = hi + Math.imul(ah8, bh8) | 0; lo = lo + Math.imul(al7, bl9) | 0; mid = mid + Math.imul(al7, bh9) | 0; mid = mid + Math.imul(ah7, bl9) | 0; hi = hi + Math.imul(ah7, bh9) | 0; var w16 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w16 >>> 26) | 0; w16 &= 0x3ffffff; /* k = 17 */ lo = Math.imul(al9, bl8); mid = Math.imul(al9, bh8); mid = mid + Math.imul(ah9, bl8) | 0; hi = Math.imul(ah9, bh8); lo = lo + Math.imul(al8, bl9) | 0; mid = mid + Math.imul(al8, bh9) | 0; mid = mid + Math.imul(ah8, bl9) | 0; hi = hi + Math.imul(ah8, bh9) | 0; var w17 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w17 >>> 26) | 0; w17 &= 0x3ffffff; /* k = 18 */ lo = Math.imul(al9, bl9); mid = Math.imul(al9, bh9); mid = mid + Math.imul(ah9, bl9) | 0; hi = Math.imul(ah9, bh9); var w18 = (c + lo | 0) + ((mid & 0x1fff) << 13) | 0; c = (hi + (mid >>> 13) | 0) + (w18 >>> 26) | 0; w18 &= 0x3ffffff; o[0] = w0; o[1] = w1; o[2] = w2; o[3] = w3; o[4] = w4; o[5] = w5; o[6] = w6; o[7] = w7; o[8] = w8; o[9] = w9; o[10] = w10; o[11] = w11; o[12] = w12; o[13] = w13; o[14] = w14; o[15] = w15; o[16] = w16; o[17] = w17; o[18] = w18; if (c !== 0) { o[19] = c; out.length++; } return out; }; // Polyfill comb if (!Math.imul) { comb10MulTo = smallMulTo; } function bigMulTo(self, num, out) { out.negative = num.negative ^ self.negative; out.length = self.length + num.length; var carry = 0; var hncarry = 0; for (var k = 0; k < out.length - 1; k++) { // Sum all words with the same `i + j = k` and accumulate `ncarry`, // note that ncarry could be >= 0x3ffffff var ncarry = hncarry; hncarry = 0; var rword = carry & 0x3ffffff; var maxJ = Math.min(k, num.length - 1); for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { var i = k - j; var a = self.words[i] | 0; var b = num.words[j] | 0; var r = a * b; var lo = r & 0x3ffffff; ncarry = ncarry + (r / 0x4000000 | 0) | 0; lo = lo + rword | 0; rword = lo & 0x3ffffff; ncarry = ncarry + (lo >>> 26) | 0; hncarry += ncarry >>> 26; ncarry &= 0x3ffffff; } out.words[k] = rword; carry = ncarry; ncarry = hncarry; } if (carry !== 0) { out.words[k] = carry; } else { out.length--; } return out._strip(); } function jumboMulTo(self, num, out) { // Temporary disable, see https://github.com/indutny/bn.js/issues/211 // var fftm = new FFTM(); // return fftm.mulp(self, num, out); return bigMulTo(self, num, out); } BN.prototype.mulTo = function mulTo(num, out) { var res; var len = this.length + num.length; if (this.length === 10 && num.length === 10) { res = comb10MulTo(this, num, out); } else if (len < 63) { res = smallMulTo(this, num, out); } else if (len < 1024) { res = bigMulTo(this, num, out); } else { res = jumboMulTo(this, num, out); } return res; }; // Cooley-Tukey algorithm for FFT // slightly revisited to rely on looping instead of recursion function FFTM(x, y) { this.x = x; this.y = y; } FFTM.prototype.makeRBT = function makeRBT(N) { var t = new Array(N); var l = BN.prototype._countBits(N) - 1; for (var i = 0; i < N; i++) { t[i] = this.revBin(i, l, N); } return t; }; // Returns binary-reversed representation of `x` FFTM.prototype.revBin = function revBin(x, l, N) { if (x === 0 || x === N - 1) return x; var rb = 0; for (var i = 0; i < l; i++) { rb |= (x & 1) << l - i - 1; x >>= 1; } return rb; }; // Performs "tweedling" phase, therefore 'emulating' // behaviour of the recursive algorithm FFTM.prototype.permute = function permute(rbt, rws, iws, rtws, itws, N) { for (var i = 0; i < N; i++) { rtws[i] = rws[rbt[i]]; itws[i] = iws[rbt[i]]; } }; FFTM.prototype.transform = function transform(rws, iws, rtws, itws, N, rbt) { this.permute(rbt, rws, iws, rtws, itws, N); for (var s = 1; s < N; s <<= 1) { var l = s << 1; var rtwdf = Math.cos(2 * Math.PI / l); var itwdf = Math.sin(2 * Math.PI / l); for (var p = 0; p < N; p += l) { var rtwdf_ = rtwdf; var itwdf_ = itwdf; for (var j = 0; j < s; j++) { var re = rtws[p + j]; var ie = itws[p + j]; var ro = rtws[p + j + s]; var io = itws[p + j + s]; var rx = rtwdf_ * ro - itwdf_ * io; io = rtwdf_ * io + itwdf_ * ro; ro = rx; rtws[p + j] = re + ro; itws[p + j] = ie + io; rtws[p + j + s] = re - ro; itws[p + j + s] = ie - io; /* jshint maxdepth : false */ if (j !== l) { rx = rtwdf * rtwdf_ - itwdf * itwdf_; itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; rtwdf_ = rx; } } } } }; FFTM.prototype.guessLen13b = function guessLen13b(n, m) { var N = Math.max(m, n) | 1; var odd = N & 1; var i = 0; for (N = N / 2 | 0; N; N = N >>> 1) { i++; } return 1 << i + 1 + odd; }; FFTM.prototype.conjugate = function conjugate(rws, iws, N) { if (N <= 1) return; for (var i = 0; i < N / 2; i++) { var t = rws[i]; rws[i] = rws[N - i - 1]; rws[N - i - 1] = t; t = iws[i]; iws[i] = -iws[N - i - 1]; iws[N - i - 1] = -t; } }; FFTM.prototype.normalize13b = function normalize13b(ws, N) { var carry = 0; for (var i = 0; i < N / 2; i++) { var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + Math.round(ws[2 * i] / N) + carry; ws[i] = w & 0x3ffffff; if (w < 0x4000000) { carry = 0; } else { carry = w / 0x4000000 | 0; } } return ws; }; FFTM.prototype.convert13b = function convert13b(ws, len, rws, N) { var carry = 0; for (var i = 0; i < len; i++) { carry = carry + (ws[i] | 0); rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; } // Pad with zeroes for (i = 2 * len; i < N; ++i) { rws[i] = 0; } assert(carry === 0); assert((carry & ~0x1fff) === 0); }; FFTM.prototype.stub = function stub(N) { var ph = new Array(N); for (var i = 0; i < N; i++) { ph[i] = 0; } return ph; }; FFTM.prototype.mulp = function mulp(x, y, out) { var N = 2 * this.guessLen13b(x.length, y.length); var rbt = this.makeRBT(N); var _ = this.stub(N); var rws = new Array(N); var rwst = new Array(N); var iwst = new Array(N); var nrws = new Array(N); var nrwst = new Array(N); var niwst = new Array(N); var rmws = out.words; rmws.length = N; this.convert13b(x.words, x.length, rws, N); this.convert13b(y.words, y.length, nrws, N); this.transform(rws, _, rwst, iwst, N, rbt); this.transform(nrws, _, nrwst, niwst, N, rbt); for (var i = 0; i < N; i++) { var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; rwst[i] = rx; } this.conjugate(rwst, iwst, N); this.transform(rwst, iwst, rmws, _, N, rbt); this.conjugate(rmws, _, N); this.normalize13b(rmws, N); out.negative = x.negative ^ y.negative; out.length = x.length + y.length; return out._strip(); }; // Multiply `this` by `num` BN.prototype.mul = function mul(num) { var out = new BN(null); out.words = new Array(this.length + num.length); return this.mulTo(num, out); }; // Multiply employing FFT BN.prototype.mulf = function mulf(num) { var out = new BN(null); out.words = new Array(this.length + num.length); return jumboMulTo(this, num, out); }; // In-place Multiplication BN.prototype.imul = function imul(num) { return this.clone().mulTo(num, this); }; BN.prototype.imuln = function imuln(num) { var isNegNum = num < 0; if (isNegNum) num = -num; assert(typeof num === 'number'); assert(num < 0x4000000); // Carry var carry = 0; for (var i = 0; i < this.length; i++) { var w = (this.words[i] | 0) * num; var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); carry >>= 26; carry += w / 0x4000000 | 0; // NOTE: lo is 27bit maximum carry += lo >>> 26; this.words[i] = lo & 0x3ffffff; } if (carry !== 0) { this.words[i] = carry; this.length++; } return isNegNum ? this.ineg() : this; }; BN.prototype.muln = function muln(num) { return this.clone().imuln(num); }; // `this` * `this` BN.prototype.sqr = function sqr() { return this.mul(this); }; // `this` * `this` in-place BN.prototype.isqr = function isqr() { return this.imul(this.clone()); }; // Math.pow(`this`, `num`) BN.prototype.pow = function pow(num) { var w = toBitArray(num); if (w.length === 0) return new BN(1); // Skip leading zeroes var res = this; for (var i = 0; i < w.length; i++, res = res.sqr()) { if (w[i] !== 0) break; } if (++i < w.length) { for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { if (w[i] === 0) continue; res = res.mul(q); } } return res; }; // Shift-left in-place BN.prototype.iushln = function iushln(bits) { assert(typeof bits === 'number' && bits >= 0); var r = bits % 26; var s = (bits - r) / 26; var carryMask = 0x3ffffff >>> 26 - r << 26 - r; var i; if (r !== 0) { var carry = 0; for (i = 0; i < this.length; i++) { var newCarry = this.words[i] & carryMask; var c = (this.words[i] | 0) - newCarry << r; this.words[i] = c | carry; carry = newCarry >>> 26 - r; } if (carry) { this.words[i] = carry; this.length++; } } if (s !== 0) { for (i = this.length - 1; i >= 0; i--) { this.words[i + s] = this.words[i]; } for (i = 0; i < s; i++) { this.words[i] = 0; } this.length += s; } return this._strip(); }; BN.prototype.ishln = function ishln(bits) { // TODO(indutny): implement me assert(this.negative === 0); return this.iushln(bits); }; // Shift-right in-place // NOTE: `hint` is a lowest bit before trailing zeroes // NOTE: if `extended` is present - it will be filled with destroyed bits BN.prototype.iushrn = function iushrn(bits, hint, extended) { assert(typeof bits === 'number' && bits >= 0); var h; if (hint) { h = (hint - hint % 26) / 26; } else { h = 0; } var r = bits % 26; var s = Math.min((bits - r) / 26, this.length); var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; var maskedWords = extended; h -= s; h = Math.max(0, h); // Extended mode, copy masked part if (maskedWords) { for (var i = 0; i < s; i++) { maskedWords.words[i] = this.words[i]; } maskedWords.length = s; } if (s === 0) {// No-op, we should not move anything at all } else if (this.length > s) { this.length -= s; for (i = 0; i < this.length; i++) { this.words[i] = this.words[i + s]; } } else { this.words[0] = 0; this.length = 1; } var carry = 0; for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { var word = this.words[i] | 0; this.words[i] = carry << 26 - r | word >>> r; carry = word & mask; } // Push carried bits as a mask if (maskedWords && carry !== 0) { maskedWords.words[maskedWords.length++] = carry; } if (this.length === 0) { this.words[0] = 0; this.length = 1; } return this._strip(); }; BN.prototype.ishrn = function ishrn(bits, hint, extended) { // TODO(indutny): implement me assert(this.negative === 0); return this.iushrn(bits, hint, extended); }; // Shift-left BN.prototype.shln = function shln(bits) { return this.clone().ishln(bits); }; BN.prototype.ushln = function ushln(bits) { return this.clone().iushln(bits); }; // Shift-right BN.prototype.shrn = function shrn(bits) { return this.clone().ishrn(bits); }; BN.prototype.ushrn = function ushrn(bits) { return this.clone().iushrn(bits); }; // Test if n bit is set BN.prototype.testn = function testn(bit) { assert(typeof bit === 'number' && bit >= 0); var r = bit % 26; var s = (bit - r) / 26; var q = 1 << r; // Fast case: bit is much higher than all existing words if (this.length <= s) return false; // Check bit and return var w = this.words[s]; return !!(w & q); }; // Return only lowers bits of number (in-place) BN.prototype.imaskn = function imaskn(bits) { assert(typeof bits === 'number' && bits >= 0); var r = bits % 26; var s = (bits - r) / 26; assert(this.negative === 0, 'imaskn works only with positive numbers'); if (this.length <= s) { return this; } if (r !== 0) { s++; } this.length = Math.min(s, this.length); if (r !== 0) { var mask = 0x3ffffff ^ 0x3ffffff >>> r << r; this.words[this.length - 1] &= mask; } return this._strip(); }; // Return only lowers bits of number BN.prototype.maskn = function maskn(bits) { return this.clone().imaskn(bits); }; // Add plain number `num` to `this` BN.prototype.iaddn = function iaddn(num) { assert(typeof num === 'number'); assert(num < 0x4000000); if (num < 0) return this.isubn(-num); // Possible sign change if (this.negative !== 0) { if (this.length === 1 && (this.words[0] | 0) <= num) { this.words[0] = num - (this.words[0] | 0); this.negative = 0; return this; } this.negative = 0; this.isubn(num); this.negative = 1; return this; } // Add without checks return this._iaddn(num); }; BN.prototype._iaddn = function _iaddn(num) { this.words[0] += num; // Carry for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { this.words[i] -= 0x4000000; if (i === this.length - 1) { this.words[i + 1] = 1; } else { this.words[i + 1]++; } } this.length = Math.max(this.length, i + 1); return this; }; // Subtract plain number `num` from `this` BN.prototype.isubn = function isubn(num) { assert(typeof num === 'number'); assert(num < 0x4000000); if (num < 0) return this.iaddn(-num); if (this.negative !== 0) { this.negative = 0; this.iaddn(num); this.negative = 1; return this; } this.words[0] -= num; if (this.length === 1 && this.words[0] < 0) { this.words[0] = -this.words[0]; this.negative = 1; } else { // Carry for (var i = 0; i < this.length && this.words[i] < 0; i++) { this.words[i] += 0x4000000; this.words[i + 1] -= 1; } } return this._strip(); }; BN.prototype.addn = function addn(num) { return this.clone().iaddn(num); }; BN.prototype.subn = function subn(num) { return this.clone().isubn(num); }; BN.prototype.iabs = function iabs() { this.negative = 0; return this; }; BN.prototype.abs = function abs() { return this.clone().iabs(); }; BN.prototype._ishlnsubmul = function _ishlnsubmul(num, mul, shift) { var len = num.length + shift; var i; this._expand(len); var w; var carry = 0; for (i = 0; i < num.length; i++) { w = (this.words[i + shift] | 0) + carry; var right = (num.words[i] | 0) * mul; w -= right & 0x3ffffff; carry = (w >> 26) - (right / 0x4000000 | 0); this.words[i + shift] = w & 0x3ffffff; } for (; i < this.length - shift; i++) { w = (this.words[i + shift] | 0) + carry; carry = w >> 26; this.words[i + shift] = w & 0x3ffffff; } if (carry === 0) return this._strip(); // Subtraction overflow assert(carry === -1); carry = 0; for (i = 0; i < this.length; i++) { w = -(this.words[i] | 0) + carry; carry = w >> 26; this.words[i] = w & 0x3ffffff; } this.negative = 1; return this._strip(); }; BN.prototype._wordDiv = function _wordDiv(num, mode) { var shift = this.length - num.length; var a = this.clone(); var b = num; // Normalize var bhi = b.words[b.length - 1] | 0; var bhiBits = this._countBits(bhi); shift = 26 - bhiBits; if (shift !== 0) { b = b.ushln(shift); a.iushln(shift); bhi = b.words[b.length - 1] | 0; } // Initialize quotient var m = a.length - b.length; var q; if (mode !== 'mod') { q = new BN(null); q.length = m + 1; q.words = new Array(q.length); for (var i = 0; i < q.length; i++) { q.words[i] = 0; } } var diff = a.clone()._ishlnsubmul(b, 1, m); if (diff.negative === 0) { a = diff; if (q) { q.words[m] = 1; } } for (var j = m - 1; j >= 0; j--) { var qj = (a.words[b.length + j] | 0) * 0x4000000 + (a.words[b.length + j - 1] | 0); // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max // (0x7ffffff) qj = Math.min(qj / bhi | 0, 0x3ffffff); a._ishlnsubmul(b, qj, j); while (a.negative !== 0) { qj--; a.negative = 0; a._ishlnsubmul(b, 1, j); if (!a.isZero()) { a.negative ^= 1; } } if (q) { q.words[j] = qj; } } if (q) { q._strip(); } a._strip(); // Denormalize if (mode !== 'div' && shift !== 0) { a.iushrn(shift); } return { div: q || null, mod: a }; }; // NOTE: 1) `mode` can be set to `mod` to request mod only, // to `div` to request div only, or be absent to // request both div & mod // 2) `positive` is true if unsigned mod is requested BN.prototype.divmod = function divmod(num, mode, positive) { assert(!num.isZero()); if (this.isZero()) { return { div: new BN(0), mod: new BN(0) }; } var div, mod, res; if (this.negative !== 0 && num.negative === 0) { res = this.neg().divmod(num, mode); if (mode !== 'mod') { div = res.div.neg(); } if (mode !== 'div') { mod = res.mod.neg(); if (positive && mod.negative !== 0) { mod.iadd(num); } } return { div: div, mod: mod }; } if (this.negative === 0 && num.negative !== 0) { res = this.divmod(num.neg(), mode); if (mode !== 'mod') { div = res.div.neg(); } return { div: div, mod: res.mod }; } if ((this.negative & num.negative) !== 0) { res = this.neg().divmod(num.neg(), mode); if (mode !== 'div') { mod = res.mod.neg(); if (positive && mod.negative !== 0) { mod.isub(num); } } return { div: res.div, mod: mod }; } // Both numbers are positive at this point // Strip both numbers to approximate shift value if (num.length > this.length || this.cmp(num) < 0) { return { div: new BN(0), mod: this }; } // Very short reduction if (num.length === 1) { if (mode === 'div') { return { div: this.divn(num.words[0]), mod: null }; } if (mode === 'mod') { return { div: null, mod: new BN(this.modrn(num.words[0])) }; } return { div: this.divn(num.words[0]), mod: new BN(this.modrn(num.words[0])) }; } return this._wordDiv(num, mode); }; // Find `this` / `num` BN.prototype.div = function div(num) { return this.divmod(num, 'div', false).div; }; // Find `this` % `num` BN.prototype.mod = function mod(num) { return this.divmod(num, 'mod', false).mod; }; BN.prototype.umod = function umod(num) { return this.divmod(num, 'mod', true).mod; }; // Find Round(`this` / `num`) BN.prototype.divRound = function divRound(num) { var dm = this.divmod(num); // Fast case - exact division if (dm.mod.isZero()) return dm.div; var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; var half = num.ushrn(1); var r2 = num.andln(1); var cmp = mod.cmp(half); // Round down if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; // Round up return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); }; BN.prototype.modrn = function modrn(num) { var isNegNum = num < 0; if (isNegNum) num = -num; assert(num <= 0x3ffffff); var p = (1 << 26) % num; var acc = 0; for (var i = this.length - 1; i >= 0; i--) { acc = (p * acc + (this.words[i] | 0)) % num; } return isNegNum ? -acc : acc; }; // WARNING: DEPRECATED BN.prototype.modn = function modn(num) { return this.modrn(num); }; // In-place division by number BN.prototype.idivn = function idivn(num) { var isNegNum = num < 0; if (isNegNum) num = -num; assert(num <= 0x3ffffff); var carry = 0; for (var i = this.length - 1; i >= 0; i--) { var w = (this.words[i] | 0) + carry * 0x4000000; this.words[i] = w / num | 0; carry = w % num; } this._strip(); return isNegNum ? this.ineg() : this; }; BN.prototype.divn = function divn(num) { return this.clone().idivn(num); }; BN.prototype.egcd = function egcd(p) { assert(p.negative === 0); assert(!p.isZero()); var x = this; var y = p.clone(); if (x.negative !== 0) { x = x.umod(p); } else { x = x.clone(); } // A * x + B * y = x var A = new BN(1); var B = new BN(0); // C * x + D * y = y var C = new BN(0); var D = new BN(1); var g = 0; while (x.isEven() && y.isEven()) { x.iushrn(1); y.iushrn(1); ++g; } var yp = y.clone(); var xp = x.clone(); while (!x.isZero()) { for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { ; } if (i > 0) { x.iushrn(i); while (i-- > 0) { if (A.isOdd() || B.isOdd()) { A.iadd(yp); B.isub(xp); } A.iushrn(1); B.iushrn(1); } } for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { ; } if (j > 0) { y.iushrn(j); while (j-- > 0) { if (C.isOdd() || D.isOdd()) { C.iadd(yp); D.isub(xp); } C.iushrn(1); D.iushrn(1); } } if (x.cmp(y) >= 0) { x.isub(y); A.isub(C); B.isub(D); } else { y.isub(x); C.isub(A); D.isub(B); } } return { a: C, b: D, gcd: y.iushln(g) }; }; // This is reduced incarnation of the binary EEA // above, designated to invert members of the // _prime_ fields F(p) at a maximal speed BN.prototype._invmp = function _invmp(p) { assert(p.negative === 0); assert(!p.isZero()); var a = this; var b = p.clone(); if (a.negative !== 0) { a = a.umod(p); } else { a = a.clone(); } var x1 = new BN(1); var x2 = new BN(0); var delta = b.clone(); while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1) { ; } if (i > 0) { a.iushrn(i); while (i-- > 0) { if (x1.isOdd()) { x1.iadd(delta); } x1.iushrn(1); } } for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1) { ; } if (j > 0) { b.iushrn(j); while (j-- > 0) { if (x2.isOdd()) { x2.iadd(delta); } x2.iushrn(1); } } if (a.cmp(b) >= 0) { a.isub(b); x1.isub(x2); } else { b.isub(a); x2.isub(x1); } } var res; if (a.cmpn(1) === 0) { res = x1; } else { res = x2; } if (res.cmpn(0) < 0) { res.iadd(p); } return res; }; BN.prototype.gcd = function gcd(num) { if (this.isZero()) return num.abs(); if (num.isZero()) return this.abs(); var a = this.clone(); var b = num.clone(); a.negative = 0; b.negative = 0; // Remove common factor of two for (var shift = 0; a.isEven() && b.isEven(); shift++) { a.iushrn(1); b.iushrn(1); } do { while (a.isEven()) { a.iushrn(1); } while (b.isEven()) { b.iushrn(1); } var r = a.cmp(b); if (r < 0) { // Swap `a` and `b` to make `a` always bigger than `b` var t = a; a = b; b = t; } else if (r === 0 || b.cmpn(1) === 0) { break; } a.isub(b); } while (true); return b.iushln(shift); }; // Invert number in the field F(num) BN.prototype.invm = function invm(num) { return this.egcd(num).a.umod(num); }; BN.prototype.isEven = function isEven() { return (this.words[0] & 1) === 0; }; BN.prototype.isOdd = function isOdd() { return (this.words[0] & 1) === 1; }; // And first word and num BN.prototype.andln = function andln(num) { return this.words[0] & num; }; // Increment at the bit position in-line BN.prototype.bincn = function bincn(bit) { assert(typeof bit === 'number'); var r = bit % 26; var s = (bit - r) / 26; var q = 1 << r; // Fast case: bit is much higher than all existing words if (this.length <= s) { this._expand(s + 1); this.words[s] |= q; return this; } // Add bit and propagate, if needed var carry = q; for (var i = s; carry !== 0 && i < this.length; i++) { var w = this.words[i] | 0; w += carry; carry = w >>> 26; w &= 0x3ffffff; this.words[i] = w; } if (carry !== 0) { this.words[i] = carry; this.length++; } return this; }; BN.prototype.isZero = function isZero() { return this.length === 1 && this.words[0] === 0; }; BN.prototype.cmpn = function cmpn(num) { var negative = num < 0; if (this.negative !== 0 && !negative) return -1; if (this.negative === 0 && negative) return 1; this._strip(); var res; if (this.length > 1) { res = 1; } else { if (negative) { num = -num; } assert(num <= 0x3ffffff, 'Number is too big'); var w = this.words[0] | 0; res = w === num ? 0 : w < num ? -1 : 1; } if (this.negative !== 0) return -res | 0; return res; }; // Compare two numbers and return: // 1 - if `this` > `num` // 0 - if `this` == `num` // -1 - if `this` < `num` BN.prototype.cmp = function cmp(num) { if (this.negative !== 0 && num.negative === 0) return -1; if (this.negative === 0 && num.negative !== 0) return 1; var res = this.ucmp(num); if (this.negative !== 0) return -res | 0; return res; }; // Unsigned comparison BN.prototype.ucmp = function ucmp(num) { // At this point both numbers have the same sign if (this.length > num.length) return 1; if (this.length < num.length) return -1; var res = 0; for (var i = this.length - 1; i >= 0; i--) { var a = this.words[i] | 0; var b = num.words[i] | 0; if (a === b) continue; if (a < b) { res = -1; } else if (a > b) { res = 1; } break; } return res; }; BN.prototype.gtn = function gtn(num) { return this.cmpn(num) === 1; }; BN.prototype.gt = function gt(num) { return this.cmp(num) === 1; }; BN.prototype.gten = function gten(num) { return this.cmpn(num) >= 0; }; BN.prototype.gte = function gte(num) { return this.cmp(num) >= 0; }; BN.prototype.ltn = function ltn(num) { return this.cmpn(num) === -1; }; BN.prototype.lt = function lt(num) { return this.cmp(num) === -1; }; BN.prototype.lten = function lten(num) { return this.cmpn(num) <= 0; }; BN.prototype.lte = function lte(num) { return this.cmp(num) <= 0; }; BN.prototype.eqn = function eqn(num) { return this.cmpn(num) === 0; }; BN.prototype.eq = function eq(num) { return this.cmp(num) === 0; }; // // A reduce context, could be using montgomery or something better, depending // on the `m` itself. // BN.red = function red(num) { return new Red(num); }; BN.prototype.toRed = function toRed(ctx) { assert(!this.red, 'Already a number in reduction context'); assert(this.negative === 0, 'red works only with positives'); return ctx.convertTo(this)._forceRed(ctx); }; BN.prototype.fromRed = function fromRed() { assert(this.red, 'fromRed works only with numbers in reduction context'); return this.red.convertFrom(this); }; BN.prototype._forceRed = function _forceRed(ctx) { this.red = ctx; return this; }; BN.prototype.forceRed = function forceRed(ctx) { assert(!this.red, 'Already a number in reduction context'); return this._forceRed(ctx); }; BN.prototype.redAdd = function redAdd(num) { assert(this.red, 'redAdd works only with red numbers'); return this.red.add(this, num); }; BN.prototype.redIAdd = function redIAdd(num) { assert(this.red, 'redIAdd works only with red numbers'); return this.red.iadd(this, num); }; BN.prototype.redSub = function redSub(num) { assert(this.red, 'redSub works only with red numbers'); return this.red.sub(this, num); }; BN.prototype.redISub = function redISub(num) { assert(this.red, 'redISub works only with red numbers'); return this.red.isub(this, num); }; BN.prototype.redShl = function redShl(num) { assert(this.red, 'redShl works only with red numbers'); return this.red.shl(this, num); }; BN.prototype.redMul = function redMul(num) { assert(this.red, 'redMul works only with red numbers'); this.red._verify2(this, num); return this.red.mul(this, num); }; BN.prototype.redIMul = function redIMul(num) { assert(this.red, 'redMul works only with red numbers'); this.red._verify2(this, num); return this.red.imul(this, num); }; BN.prototype.redSqr = function redSqr() { assert(this.red, 'redSqr works only with red numbers'); this.red._verify1(this); return this.red.sqr(this); }; BN.prototype.redISqr = function redISqr() { assert(this.red, 'redISqr works only with red numbers'); this.red._verify1(this); return this.red.isqr(this); }; // Square root over p BN.prototype.redSqrt = function redSqrt() { assert(this.red, 'redSqrt works only with red numbers'); this.red._verify1(this); return this.red.sqrt(this); }; BN.prototype.redInvm = function redInvm() { assert(this.red, 'redInvm works only with red numbers'); this.red._verify1(this); return this.red.invm(this); }; // Return negative clone of `this` % `red modulo` BN.prototype.redNeg = function redNeg() { assert(this.red, 'redNeg works only with red numbers'); this.red._verify1(this); return this.red.neg(this); }; BN.prototype.redPow = function redPow(num) { assert(this.red && !num.red, 'redPow(normalNum)'); this.red._verify1(this); return this.red.pow(this, num); }; // Prime numbers with efficient reduction var primes = { k256: null, p224: null, p192: null, p25519: null }; // Pseudo-Mersenne prime function MPrime(name, p) { // P = 2 ^ N - K this.name = name; this.p = new BN(p, 16); this.n = this.p.bitLength(); this.k = new BN(1).iushln(this.n).isub(this.p); this.tmp = this._tmp(); } MPrime.prototype._tmp = function _tmp() { var tmp = new BN(null); tmp.words = new Array(Math.ceil(this.n / 13)); return tmp; }; MPrime.prototype.ireduce = function ireduce(num) { // Assumes that `num` is less than `P^2` // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) var r = num; var rlen; do { this.split(r, this.tmp); r = this.imulK(r); r = r.iadd(this.tmp); rlen = r.bitLength(); } while (rlen > this.n); var cmp = rlen < this.n ? -1 : r.ucmp(this.p); if (cmp === 0) { r.words[0] = 0; r.length = 1; } else if (cmp > 0) { r.isub(this.p); } else { if (r.strip !== undefined) { // r is a BN v4 instance r.strip(); } else { // r is a BN v5 instance r._strip(); } } return r; }; MPrime.prototype.split = function split(input, out) { input.iushrn(this.n, 0, out); }; MPrime.prototype.imulK = function imulK(num) { return num.imul(this.k); }; function K256() { MPrime.call(this, 'k256', 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); } inherits(K256, MPrime); K256.prototype.split = function split(input, output) { // 256 = 9 * 26 + 22 var mask = 0x3fffff; var outLen = Math.min(input.length, 9); for (var i = 0; i < outLen; i++) { output.words[i] = input.words[i]; } output.length = outLen; if (input.length <= 9) { input.words[0] = 0; input.length = 1; return; } // Shift by 9 limbs var prev = input.words[9]; output.words[output.length++] = prev & mask; for (i = 10; i < input.length; i++) { var next = input.words[i] | 0; input.words[i - 10] = (next & mask) << 4 | prev >>> 22; prev = next; } prev >>>= 22; input.words[i - 10] = prev; if (prev === 0 && input.length > 10) { input.length -= 10; } else { input.length -= 9; } }; K256.prototype.imulK = function imulK(num) { // K = 0x1000003d1 = [ 0x40, 0x3d1 ] num.words[num.length] = 0; num.words[num.length + 1] = 0; num.length += 2; // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 var lo = 0; for (var i = 0; i < num.length; i++) { var w = num.words[i] | 0; lo += w * 0x3d1; num.words[i] = lo & 0x3ffffff; lo = w * 0x40 + (lo / 0x4000000 | 0); } // Fast length reduction if (num.words[num.length - 1] === 0) { num.length--; if (num.words[num.length - 1] === 0) { num.length--; } } return num; }; function P224() { MPrime.call(this, 'p224', 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); } inherits(P224, MPrime); function P192() { MPrime.call(this, 'p192', 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); } inherits(P192, MPrime); function P25519() { // 2 ^ 255 - 19 MPrime.call(this, '25519', '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); } inherits(P25519, MPrime); P25519.prototype.imulK = function imulK(num) { // K = 0x13 var carry = 0; for (var i = 0; i < num.length; i++) { var hi = (num.words[i] | 0) * 0x13 + carry; var lo = hi & 0x3ffffff; hi >>>= 26; num.words[i] = lo; carry = hi; } if (carry !== 0) { num.words[num.length++] = carry; } return num; }; // Exported mostly for testing purposes, use plain name instead BN._prime = function prime(name) { // Cached version of prime if (primes[name]) return primes[name]; var prime; if (name === 'k256') { prime = new K256(); } else if (name === 'p224') { prime = new P224(); } else if (name === 'p192') { prime = new P192(); } else if (name === 'p25519') { prime = new P25519(); } else { throw new Error('Unknown prime ' + name); } primes[name] = prime; return prime; }; // // Base reduction engine // function Red(m) { if (typeof m === 'string') { var prime = BN._prime(m); this.m = prime.p; this.prime = prime; } else { assert(m.gtn(1), 'modulus must be greater than 1'); this.m = m; this.prime = null; } } Red.prototype._verify1 = function _verify1(a) { assert(a.negative === 0, 'red works only with positives'); assert(a.red, 'red works only with red numbers'); }; Red.prototype._verify2 = function _verify2(a, b) { assert((a.negative | b.negative) === 0, 'red works only with positives'); assert(a.red && a.red === b.red, 'red works only with red numbers'); }; Red.prototype.imod = function imod(a) { if (this.prime) return this.prime.ireduce(a)._forceRed(this); move(a, a.umod(this.m)._forceRed(this)); return a; }; Red.prototype.neg = function neg(a) { if (a.isZero()) { return a.clone(); } return this.m.sub(a)._forceRed(this); }; Red.prototype.add = function add(a, b) { this._verify2(a, b); var res = a.add(b); if (res.cmp(this.m) >= 0) { res.isub(this.m); } return res._forceRed(this); }; Red.prototype.iadd = function iadd(a, b) { this._verify2(a, b); var res = a.iadd(b); if (res.cmp(this.m) >= 0) { res.isub(this.m); } return res; }; Red.prototype.sub = function sub(a, b) { this._verify2(a, b); var res = a.sub(b); if (res.cmpn(0) < 0) { res.iadd(this.m); } return res._forceRed(this); }; Red.prototype.isub = function isub(a, b) { this._verify2(a, b); var res = a.isub(b); if (res.cmpn(0) < 0) { res.iadd(this.m); } return res; }; Red.prototype.shl = function shl(a, num) { this._verify1(a); return this.imod(a.ushln(num)); }; Red.prototype.imul = function imul(a, b) { this._verify2(a, b); return this.imod(a.imul(b)); }; Red.prototype.mul = function mul(a, b) { this._verify2(a, b); return this.imod(a.mul(b)); }; Red.prototype.isqr = function isqr(a) { return this.imul(a, a.clone()); }; Red.prototype.sqr = function sqr(a) { return this.mul(a, a); }; Red.prototype.sqrt = function sqrt(a) { if (a.isZero()) return a.clone(); var mod3 = this.m.andln(3); assert(mod3 % 2 === 1); // Fast case if (mod3 === 3) { var pow = this.m.add(new BN(1)).iushrn(2); return this.pow(a, pow); } // Tonelli-Shanks algorithm (Totally unoptimized and slow) // // Find Q and S, that Q * 2 ^ S = (P - 1) var q = this.m.subn(1); var s = 0; while (!q.isZero() && q.andln(1) === 0) { s++; q.iushrn(1); } assert(!q.isZero()); var one = new BN(1).toRed(this); var nOne = one.redNeg(); // Find quadratic non-residue // NOTE: Max is such because of generalized Riemann hypothesis. var lpow = this.m.subn(1).iushrn(1); var z = this.m.bitLength(); z = new BN(2 * z * z).toRed(this); while (this.pow(z, lpow).cmp(nOne) !== 0) { z.redIAdd(nOne); } var c = this.pow(z, q); var r = this.pow(a, q.addn(1).iushrn(1)); var t = this.pow(a, q); var m = s; while (t.cmp(one) !== 0) { var tmp = t; for (var i = 0; tmp.cmp(one) !== 0; i++) { tmp = tmp.redSqr(); } assert(i < m); var b = this.pow(c, new BN(1).iushln(m - i - 1)); r = r.redMul(b); c = b.redSqr(); t = t.redMul(c); m = i; } return r; }; Red.prototype.invm = function invm(a) { var inv = a._invmp(this.m); if (inv.negative !== 0) { inv.negative = 0; return this.imod(inv).redNeg(); } else { return this.imod(inv); } }; Red.prototype.pow = function pow(a, num) { if (num.isZero()) return new BN(1).toRed(this); if (num.cmpn(1) === 0) return a.clone(); var windowSize = 4; var wnd = new Array(1 << windowSize); wnd[0] = new BN(1).toRed(this); wnd[1] = a; for (var i = 2; i < wnd.length; i++) { wnd[i] = this.mul(wnd[i - 1], a); } var res = wnd[0]; var current = 0; var currentLen = 0; var start = num.bitLength() % 26; if (start === 0) { start = 26; } for (i = num.length - 1; i >= 0; i--) { var word = num.words[i]; for (var j = start - 1; j >= 0; j--) { var bit = word >> j & 1; if (res !== wnd[0]) { res = this.sqr(res); } if (bit === 0 && current === 0) { currentLen = 0; continue; } current <<= 1; current |= bit; currentLen++; if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; res = this.mul(res, wnd[current]); currentLen = 0; current = 0; } start = 26; } return res; }; Red.prototype.convertTo = function convertTo(num) { var r = num.umod(this.m); return r === num ? r.clone() : r; }; Red.prototype.convertFrom = function convertFrom(num) { var res = num.clone(); res.red = null; return res; }; // // Montgomery method engine // BN.mont = function mont(num) { return new Mont(num); }; function Mont(m) { Red.call(this, m); this.shift = this.m.bitLength(); if (this.shift % 26 !== 0) { this.shift += 26 - this.shift % 26; } this.r = new BN(1).iushln(this.shift); this.r2 = this.imod(this.r.sqr()); this.rinv = this.r._invmp(this.m); this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); this.minv = this.minv.umod(this.r); this.minv = this.r.sub(this.minv); } inherits(Mont, Red); Mont.prototype.convertTo = function convertTo(num) { return this.imod(num.ushln(this.shift)); }; Mont.prototype.convertFrom = function convertFrom(num) { var r = this.imod(num.mul(this.rinv)); r.red = null; return r; }; Mont.prototype.imul = function imul(a, b) { if (a.isZero() || b.isZero()) { a.words[0] = 0; a.length = 1; return a; } var t = a.imul(b); var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); var u = t.isub(c).iushrn(this.shift); var res = u; if (u.cmp(this.m) >= 0) { res = u.isub(this.m); } else if (u.cmpn(0) < 0) { res = u.iadd(this.m); } return res._forceRed(this); }; Mont.prototype.mul = function mul(a, b) { if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); var t = a.mul(b); var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); var u = t.isub(c).iushrn(this.shift); var res = u; if (u.cmp(this.m) >= 0) { res = u.isub(this.m); } else if (u.cmpn(0) < 0) { res = u.iadd(this.m); } return res._forceRed(this); }; Mont.prototype.invm = function invm(a) { // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R var res = this.imod(a._invmp(this.m).mul(this.r2)); return res._forceRed(this); }; })(typeof module === 'undefined' || module, void 0); },{"buffer":185}],184:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var r; module.exports = function rand(len) { if (!r) r = new Rand(null); return r.generate(len); }; function Rand(rand) { this.rand = rand; } module.exports.Rand = Rand; Rand.prototype.generate = function generate(len) { return this._rand(len); }; // Emulate crypto API using randy Rand.prototype._rand = function _rand(n) { if (this.rand.getBytes) return this.rand.getBytes(n); var res = new Uint8Array(n); for (var i = 0; i < res.length; i++) { res[i] = this.rand.getByte(); } return res; }; if ((typeof self === "undefined" ? "undefined" : _typeof(self)) === 'object') { if (self.crypto && self.crypto.getRandomValues) { // Modern browsers Rand.prototype._rand = function _rand(n) { var arr = new Uint8Array(n); self.crypto.getRandomValues(arr); return arr; }; } else if (self.msCrypto && self.msCrypto.getRandomValues) { // IE Rand.prototype._rand = function _rand(n) { var arr = new Uint8Array(n); self.msCrypto.getRandomValues(arr); return arr; }; // Safari's WebWorkers do not have `crypto` } else if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object') { // Old junk Rand.prototype._rand = function () { throw new Error('Not implemented yet'); }; } } else { // Node.js or Web worker with no crypto support try { var crypto = require('crypto'); if (typeof crypto.randomBytes !== 'function') throw new Error('Not supported'); Rand.prototype._rand = function _rand(n) { return crypto.randomBytes(n); }; } catch (e) {} } },{"crypto":185}],185:[function(require,module,exports){ "use strict"; },{}],186:[function(require,module,exports){ "use strict"; // based on the aes implimentation in triple sec // https://github.com/keybase/triplesec // which is in turn based on the one from crypto-js // https://code.google.com/p/crypto-js/ var Buffer = require('safe-buffer').Buffer; function asUInt32Array(buf) { if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf); var len = buf.length / 4 | 0; var out = new Array(len); for (var i = 0; i < len; i++) { out[i] = buf.readUInt32BE(i * 4); } return out; } function scrubVec(v) { for (var i = 0; i < v.length; v++) { v[i] = 0; } } function cryptBlock(M, keySchedule, SUB_MIX, SBOX, nRounds) { var SUB_MIX0 = SUB_MIX[0]; var SUB_MIX1 = SUB_MIX[1]; var SUB_MIX2 = SUB_MIX[2]; var SUB_MIX3 = SUB_MIX[3]; var s0 = M[0] ^ keySchedule[0]; var s1 = M[1] ^ keySchedule[1]; var s2 = M[2] ^ keySchedule[2]; var s3 = M[3] ^ keySchedule[3]; var t0, t1, t2, t3; var ksRow = 4; for (var round = 1; round < nRounds; round++) { t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[s1 >>> 16 & 0xff] ^ SUB_MIX2[s2 >>> 8 & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]; t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[s2 >>> 16 & 0xff] ^ SUB_MIX2[s3 >>> 8 & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]; t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[s3 >>> 16 & 0xff] ^ SUB_MIX2[s0 >>> 8 & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]; t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[s0 >>> 16 & 0xff] ^ SUB_MIX2[s1 >>> 8 & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]; s0 = t0; s1 = t1; s2 = t2; s3 = t3; } t0 = (SBOX[s0 >>> 24] << 24 | SBOX[s1 >>> 16 & 0xff] << 16 | SBOX[s2 >>> 8 & 0xff] << 8 | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]; t1 = (SBOX[s1 >>> 24] << 24 | SBOX[s2 >>> 16 & 0xff] << 16 | SBOX[s3 >>> 8 & 0xff] << 8 | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]; t2 = (SBOX[s2 >>> 24] << 24 | SBOX[s3 >>> 16 & 0xff] << 16 | SBOX[s0 >>> 8 & 0xff] << 8 | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]; t3 = (SBOX[s3 >>> 24] << 24 | SBOX[s0 >>> 16 & 0xff] << 16 | SBOX[s1 >>> 8 & 0xff] << 8 | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]; t0 = t0 >>> 0; t1 = t1 >>> 0; t2 = t2 >>> 0; t3 = t3 >>> 0; return [t0, t1, t2, t3]; } // AES constants var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; var G = function () { // Compute double table var d = new Array(256); for (var j = 0; j < 256; j++) { if (j < 128) { d[j] = j << 1; } else { d[j] = j << 1 ^ 0x11b; } } var SBOX = []; var INV_SBOX = []; var SUB_MIX = [[], [], [], []]; var INV_SUB_MIX = [[], [], [], []]; // Walk GF(2^8) var x = 0; var xi = 0; for (var i = 0; i < 256; ++i) { // Compute sbox var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4; sx = sx >>> 8 ^ sx & 0xff ^ 0x63; SBOX[x] = sx; INV_SBOX[sx] = x; // Compute multiplication var x2 = d[x]; var x4 = d[x2]; var x8 = d[x4]; // Compute sub bytes, mix columns tables var t = d[sx] * 0x101 ^ sx * 0x1010100; SUB_MIX[0][x] = t << 24 | t >>> 8; SUB_MIX[1][x] = t << 16 | t >>> 16; SUB_MIX[2][x] = t << 8 | t >>> 24; SUB_MIX[3][x] = t; // Compute inv sub bytes, inv mix columns tables t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; INV_SUB_MIX[0][sx] = t << 24 | t >>> 8; INV_SUB_MIX[1][sx] = t << 16 | t >>> 16; INV_SUB_MIX[2][sx] = t << 8 | t >>> 24; INV_SUB_MIX[3][sx] = t; if (x === 0) { x = xi = 1; } else { x = x2 ^ d[d[d[x8 ^ x2]]]; xi ^= d[d[xi]]; } } return { SBOX: SBOX, INV_SBOX: INV_SBOX, SUB_MIX: SUB_MIX, INV_SUB_MIX: INV_SUB_MIX }; }(); function AES(key) { this._key = asUInt32Array(key); this._reset(); } AES.blockSize = 4 * 4; AES.keySize = 256 / 8; AES.prototype.blockSize = AES.blockSize; AES.prototype.keySize = AES.keySize; AES.prototype._reset = function () { var keyWords = this._key; var keySize = keyWords.length; var nRounds = keySize + 6; var ksRows = (nRounds + 1) * 4; var keySchedule = []; for (var k = 0; k < keySize; k++) { keySchedule[k] = keyWords[k]; } for (k = keySize; k < ksRows; k++) { var t = keySchedule[k - 1]; if (k % keySize === 0) { t = t << 8 | t >>> 24; t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff]; t ^= RCON[k / keySize | 0] << 24; } else if (keySize > 6 && k % keySize === 4) { t = G.SBOX[t >>> 24] << 24 | G.SBOX[t >>> 16 & 0xff] << 16 | G.SBOX[t >>> 8 & 0xff] << 8 | G.SBOX[t & 0xff]; } keySchedule[k] = keySchedule[k - keySize] ^ t; } var invKeySchedule = []; for (var ik = 0; ik < ksRows; ik++) { var ksR = ksRows - ik; var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]; if (ik < 4 || ksR <= 4) { invKeySchedule[ik] = tt; } else { invKeySchedule[ik] = G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ G.INV_SUB_MIX[1][G.SBOX[tt >>> 16 & 0xff]] ^ G.INV_SUB_MIX[2][G.SBOX[tt >>> 8 & 0xff]] ^ G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]; } } this._nRounds = nRounds; this._keySchedule = keySchedule; this._invKeySchedule = invKeySchedule; }; AES.prototype.encryptBlockRaw = function (M) { M = asUInt32Array(M); return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds); }; AES.prototype.encryptBlock = function (M) { var out = this.encryptBlockRaw(M); var buf = Buffer.allocUnsafe(16); buf.writeUInt32BE(out[0], 0); buf.writeUInt32BE(out[1], 4); buf.writeUInt32BE(out[2], 8); buf.writeUInt32BE(out[3], 12); return buf; }; AES.prototype.decryptBlock = function (M) { M = asUInt32Array(M); // swap var m1 = M[1]; M[1] = M[3]; M[3] = m1; var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds); var buf = Buffer.allocUnsafe(16); buf.writeUInt32BE(out[0], 0); buf.writeUInt32BE(out[3], 4); buf.writeUInt32BE(out[2], 8); buf.writeUInt32BE(out[1], 12); return buf; }; AES.prototype.scrub = function () { scrubVec(this._keySchedule); scrubVec(this._invKeySchedule); scrubVec(this._key); }; module.exports.AES = AES; },{"safe-buffer":494}],187:[function(require,module,exports){ "use strict"; var aes = require('./aes'); var Buffer = require('safe-buffer').Buffer; var Transform = require('cipher-base'); var inherits = require('inherits'); var GHASH = require('./ghash'); var xor = require('buffer-xor'); var incr32 = require('./incr32'); function xorTest(a, b) { var out = 0; if (a.length !== b.length) out++; var len = Math.min(a.length, b.length); for (var i = 0; i < len; ++i) { out += a[i] ^ b[i]; } return out; } function calcIv(self, iv, ck) { if (iv.length === 12) { self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]); return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]); } var ghash = new GHASH(ck); var len = iv.length; var toPad = len % 16; ghash.update(iv); if (toPad) { toPad = 16 - toPad; ghash.update(Buffer.alloc(toPad, 0)); } ghash.update(Buffer.alloc(8, 0)); var ivBits = len * 8; var tail = Buffer.alloc(8); tail.writeUIntBE(ivBits, 0, 8); ghash.update(tail); self._finID = ghash.state; var out = Buffer.from(self._finID); incr32(out); return out; } function StreamCipher(mode, key, iv, decrypt) { Transform.call(this); var h = Buffer.alloc(4, 0); this._cipher = new aes.AES(key); var ck = this._cipher.encryptBlock(h); this._ghash = new GHASH(ck); iv = calcIv(this, iv, ck); this._prev = Buffer.from(iv); this._cache = Buffer.allocUnsafe(0); this._secCache = Buffer.allocUnsafe(0); this._decrypt = decrypt; this._alen = 0; this._len = 0; this._mode = mode; this._authTag = null; this._called = false; } inherits(StreamCipher, Transform); StreamCipher.prototype._update = function (chunk) { if (!this._called && this._alen) { var rump = 16 - this._alen % 16; if (rump < 16) { rump = Buffer.alloc(rump, 0); this._ghash.update(rump); } } this._called = true; var out = this._mode.encrypt(this, chunk); if (this._decrypt) { this._ghash.update(chunk); } else { this._ghash.update(out); } this._len += chunk.length; return out; }; StreamCipher.prototype._final = function () { if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data'); var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)); if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data'); this._authTag = tag; this._cipher.scrub(); }; StreamCipher.prototype.getAuthTag = function getAuthTag() { if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state'); return this._authTag; }; StreamCipher.prototype.setAuthTag = function setAuthTag(tag) { if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state'); this._authTag = tag; }; StreamCipher.prototype.setAAD = function setAAD(buf) { if (this._called) throw new Error('Attempting to set AAD in unsupported state'); this._ghash.update(buf); this._alen += buf.length; }; module.exports = StreamCipher; },{"./aes":186,"./ghash":191,"./incr32":192,"buffer-xor":217,"cipher-base":218,"inherits":387,"safe-buffer":494}],188:[function(require,module,exports){ "use strict"; var ciphers = require('./encrypter'); var deciphers = require('./decrypter'); var modes = require('./modes/list.json'); function getCiphers() { return Object.keys(modes); } exports.createCipher = exports.Cipher = ciphers.createCipher; exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv; exports.createDecipher = exports.Decipher = deciphers.createDecipher; exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv; exports.listCiphers = exports.getCiphers = getCiphers; },{"./decrypter":189,"./encrypter":190,"./modes/list.json":200}],189:[function(require,module,exports){ "use strict"; var AuthCipher = require('./authCipher'); var Buffer = require('safe-buffer').Buffer; var MODES = require('./modes'); var StreamCipher = require('./streamCipher'); var Transform = require('cipher-base'); var aes = require('./aes'); var ebtk = require('evp_bytestokey'); var inherits = require('inherits'); function Decipher(mode, key, iv) { Transform.call(this); this._cache = new Splitter(); this._last = void 0; this._cipher = new aes.AES(key); this._prev = Buffer.from(iv); this._mode = mode; this._autopadding = true; } inherits(Decipher, Transform); Decipher.prototype._update = function (data) { this._cache.add(data); var chunk; var thing; var out = []; while (chunk = this._cache.get(this._autopadding)) { thing = this._mode.decrypt(this, chunk); out.push(thing); } return Buffer.concat(out); }; Decipher.prototype._final = function () { var chunk = this._cache.flush(); if (this._autopadding) { return unpad(this._mode.decrypt(this, chunk)); } else if (chunk) { throw new Error('data not multiple of block length'); } }; Decipher.prototype.setAutoPadding = function (setTo) { this._autopadding = !!setTo; return this; }; function Splitter() { this.cache = Buffer.allocUnsafe(0); } Splitter.prototype.add = function (data) { this.cache = Buffer.concat([this.cache, data]); }; Splitter.prototype.get = function (autoPadding) { var out; if (autoPadding) { if (this.cache.length > 16) { out = this.cache.slice(0, 16); this.cache = this.cache.slice(16); return out; } } else { if (this.cache.length >= 16) { out = this.cache.slice(0, 16); this.cache = this.cache.slice(16); return out; } } return null; }; Splitter.prototype.flush = function () { if (this.cache.length) return this.cache; }; function unpad(last) { var padded = last[15]; if (padded < 1 || padded > 16) { throw new Error('unable to decrypt data'); } var i = -1; while (++i < padded) { if (last[i + (16 - padded)] !== padded) { throw new Error('unable to decrypt data'); } } if (padded === 16) return; return last.slice(0, 16 - padded); } function createDecipheriv(suite, password, iv) { var config = MODES[suite.toLowerCase()]; if (!config) throw new TypeError('invalid suite type'); if (typeof iv === 'string') iv = Buffer.from(iv); if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length); if (typeof password === 'string') password = Buffer.from(password); if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length); if (config.type === 'stream') { return new StreamCipher(config.module, password, iv, true); } else if (config.type === 'auth') { return new AuthCipher(config.module, password, iv, true); } return new Decipher(config.module, password, iv); } function createDecipher(suite, password) { var config = MODES[suite.toLowerCase()]; if (!config) throw new TypeError('invalid suite type'); var keys = ebtk(password, false, config.key, config.iv); return createDecipheriv(suite, keys.key, keys.iv); } exports.createDecipher = createDecipher; exports.createDecipheriv = createDecipheriv; },{"./aes":186,"./authCipher":187,"./modes":199,"./streamCipher":202,"cipher-base":218,"evp_bytestokey":368,"inherits":387,"safe-buffer":494}],190:[function(require,module,exports){ "use strict"; var MODES = require('./modes'); var AuthCipher = require('./authCipher'); var Buffer = require('safe-buffer').Buffer; var StreamCipher = require('./streamCipher'); var Transform = require('cipher-base'); var aes = require('./aes'); var ebtk = require('evp_bytestokey'); var inherits = require('inherits'); function Cipher(mode, key, iv) { Transform.call(this); this._cache = new Splitter(); this._cipher = new aes.AES(key); this._prev = Buffer.from(iv); this._mode = mode; this._autopadding = true; } inherits(Cipher, Transform); Cipher.prototype._update = function (data) { this._cache.add(data); var chunk; var thing; var out = []; while (chunk = this._cache.get()) { thing = this._mode.encrypt(this, chunk); out.push(thing); } return Buffer.concat(out); }; var PADDING = Buffer.alloc(16, 0x10); Cipher.prototype._final = function () { var chunk = this._cache.flush(); if (this._autopadding) { chunk = this._mode.encrypt(this, chunk); this._cipher.scrub(); return chunk; } if (!chunk.equals(PADDING)) { this._cipher.scrub(); throw new Error('data not multiple of block length'); } }; Cipher.prototype.setAutoPadding = function (setTo) { this._autopadding = !!setTo; return this; }; function Splitter() { this.cache = Buffer.allocUnsafe(0); } Splitter.prototype.add = function (data) { this.cache = Buffer.concat([this.cache, data]); }; Splitter.prototype.get = function () { if (this.cache.length > 15) { var out = this.cache.slice(0, 16); this.cache = this.cache.slice(16); return out; } return null; }; Splitter.prototype.flush = function () { var len = 16 - this.cache.length; var padBuff = Buffer.allocUnsafe(len); var i = -1; while (++i < len) { padBuff.writeUInt8(len, i); } return Buffer.concat([this.cache, padBuff]); }; function createCipheriv(suite, password, iv) { var config = MODES[suite.toLowerCase()]; if (!config) throw new TypeError('invalid suite type'); if (typeof password === 'string') password = Buffer.from(password); if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length); if (typeof iv === 'string') iv = Buffer.from(iv); if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length); if (config.type === 'stream') { return new StreamCipher(config.module, password, iv); } else if (config.type === 'auth') { return new AuthCipher(config.module, password, iv); } return new Cipher(config.module, password, iv); } function createCipher(suite, password) { var config = MODES[suite.toLowerCase()]; if (!config) throw new TypeError('invalid suite type'); var keys = ebtk(password, false, config.key, config.iv); return createCipheriv(suite, keys.key, keys.iv); } exports.createCipheriv = createCipheriv; exports.createCipher = createCipher; },{"./aes":186,"./authCipher":187,"./modes":199,"./streamCipher":202,"cipher-base":218,"evp_bytestokey":368,"inherits":387,"safe-buffer":494}],191:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; var ZEROES = Buffer.alloc(16, 0); function toArray(buf) { return [buf.readUInt32BE(0), buf.readUInt32BE(4), buf.readUInt32BE(8), buf.readUInt32BE(12)]; } function fromArray(out) { var buf = Buffer.allocUnsafe(16); buf.writeUInt32BE(out[0] >>> 0, 0); buf.writeUInt32BE(out[1] >>> 0, 4); buf.writeUInt32BE(out[2] >>> 0, 8); buf.writeUInt32BE(out[3] >>> 0, 12); return buf; } function GHASH(key) { this.h = key; this.state = Buffer.alloc(16, 0); this.cache = Buffer.allocUnsafe(0); } // from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html // by Juho Vähä-Herttua GHASH.prototype.ghash = function (block) { var i = -1; while (++i < block.length) { this.state[i] ^= block[i]; } this._multiply(); }; GHASH.prototype._multiply = function () { var Vi = toArray(this.h); var Zi = [0, 0, 0, 0]; var j, xi, lsbVi; var i = -1; while (++i < 128) { xi = (this.state[~~(i / 8)] & 1 << 7 - i % 8) !== 0; if (xi) { // Z_i+1 = Z_i ^ V_i Zi[0] ^= Vi[0]; Zi[1] ^= Vi[1]; Zi[2] ^= Vi[2]; Zi[3] ^= Vi[3]; } // Store the value of LSB(V_i) lsbVi = (Vi[3] & 1) !== 0; // V_i+1 = V_i >> 1 for (j = 3; j > 0; j--) { Vi[j] = Vi[j] >>> 1 | (Vi[j - 1] & 1) << 31; } Vi[0] = Vi[0] >>> 1; // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R if (lsbVi) { Vi[0] = Vi[0] ^ 0xe1 << 24; } } this.state = fromArray(Zi); }; GHASH.prototype.update = function (buf) { this.cache = Buffer.concat([this.cache, buf]); var chunk; while (this.cache.length >= 16) { chunk = this.cache.slice(0, 16); this.cache = this.cache.slice(16); this.ghash(chunk); } }; GHASH.prototype.final = function (abl, bl) { if (this.cache.length) { this.ghash(Buffer.concat([this.cache, ZEROES], 16)); } this.ghash(fromArray([0, abl, 0, bl])); return this.state; }; module.exports = GHASH; },{"safe-buffer":494}],192:[function(require,module,exports){ "use strict"; function incr32(iv) { var len = iv.length; var item; while (len--) { item = iv.readUInt8(len); if (item === 255) { iv.writeUInt8(0, len); } else { item++; iv.writeUInt8(item, len); break; } } } module.exports = incr32; },{}],193:[function(require,module,exports){ "use strict"; var xor = require('buffer-xor'); exports.encrypt = function (self, block) { var data = xor(block, self._prev); self._prev = self._cipher.encryptBlock(data); return self._prev; }; exports.decrypt = function (self, block) { var pad = self._prev; self._prev = block; var out = self._cipher.decryptBlock(block); return xor(out, pad); }; },{"buffer-xor":217}],194:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; var xor = require('buffer-xor'); function encryptStart(self, data, decrypt) { var len = data.length; var out = xor(data, self._cache); self._cache = self._cache.slice(len); self._prev = Buffer.concat([self._prev, decrypt ? data : out]); return out; } exports.encrypt = function (self, data, decrypt) { var out = Buffer.allocUnsafe(0); var len; while (data.length) { if (self._cache.length === 0) { self._cache = self._cipher.encryptBlock(self._prev); self._prev = Buffer.allocUnsafe(0); } if (self._cache.length <= data.length) { len = self._cache.length; out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)]); data = data.slice(len); } else { out = Buffer.concat([out, encryptStart(self, data, decrypt)]); break; } } return out; }; },{"buffer-xor":217,"safe-buffer":494}],195:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; function encryptByte(self, byteParam, decrypt) { var pad; var i = -1; var len = 8; var out = 0; var bit, value; while (++i < len) { pad = self._cipher.encryptBlock(self._prev); bit = byteParam & 1 << 7 - i ? 0x80 : 0; value = pad[0] ^ bit; out += (value & 0x80) >> i % 8; self._prev = shiftIn(self._prev, decrypt ? bit : value); } return out; } function shiftIn(buffer, value) { var len = buffer.length; var i = -1; var out = Buffer.allocUnsafe(buffer.length); buffer = Buffer.concat([buffer, Buffer.from([value])]); while (++i < len) { out[i] = buffer[i] << 1 | buffer[i + 1] >> 7; } return out; } exports.encrypt = function (self, chunk, decrypt) { var len = chunk.length; var out = Buffer.allocUnsafe(len); var i = -1; while (++i < len) { out[i] = encryptByte(self, chunk[i], decrypt); } return out; }; },{"safe-buffer":494}],196:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; function encryptByte(self, byteParam, decrypt) { var pad = self._cipher.encryptBlock(self._prev); var out = pad[0] ^ byteParam; self._prev = Buffer.concat([self._prev.slice(1), Buffer.from([decrypt ? byteParam : out])]); return out; } exports.encrypt = function (self, chunk, decrypt) { var len = chunk.length; var out = Buffer.allocUnsafe(len); var i = -1; while (++i < len) { out[i] = encryptByte(self, chunk[i], decrypt); } return out; }; },{"safe-buffer":494}],197:[function(require,module,exports){ "use strict"; var xor = require('buffer-xor'); var Buffer = require('safe-buffer').Buffer; var incr32 = require('../incr32'); function getBlock(self) { var out = self._cipher.encryptBlockRaw(self._prev); incr32(self._prev); return out; } var blockSize = 16; exports.encrypt = function (self, chunk) { var chunkNum = Math.ceil(chunk.length / blockSize); var start = self._cache.length; self._cache = Buffer.concat([self._cache, Buffer.allocUnsafe(chunkNum * blockSize)]); for (var i = 0; i < chunkNum; i++) { var out = getBlock(self); var offset = start + i * blockSize; self._cache.writeUInt32BE(out[0], offset + 0); self._cache.writeUInt32BE(out[1], offset + 4); self._cache.writeUInt32BE(out[2], offset + 8); self._cache.writeUInt32BE(out[3], offset + 12); } var pad = self._cache.slice(0, chunk.length); self._cache = self._cache.slice(chunk.length); return xor(chunk, pad); }; },{"../incr32":192,"buffer-xor":217,"safe-buffer":494}],198:[function(require,module,exports){ "use strict"; exports.encrypt = function (self, block) { return self._cipher.encryptBlock(block); }; exports.decrypt = function (self, block) { return self._cipher.decryptBlock(block); }; },{}],199:[function(require,module,exports){ "use strict"; var modeModules = { ECB: require('./ecb'), CBC: require('./cbc'), CFB: require('./cfb'), CFB8: require('./cfb8'), CFB1: require('./cfb1'), OFB: require('./ofb'), CTR: require('./ctr'), GCM: require('./ctr') }; var modes = require('./list.json'); for (var key in modes) { modes[key].module = modeModules[modes[key].mode]; } module.exports = modes; },{"./cbc":193,"./cfb":194,"./cfb1":195,"./cfb8":196,"./ctr":197,"./ecb":198,"./list.json":200,"./ofb":201}],200:[function(require,module,exports){ module.exports={ "aes-128-ecb": { "cipher": "AES", "key": 128, "iv": 0, "mode": "ECB", "type": "block" }, "aes-192-ecb": { "cipher": "AES", "key": 192, "iv": 0, "mode": "ECB", "type": "block" }, "aes-256-ecb": { "cipher": "AES", "key": 256, "iv": 0, "mode": "ECB", "type": "block" }, "aes-128-cbc": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CBC", "type": "block" }, "aes-192-cbc": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CBC", "type": "block" }, "aes-256-cbc": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CBC", "type": "block" }, "aes128": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CBC", "type": "block" }, "aes192": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CBC", "type": "block" }, "aes256": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CBC", "type": "block" }, "aes-128-cfb": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CFB", "type": "stream" }, "aes-192-cfb": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CFB", "type": "stream" }, "aes-256-cfb": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CFB", "type": "stream" }, "aes-128-cfb8": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CFB8", "type": "stream" }, "aes-192-cfb8": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CFB8", "type": "stream" }, "aes-256-cfb8": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CFB8", "type": "stream" }, "aes-128-cfb1": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CFB1", "type": "stream" }, "aes-192-cfb1": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CFB1", "type": "stream" }, "aes-256-cfb1": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CFB1", "type": "stream" }, "aes-128-ofb": { "cipher": "AES", "key": 128, "iv": 16, "mode": "OFB", "type": "stream" }, "aes-192-ofb": { "cipher": "AES", "key": 192, "iv": 16, "mode": "OFB", "type": "stream" }, "aes-256-ofb": { "cipher": "AES", "key": 256, "iv": 16, "mode": "OFB", "type": "stream" }, "aes-128-ctr": { "cipher": "AES", "key": 128, "iv": 16, "mode": "CTR", "type": "stream" }, "aes-192-ctr": { "cipher": "AES", "key": 192, "iv": 16, "mode": "CTR", "type": "stream" }, "aes-256-ctr": { "cipher": "AES", "key": 256, "iv": 16, "mode": "CTR", "type": "stream" }, "aes-128-gcm": { "cipher": "AES", "key": 128, "iv": 12, "mode": "GCM", "type": "auth" }, "aes-192-gcm": { "cipher": "AES", "key": 192, "iv": 12, "mode": "GCM", "type": "auth" }, "aes-256-gcm": { "cipher": "AES", "key": 256, "iv": 12, "mode": "GCM", "type": "auth" } } },{}],201:[function(require,module,exports){ (function (Buffer){ "use strict"; var xor = require('buffer-xor'); function getBlock(self) { self._prev = self._cipher.encryptBlock(self._prev); return self._prev; } exports.encrypt = function (self, chunk) { while (self._cache.length < chunk.length) { self._cache = Buffer.concat([self._cache, getBlock(self)]); } var pad = self._cache.slice(0, chunk.length); self._cache = self._cache.slice(chunk.length); return xor(chunk, pad); }; }).call(this,require("buffer").Buffer) },{"buffer":216,"buffer-xor":217}],202:[function(require,module,exports){ "use strict"; var aes = require('./aes'); var Buffer = require('safe-buffer').Buffer; var Transform = require('cipher-base'); var inherits = require('inherits'); function StreamCipher(mode, key, iv, decrypt) { Transform.call(this); this._cipher = new aes.AES(key); this._prev = Buffer.from(iv); this._cache = Buffer.allocUnsafe(0); this._secCache = Buffer.allocUnsafe(0); this._decrypt = decrypt; this._mode = mode; } inherits(StreamCipher, Transform); StreamCipher.prototype._update = function (chunk) { return this._mode.encrypt(this, chunk, this._decrypt); }; StreamCipher.prototype._final = function () { this._cipher.scrub(); }; module.exports = StreamCipher; },{"./aes":186,"cipher-base":218,"inherits":387,"safe-buffer":494}],203:[function(require,module,exports){ "use strict"; var DES = require('browserify-des'); var aes = require('browserify-aes/browser'); var aesModes = require('browserify-aes/modes'); var desModes = require('browserify-des/modes'); var ebtk = require('evp_bytestokey'); function createCipher(suite, password) { suite = suite.toLowerCase(); var keyLen, ivLen; if (aesModes[suite]) { keyLen = aesModes[suite].key; ivLen = aesModes[suite].iv; } else if (desModes[suite]) { keyLen = desModes[suite].key * 8; ivLen = desModes[suite].iv; } else { throw new TypeError('invalid suite type'); } var keys = ebtk(password, false, keyLen, ivLen); return createCipheriv(suite, keys.key, keys.iv); } function createDecipher(suite, password) { suite = suite.toLowerCase(); var keyLen, ivLen; if (aesModes[suite]) { keyLen = aesModes[suite].key; ivLen = aesModes[suite].iv; } else if (desModes[suite]) { keyLen = desModes[suite].key * 8; ivLen = desModes[suite].iv; } else { throw new TypeError('invalid suite type'); } var keys = ebtk(password, false, keyLen, ivLen); return createDecipheriv(suite, keys.key, keys.iv); } function createCipheriv(suite, key, iv) { suite = suite.toLowerCase(); if (aesModes[suite]) return aes.createCipheriv(suite, key, iv); if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite }); throw new TypeError('invalid suite type'); } function createDecipheriv(suite, key, iv) { suite = suite.toLowerCase(); if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv); if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true }); throw new TypeError('invalid suite type'); } function getCiphers() { return Object.keys(desModes).concat(aes.getCiphers()); } exports.createCipher = exports.Cipher = createCipher; exports.createCipheriv = exports.Cipheriv = createCipheriv; exports.createDecipher = exports.Decipher = createDecipher; exports.createDecipheriv = exports.Decipheriv = createDecipheriv; exports.listCiphers = exports.getCiphers = getCiphers; },{"browserify-aes/browser":188,"browserify-aes/modes":199,"browserify-des":204,"browserify-des/modes":205,"evp_bytestokey":368}],204:[function(require,module,exports){ "use strict"; var CipherBase = require('cipher-base'); var des = require('des.js'); var inherits = require('inherits'); var Buffer = require('safe-buffer').Buffer; var modes = { 'des-ede3-cbc': des.CBC.instantiate(des.EDE), 'des-ede3': des.EDE, 'des-ede-cbc': des.CBC.instantiate(des.EDE), 'des-ede': des.EDE, 'des-cbc': des.CBC.instantiate(des.DES), 'des-ecb': des.DES }; modes.des = modes['des-cbc']; modes.des3 = modes['des-ede3-cbc']; module.exports = DES; inherits(DES, CipherBase); function DES(opts) { CipherBase.call(this); var modeName = opts.mode.toLowerCase(); var mode = modes[modeName]; var type; if (opts.decrypt) { type = 'decrypt'; } else { type = 'encrypt'; } var key = opts.key; if (!Buffer.isBuffer(key)) { key = Buffer.from(key); } if (modeName === 'des-ede' || modeName === 'des-ede-cbc') { key = Buffer.concat([key, key.slice(0, 8)]); } var iv = opts.iv; if (!Buffer.isBuffer(iv)) { iv = Buffer.from(iv); } this._des = mode.create({ key: key, iv: iv, type: type }); } DES.prototype._update = function (data) { return Buffer.from(this._des.update(data)); }; DES.prototype._final = function () { return Buffer.from(this._des.final()); }; },{"cipher-base":218,"des.js":339,"inherits":387,"safe-buffer":494}],205:[function(require,module,exports){ "use strict"; exports['des-ecb'] = { key: 8, iv: 0 }; exports['des-cbc'] = exports.des = { key: 8, iv: 8 }; exports['des-ede3-cbc'] = exports.des3 = { key: 24, iv: 8 }; exports['des-ede3'] = { key: 24, iv: 0 }; exports['des-ede-cbc'] = { key: 16, iv: 8 }; exports['des-ede'] = { key: 16, iv: 0 }; },{}],206:[function(require,module,exports){ (function (Buffer){ "use strict"; var bn = require('bn.js'); var randomBytes = require('randombytes'); module.exports = crt; function blind(priv) { var r = getr(priv); var blinder = r.toRed(bn.mont(priv.modulus)).redPow(new bn(priv.publicExponent)).fromRed(); return { blinder: blinder, unblinder: r.invm(priv.modulus) }; } function crt(msg, priv) { var blinds = blind(priv); var len = priv.modulus.byteLength(); var mod = bn.mont(priv.modulus); var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus); var c1 = blinded.toRed(bn.mont(priv.prime1)); var c2 = blinded.toRed(bn.mont(priv.prime2)); var qinv = priv.coefficient; var p = priv.prime1; var q = priv.prime2; var m1 = c1.redPow(priv.exponent1); var m2 = c2.redPow(priv.exponent2); m1 = m1.fromRed(); m2 = m2.fromRed(); var h = m1.isub(m2).imul(qinv).umod(p); h.imul(q); m2.iadd(h); return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len)); } crt.getr = getr; function getr(priv) { var len = priv.modulus.byteLength(); var r = new bn(randomBytes(len)); while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) { r = new bn(randomBytes(len)); } return r; } }).call(this,require("buffer").Buffer) },{"bn.js":207,"buffer":216,"randombytes":475}],207:[function(require,module,exports){ arguments[4][181][0].apply(exports,arguments) },{"buffer":185,"dup":181}],208:[function(require,module,exports){ "use strict"; module.exports = require('./browser/algorithms.json'); },{"./browser/algorithms.json":209}],209:[function(require,module,exports){ module.exports={ "sha224WithRSAEncryption": { "sign": "rsa", "hash": "sha224", "id": "302d300d06096086480165030402040500041c" }, "RSA-SHA224": { "sign": "ecdsa/rsa", "hash": "sha224", "id": "302d300d06096086480165030402040500041c" }, "sha256WithRSAEncryption": { "sign": "rsa", "hash": "sha256", "id": "3031300d060960864801650304020105000420" }, "RSA-SHA256": { "sign": "ecdsa/rsa", "hash": "sha256", "id": "3031300d060960864801650304020105000420" }, "sha384WithRSAEncryption": { "sign": "rsa", "hash": "sha384", "id": "3041300d060960864801650304020205000430" }, "RSA-SHA384": { "sign": "ecdsa/rsa", "hash": "sha384", "id": "3041300d060960864801650304020205000430" }, "sha512WithRSAEncryption": { "sign": "rsa", "hash": "sha512", "id": "3051300d060960864801650304020305000440" }, "RSA-SHA512": { "sign": "ecdsa/rsa", "hash": "sha512", "id": "3051300d060960864801650304020305000440" }, "RSA-SHA1": { "sign": "rsa", "hash": "sha1", "id": "3021300906052b0e03021a05000414" }, "ecdsa-with-SHA1": { "sign": "ecdsa", "hash": "sha1", "id": "" }, "sha256": { "sign": "ecdsa", "hash": "sha256", "id": "" }, "sha224": { "sign": "ecdsa", "hash": "sha224", "id": "" }, "sha384": { "sign": "ecdsa", "hash": "sha384", "id": "" }, "sha512": { "sign": "ecdsa", "hash": "sha512", "id": "" }, "DSA-SHA": { "sign": "dsa", "hash": "sha1", "id": "" }, "DSA-SHA1": { "sign": "dsa", "hash": "sha1", "id": "" }, "DSA": { "sign": "dsa", "hash": "sha1", "id": "" }, "DSA-WITH-SHA224": { "sign": "dsa", "hash": "sha224", "id": "" }, "DSA-SHA224": { "sign": "dsa", "hash": "sha224", "id": "" }, "DSA-WITH-SHA256": { "sign": "dsa", "hash": "sha256", "id": "" }, "DSA-SHA256": { "sign": "dsa", "hash": "sha256", "id": "" }, "DSA-WITH-SHA384": { "sign": "dsa", "hash": "sha384", "id": "" }, "DSA-SHA384": { "sign": "dsa", "hash": "sha384", "id": "" }, "DSA-WITH-SHA512": { "sign": "dsa", "hash": "sha512", "id": "" }, "DSA-SHA512": { "sign": "dsa", "hash": "sha512", "id": "" }, "DSA-RIPEMD160": { "sign": "dsa", "hash": "rmd160", "id": "" }, "ripemd160WithRSA": { "sign": "rsa", "hash": "rmd160", "id": "3021300906052b2403020105000414" }, "RSA-RIPEMD160": { "sign": "rsa", "hash": "rmd160", "id": "3021300906052b2403020105000414" }, "md5WithRSAEncryption": { "sign": "rsa", "hash": "md5", "id": "3020300c06082a864886f70d020505000410" }, "RSA-MD5": { "sign": "rsa", "hash": "md5", "id": "3020300c06082a864886f70d020505000410" } } },{}],210:[function(require,module,exports){ module.exports={ "1.3.132.0.10": "secp256k1", "1.3.132.0.33": "p224", "1.2.840.10045.3.1.1": "p192", "1.2.840.10045.3.1.7": "p256", "1.3.132.0.34": "p384", "1.3.132.0.35": "p521" } },{}],211:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; var createHash = require('create-hash'); var stream = require('readable-stream'); var inherits = require('inherits'); var sign = require('./sign'); var verify = require('./verify'); var algorithms = require('./algorithms.json'); Object.keys(algorithms).forEach(function (key) { algorithms[key].id = Buffer.from(algorithms[key].id, 'hex'); algorithms[key.toLowerCase()] = algorithms[key]; }); function Sign(algorithm) { stream.Writable.call(this); var data = algorithms[algorithm]; if (!data) throw new Error('Unknown message digest'); this._hashType = data.hash; this._hash = createHash(data.hash); this._tag = data.id; this._signType = data.sign; } inherits(Sign, stream.Writable); Sign.prototype._write = function _write(data, _, done) { this._hash.update(data); done(); }; Sign.prototype.update = function update(data, enc) { if (typeof data === 'string') data = Buffer.from(data, enc); this._hash.update(data); return this; }; Sign.prototype.sign = function signMethod(key, enc) { this.end(); var hash = this._hash.digest(); var sig = sign(hash, key, this._hashType, this._signType, this._tag); return enc ? sig.toString(enc) : sig; }; function Verify(algorithm) { stream.Writable.call(this); var data = algorithms[algorithm]; if (!data) throw new Error('Unknown message digest'); this._hash = createHash(data.hash); this._tag = data.id; this._signType = data.sign; } inherits(Verify, stream.Writable); Verify.prototype._write = function _write(data, _, done) { this._hash.update(data); done(); }; Verify.prototype.update = function update(data, enc) { if (typeof data === 'string') data = Buffer.from(data, enc); this._hash.update(data); return this; }; Verify.prototype.verify = function verifyMethod(key, sig, enc) { if (typeof sig === 'string') sig = Buffer.from(sig, enc); this.end(); var hash = this._hash.digest(); return verify(sig, hash, key, this._signType, this._tag); }; function createSign(algorithm) { return new Sign(algorithm); } function createVerify(algorithm) { return new Verify(algorithm); } module.exports = { Sign: createSign, Verify: createVerify, createSign: createSign, createVerify: createVerify }; },{"./algorithms.json":209,"./sign":212,"./verify":213,"create-hash":331,"inherits":387,"readable-stream":491,"safe-buffer":214}],212:[function(require,module,exports){ "use strict"; // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var Buffer = require('safe-buffer').Buffer; var createHmac = require('create-hmac'); var crt = require('browserify-rsa'); var EC = require('elliptic').ec; var BN = require('bn.js'); var parseKeys = require('parse-asn1'); var curves = require('./curves.json'); function sign(hash, key, hashType, signType, tag) { var priv = parseKeys(key); if (priv.curve) { // rsa keys can be interpreted as ecdsa ones in openssl if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type'); return ecSign(hash, priv); } else if (priv.type === 'dsa') { if (signType !== 'dsa') throw new Error('wrong private key type'); return dsaSign(hash, priv, hashType); } else { if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type'); } hash = Buffer.concat([tag, hash]); var len = priv.modulus.byteLength(); var pad = [0, 1]; while (hash.length + pad.length + 1 < len) { pad.push(0xff); } pad.push(0x00); var i = -1; while (++i < hash.length) { pad.push(hash[i]); } var out = crt(pad, priv); return out; } function ecSign(hash, priv) { var curveId = curves[priv.curve.join('.')]; if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')); var curve = new EC(curveId); var key = curve.keyFromPrivate(priv.privateKey); var out = key.sign(hash); return Buffer.from(out.toDER()); } function dsaSign(hash, priv, algo) { var x = priv.params.priv_key; var p = priv.params.p; var q = priv.params.q; var g = priv.params.g; var r = new BN(0); var k; var H = bits2int(hash, q).mod(q); var s = false; var kv = getKey(x, q, hash, algo); while (s === false) { k = makeKey(q, kv, algo); r = makeR(g, k, p, q); s = k.invm(q).imul(H.add(x.mul(r))).mod(q); if (s.cmpn(0) === 0) { s = false; r = new BN(0); } } return toDER(r, s); } function toDER(r, s) { r = r.toArray(); s = s.toArray(); // Pad values if (r[0] & 0x80) r = [0].concat(r); if (s[0] & 0x80) s = [0].concat(s); var total = r.length + s.length + 4; var res = [0x30, total, 0x02, r.length]; res = res.concat(r, [0x02, s.length], s); return Buffer.from(res); } function getKey(x, q, hash, algo) { x = Buffer.from(x.toArray()); if (x.length < q.byteLength()) { var zeros = Buffer.alloc(q.byteLength() - x.length); x = Buffer.concat([zeros, x]); } var hlen = hash.length; var hbits = bits2octets(hash, q); var v = Buffer.alloc(hlen); v.fill(1); var k = Buffer.alloc(hlen); k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest(); v = createHmac(algo, k).update(v).digest(); k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest(); v = createHmac(algo, k).update(v).digest(); return { k: k, v: v }; } function bits2int(obits, q) { var bits = new BN(obits); var shift = (obits.length << 3) - q.bitLength(); if (shift > 0) bits.ishrn(shift); return bits; } function bits2octets(bits, q) { bits = bits2int(bits, q); bits = bits.mod(q); var out = Buffer.from(bits.toArray()); if (out.length < q.byteLength()) { var zeros = Buffer.alloc(q.byteLength() - out.length); out = Buffer.concat([zeros, out]); } return out; } function makeKey(q, kv, algo) { var t; var k; do { t = Buffer.alloc(0); while (t.length * 8 < q.bitLength()) { kv.v = createHmac(algo, kv.k).update(kv.v).digest(); t = Buffer.concat([t, kv.v]); } k = bits2int(t, q); kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest(); kv.v = createHmac(algo, kv.k).update(kv.v).digest(); } while (k.cmp(q) !== -1); return k; } function makeR(g, k, p, q) { return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q); } module.exports = sign; module.exports.getKey = getKey; module.exports.makeKey = makeKey; },{"./curves.json":210,"bn.js":183,"browserify-rsa":206,"create-hmac":333,"elliptic":350,"parse-asn1":459,"safe-buffer":214}],213:[function(require,module,exports){ "use strict"; // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var Buffer = require('safe-buffer').Buffer; var BN = require('bn.js'); var EC = require('elliptic').ec; var parseKeys = require('parse-asn1'); var curves = require('./curves.json'); function verify(sig, hash, key, signType, tag) { var pub = parseKeys(key); if (pub.type === 'ec') { // rsa keys can be interpreted as ecdsa ones in openssl if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type'); return ecVerify(sig, hash, pub); } else if (pub.type === 'dsa') { if (signType !== 'dsa') throw new Error('wrong public key type'); return dsaVerify(sig, hash, pub); } else { if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type'); } hash = Buffer.concat([tag, hash]); var len = pub.modulus.byteLength(); var pad = [1]; var padNum = 0; while (hash.length + pad.length + 2 < len) { pad.push(0xff); padNum++; } pad.push(0x00); var i = -1; while (++i < hash.length) { pad.push(hash[i]); } pad = Buffer.from(pad); var red = BN.mont(pub.modulus); sig = new BN(sig).toRed(red); sig = sig.redPow(new BN(pub.publicExponent)); sig = Buffer.from(sig.fromRed().toArray()); var out = padNum < 8 ? 1 : 0; len = Math.min(sig.length, pad.length); if (sig.length !== pad.length) out = 1; i = -1; while (++i < len) { out |= sig[i] ^ pad[i]; } return out === 0; } function ecVerify(sig, hash, pub) { var curveId = curves[pub.data.algorithm.curve.join('.')]; if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.')); var curve = new EC(curveId); var pubkey = pub.data.subjectPrivateKey.data; return curve.verify(hash, sig, pubkey); } function dsaVerify(sig, hash, pub) { var p = pub.data.p; var q = pub.data.q; var g = pub.data.g; var y = pub.data.pub_key; var unpacked = parseKeys.signature.decode(sig, 'der'); var s = unpacked.s; var r = unpacked.r; checkValue(s, q); checkValue(r, q); var montp = BN.mont(p); var w = s.invm(q); var v = g.toRed(montp).redPow(new BN(hash).mul(w).mod(q)).fromRed().mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()).mod(p).mod(q); return v.cmp(r) === 0; } function checkValue(b, q) { if (b.cmpn(0) <= 0) throw new Error('invalid sig'); if (b.cmp(q) >= q) throw new Error('invalid sig'); } module.exports = verify; },{"./curves.json":210,"bn.js":183,"elliptic":350,"parse-asn1":459,"safe-buffer":214}],214:[function(require,module,exports){ "use strict"; /*! safe-buffer. MIT License. Feross Aboukhadijeh */ /* eslint-disable node/no-deprecated-api */ var buffer = require('buffer'); var Buffer = buffer.Buffer; // alternative to using Object.keys for old browsers function copyProps(src, dst) { for (var key in src) { dst[key] = src[key]; } } if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { module.exports = buffer; } else { // Copy properties from require('buffer') copyProps(buffer, exports); exports.Buffer = SafeBuffer; } function SafeBuffer(arg, encodingOrOffset, length) { return Buffer(arg, encodingOrOffset, length); } SafeBuffer.prototype = Object.create(Buffer.prototype); // Copy static methods from Buffer copyProps(Buffer, SafeBuffer); SafeBuffer.from = function (arg, encodingOrOffset, length) { if (typeof arg === 'number') { throw new TypeError('Argument must not be a number'); } return Buffer(arg, encodingOrOffset, length); }; SafeBuffer.alloc = function (size, fill, encoding) { if (typeof size !== 'number') { throw new TypeError('Argument must be a number'); } var buf = Buffer(size); if (fill !== undefined) { if (typeof encoding === 'string') { buf.fill(fill, encoding); } else { buf.fill(fill); } } else { buf.fill(0); } return buf; }; SafeBuffer.allocUnsafe = function (size) { if (typeof size !== 'number') { throw new TypeError('Argument must be a number'); } return Buffer(size); }; SafeBuffer.allocUnsafeSlow = function (size) { if (typeof size !== 'number') { throw new TypeError('Argument must be a number'); } return buffer.SlowBuffer(size); }; },{"buffer":216}],215:[function(require,module,exports){ arguments[4][185][0].apply(exports,arguments) },{"dup":185}],216:[function(require,module,exports){ (function (Buffer){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ /* eslint-disable no-proto */ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var base64 = require('base64-js'); var ieee754 = require('ieee754'); exports.Buffer = Buffer; exports.SlowBuffer = SlowBuffer; exports.INSPECT_MAX_BYTES = 50; var K_MAX_LENGTH = 0x7fffffff; exports.kMaxLength = K_MAX_LENGTH; /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Print warning and recommend using `buffer` v4.x which has an Object * implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * We report that the browser does not support typed arrays if the are not subclassable * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array` * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support * for __proto__ and has a buggy typed array implementation. */ Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport(); if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') { console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'); } function typedArraySupport() { // Can typed array instances can be augmented? try { var arr = new Uint8Array(1); arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function foo() { return 42; } }; return arr.foo() === 42; } catch (e) { return false; } } Object.defineProperty(Buffer.prototype, 'parent', { enumerable: true, get: function get() { if (!Buffer.isBuffer(this)) return undefined; return this.buffer; } }); Object.defineProperty(Buffer.prototype, 'offset', { enumerable: true, get: function get() { if (!Buffer.isBuffer(this)) return undefined; return this.byteOffset; } }); function createBuffer(length) { if (length > K_MAX_LENGTH) { throw new RangeError('The value "' + length + '" is invalid for option "size"'); } // Return an augmented `Uint8Array` instance var buf = new Uint8Array(length); buf.__proto__ = Buffer.prototype; return buf; } /** * The Buffer constructor returns instances of `Uint8Array` that have their * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of * `Uint8Array`, so the returned instances will have all the node `Buffer` methods * and the `Uint8Array` methods. Square bracket notation works as expected -- it * returns a single octet. * * The `Uint8Array` prototype remains unmodified. */ function Buffer(arg, encodingOrOffset, length) { // Common case. if (typeof arg === 'number') { if (typeof encodingOrOffset === 'string') { throw new TypeError('The "string" argument must be of type string. Received type number'); } return allocUnsafe(arg); } return from(arg, encodingOrOffset, length); } // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 if (typeof Symbol !== 'undefined' && Symbol.species != null && Buffer[Symbol.species] === Buffer) { Object.defineProperty(Buffer, Symbol.species, { value: null, configurable: true, enumerable: false, writable: false }); } Buffer.poolSize = 8192; // not used by this implementation function from(value, encodingOrOffset, length) { if (typeof value === 'string') { return fromString(value, encodingOrOffset); } if (ArrayBuffer.isView(value)) { return fromArrayLike(value); } if (value == null) { throw TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); } if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) { return fromArrayBuffer(value, encodingOrOffset, length); } if (typeof value === 'number') { throw new TypeError('The "value" argument must not be of type number. Received type number'); } var valueOf = value.valueOf && value.valueOf(); if (valueOf != null && valueOf !== value) { return Buffer.from(valueOf, encodingOrOffset, length); } var b = fromObject(value); if (b) return b; if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') { return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length); } throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + _typeof(value)); } /** * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError * if value is a number. * Buffer.from(str[, encoding]) * Buffer.from(array) * Buffer.from(buffer) * Buffer.from(arrayBuffer[, byteOffset[, length]]) **/ Buffer.from = function (value, encodingOrOffset, length) { return from(value, encodingOrOffset, length); }; // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug: // https://github.com/feross/buffer/pull/148 Buffer.prototype.__proto__ = Uint8Array.prototype; Buffer.__proto__ = Uint8Array; function assertSize(size) { if (typeof size !== 'number') { throw new TypeError('"size" argument must be of type number'); } else if (size < 0) { throw new RangeError('The value "' + size + '" is invalid for option "size"'); } } function alloc(size, fill, encoding) { assertSize(size); if (size <= 0) { return createBuffer(size); } if (fill !== undefined) { // Only pay attention to encoding if it's a string. This // prevents accidentally sending in a number that would // be interpretted as a start offset. return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill); } return createBuffer(size); } /** * Creates a new filled Buffer instance. * alloc(size[, fill[, encoding]]) **/ Buffer.alloc = function (size, fill, encoding) { return alloc(size, fill, encoding); }; function allocUnsafe(size) { assertSize(size); return createBuffer(size < 0 ? 0 : checked(size) | 0); } /** * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. * */ Buffer.allocUnsafe = function (size) { return allocUnsafe(size); }; /** * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. */ Buffer.allocUnsafeSlow = function (size) { return allocUnsafe(size); }; function fromString(string, encoding) { if (typeof encoding !== 'string' || encoding === '') { encoding = 'utf8'; } if (!Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding); } var length = byteLength(string, encoding) | 0; var buf = createBuffer(length); var actual = buf.write(string, encoding); if (actual !== length) { // Writing a hex string, for example, that contains invalid characters will // cause everything after the first invalid character to be ignored. (e.g. // 'abxxcd' will be treated as 'ab') buf = buf.slice(0, actual); } return buf; } function fromArrayLike(array) { var length = array.length < 0 ? 0 : checked(array.length) | 0; var buf = createBuffer(length); for (var i = 0; i < length; i += 1) { buf[i] = array[i] & 255; } return buf; } function fromArrayBuffer(array, byteOffset, length) { if (byteOffset < 0 || array.byteLength < byteOffset) { throw new RangeError('"offset" is outside of buffer bounds'); } if (array.byteLength < byteOffset + (length || 0)) { throw new RangeError('"length" is outside of buffer bounds'); } var buf; if (byteOffset === undefined && length === undefined) { buf = new Uint8Array(array); } else if (length === undefined) { buf = new Uint8Array(array, byteOffset); } else { buf = new Uint8Array(array, byteOffset, length); } // Return an augmented `Uint8Array` instance buf.__proto__ = Buffer.prototype; return buf; } function fromObject(obj) { if (Buffer.isBuffer(obj)) { var len = checked(obj.length) | 0; var buf = createBuffer(len); if (buf.length === 0) { return buf; } obj.copy(buf, 0, 0, len); return buf; } if (obj.length !== undefined) { if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { return createBuffer(0); } return fromArrayLike(obj); } if (obj.type === 'Buffer' && Array.isArray(obj.data)) { return fromArrayLike(obj.data); } } function checked(length) { // Note: cannot use `length < K_MAX_LENGTH` here because that fails when // length is NaN (which is otherwise coerced to zero.) if (length >= K_MAX_LENGTH) { throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes'); } return length | 0; } function SlowBuffer(length) { if (+length != length) { // eslint-disable-line eqeqeq length = 0; } return Buffer.alloc(+length); } Buffer.isBuffer = function isBuffer(b) { return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false }; Buffer.compare = function compare(a, b) { if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength); if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength); if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array'); } if (a === b) return 0; var x = a.length; var y = b.length; for (var i = 0, len = Math.min(x, y); i < len; ++i) { if (a[i] !== b[i]) { x = a[i]; y = b[i]; break; } } if (x < y) return -1; if (y < x) return 1; return 0; }; Buffer.isEncoding = function isEncoding(encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'latin1': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true; default: return false; } }; Buffer.concat = function concat(list, length) { if (!Array.isArray(list)) { throw new TypeError('"list" argument must be an Array of Buffers'); } if (list.length === 0) { return Buffer.alloc(0); } var i; if (length === undefined) { length = 0; for (i = 0; i < list.length; ++i) { length += list[i].length; } } var buffer = Buffer.allocUnsafe(length); var pos = 0; for (i = 0; i < list.length; ++i) { var buf = list[i]; if (isInstance(buf, Uint8Array)) { buf = Buffer.from(buf); } if (!Buffer.isBuffer(buf)) { throw new TypeError('"list" argument must be an Array of Buffers'); } buf.copy(buffer, pos); pos += buf.length; } return buffer; }; function byteLength(string, encoding) { if (Buffer.isBuffer(string)) { return string.length; } if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) { return string.byteLength; } if (typeof string !== 'string') { throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + _typeof(string)); } var len = string.length; var mustMatch = arguments.length > 2 && arguments[2] === true; if (!mustMatch && len === 0) return 0; // Use a for loop to avoid recursion var loweredCase = false; for (;;) { switch (encoding) { case 'ascii': case 'latin1': case 'binary': return len; case 'utf8': case 'utf-8': return utf8ToBytes(string).length; case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return len * 2; case 'hex': return len >>> 1; case 'base64': return base64ToBytes(string).length; default: if (loweredCase) { return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8 } encoding = ('' + encoding).toLowerCase(); loweredCase = true; } } } Buffer.byteLength = byteLength; function slowToString(encoding, start, end) { var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only // property of a typed array. // This behaves neither like String nor Uint8Array in that we set start/end // to their upper/lower bounds if the value passed is out of range. // undefined is handled specially as per ECMA-262 6th Edition, // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. if (start === undefined || start < 0) { start = 0; } // Return early if start > this.length. Done here to prevent potential uint32 // coercion fail below. if (start > this.length) { return ''; } if (end === undefined || end > this.length) { end = this.length; } if (end <= 0) { return ''; } // Force coersion to uint32. This will also coerce falsey/NaN values to 0. end >>>= 0; start >>>= 0; if (end <= start) { return ''; } if (!encoding) encoding = 'utf8'; while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end); case 'utf8': case 'utf-8': return utf8Slice(this, start, end); case 'ascii': return asciiSlice(this, start, end); case 'latin1': case 'binary': return latin1Slice(this, start, end); case 'base64': return base64Slice(this, start, end); case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end); default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); encoding = (encoding + '').toLowerCase(); loweredCase = true; } } } // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package) // to detect a Buffer instance. It's not possible to use `instanceof Buffer` // reliably in a browserify context because there could be multiple different // copies of the 'buffer' package in use. This method works even for Buffer // instances that were created from another copy of the `buffer` package. // See: https://github.com/feross/buffer/issues/154 Buffer.prototype._isBuffer = true; function swap(b, n, m) { var i = b[n]; b[n] = b[m]; b[m] = i; } Buffer.prototype.swap16 = function swap16() { var len = this.length; if (len % 2 !== 0) { throw new RangeError('Buffer size must be a multiple of 16-bits'); } for (var i = 0; i < len; i += 2) { swap(this, i, i + 1); } return this; }; Buffer.prototype.swap32 = function swap32() { var len = this.length; if (len % 4 !== 0) { throw new RangeError('Buffer size must be a multiple of 32-bits'); } for (var i = 0; i < len; i += 4) { swap(this, i, i + 3); swap(this, i + 1, i + 2); } return this; }; Buffer.prototype.swap64 = function swap64() { var len = this.length; if (len % 8 !== 0) { throw new RangeError('Buffer size must be a multiple of 64-bits'); } for (var i = 0; i < len; i += 8) { swap(this, i, i + 7); swap(this, i + 1, i + 6); swap(this, i + 2, i + 5); swap(this, i + 3, i + 4); } return this; }; Buffer.prototype.toString = function toString() { var length = this.length; if (length === 0) return ''; if (arguments.length === 0) return utf8Slice(this, 0, length); return slowToString.apply(this, arguments); }; Buffer.prototype.toLocaleString = Buffer.prototype.toString; Buffer.prototype.equals = function equals(b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); if (this === b) return true; return Buffer.compare(this, b) === 0; }; Buffer.prototype.inspect = function inspect() { var str = ''; var max = exports.INSPECT_MAX_BYTES; str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim(); if (this.length > max) str += ' ... '; return ''; }; Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { if (isInstance(target, Uint8Array)) { target = Buffer.from(target, target.offset, target.byteLength); } if (!Buffer.isBuffer(target)) { throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + _typeof(target)); } if (start === undefined) { start = 0; } if (end === undefined) { end = target ? target.length : 0; } if (thisStart === undefined) { thisStart = 0; } if (thisEnd === undefined) { thisEnd = this.length; } if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { throw new RangeError('out of range index'); } if (thisStart >= thisEnd && start >= end) { return 0; } if (thisStart >= thisEnd) { return -1; } if (start >= end) { return 1; } start >>>= 0; end >>>= 0; thisStart >>>= 0; thisEnd >>>= 0; if (this === target) return 0; var x = thisEnd - thisStart; var y = end - start; var len = Math.min(x, y); var thisCopy = this.slice(thisStart, thisEnd); var targetCopy = target.slice(start, end); for (var i = 0; i < len; ++i) { if (thisCopy[i] !== targetCopy[i]) { x = thisCopy[i]; y = targetCopy[i]; break; } } if (x < y) return -1; if (y < x) return 1; return 0; }; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, // OR the last index of `val` in `buffer` at offset <= `byteOffset`. // // Arguments: // - buffer - a Buffer to search // - val - a string, Buffer, or number // - byteOffset - an index into `buffer`; will be clamped to an int32 // - encoding - an optional encoding, relevant is val is a string // - dir - true for indexOf, false for lastIndexOf function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { // Empty buffer means no match if (buffer.length === 0) return -1; // Normalize byteOffset if (typeof byteOffset === 'string') { encoding = byteOffset; byteOffset = 0; } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff; } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000; } byteOffset = +byteOffset; // Coerce to Number. if (numberIsNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : buffer.length - 1; } // Normalize byteOffset: negative offsets start from the end of the buffer if (byteOffset < 0) byteOffset = buffer.length + byteOffset; if (byteOffset >= buffer.length) { if (dir) return -1;else byteOffset = buffer.length - 1; } else if (byteOffset < 0) { if (dir) byteOffset = 0;else return -1; } // Normalize val if (typeof val === 'string') { val = Buffer.from(val, encoding); } // Finally, search either indexOf (if dir is true) or lastIndexOf if (Buffer.isBuffer(val)) { // Special case: looking for empty string/buffer always fails if (val.length === 0) { return -1; } return arrayIndexOf(buffer, val, byteOffset, encoding, dir); } else if (typeof val === 'number') { val = val & 0xFF; // Search for a byte value [0-255] if (typeof Uint8Array.prototype.indexOf === 'function') { if (dir) { return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); } else { return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); } } return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); } throw new TypeError('val must be string, number or Buffer'); } function arrayIndexOf(arr, val, byteOffset, encoding, dir) { var indexSize = 1; var arrLength = arr.length; var valLength = val.length; if (encoding !== undefined) { encoding = String(encoding).toLowerCase(); if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { if (arr.length < 2 || val.length < 2) { return -1; } indexSize = 2; arrLength /= 2; valLength /= 2; byteOffset /= 2; } } function read(buf, i) { if (indexSize === 1) { return buf[i]; } else { return buf.readUInt16BE(i * indexSize); } } var i; if (dir) { var foundIndex = -1; for (i = byteOffset; i < arrLength; i++) { if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { if (foundIndex === -1) foundIndex = i; if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; } else { if (foundIndex !== -1) i -= i - foundIndex; foundIndex = -1; } } } else { if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; for (i = byteOffset; i >= 0; i--) { var found = true; for (var j = 0; j < valLength; j++) { if (read(arr, i + j) !== read(val, j)) { found = false; break; } } if (found) return i; } } return -1; } Buffer.prototype.includes = function includes(val, byteOffset, encoding) { return this.indexOf(val, byteOffset, encoding) !== -1; }; Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, true); }; Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { return bidirectionalIndexOf(this, val, byteOffset, encoding, false); }; function hexWrite(buf, string, offset, length) { offset = Number(offset) || 0; var remaining = buf.length - offset; if (!length) { length = remaining; } else { length = Number(length); if (length > remaining) { length = remaining; } } var strLen = string.length; if (length > strLen / 2) { length = strLen / 2; } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16); if (numberIsNaN(parsed)) return i; buf[offset + i] = parsed; } return i; } function utf8Write(buf, string, offset, length) { return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); } function asciiWrite(buf, string, offset, length) { return blitBuffer(asciiToBytes(string), buf, offset, length); } function latin1Write(buf, string, offset, length) { return asciiWrite(buf, string, offset, length); } function base64Write(buf, string, offset, length) { return blitBuffer(base64ToBytes(string), buf, offset, length); } function ucs2Write(buf, string, offset, length) { return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); } Buffer.prototype.write = function write(string, offset, length, encoding) { // Buffer#write(string) if (offset === undefined) { encoding = 'utf8'; length = this.length; offset = 0; // Buffer#write(string, encoding) } else if (length === undefined && typeof offset === 'string') { encoding = offset; length = this.length; offset = 0; // Buffer#write(string, offset[, length][, encoding]) } else if (isFinite(offset)) { offset = offset >>> 0; if (isFinite(length)) { length = length >>> 0; if (encoding === undefined) encoding = 'utf8'; } else { encoding = length; length = undefined; } } else { throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); } var remaining = this.length - offset; if (length === undefined || length > remaining) length = remaining; if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { throw new RangeError('Attempt to write outside buffer bounds'); } if (!encoding) encoding = 'utf8'; var loweredCase = false; for (;;) { switch (encoding) { case 'hex': return hexWrite(this, string, offset, length); case 'utf8': case 'utf-8': return utf8Write(this, string, offset, length); case 'ascii': return asciiWrite(this, string, offset, length); case 'latin1': case 'binary': return latin1Write(this, string, offset, length); case 'base64': // Warning: maxLength not taken into account in base64Write return base64Write(this, string, offset, length); case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return ucs2Write(this, string, offset, length); default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); encoding = ('' + encoding).toLowerCase(); loweredCase = true; } } }; Buffer.prototype.toJSON = function toJSON() { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) }; }; function base64Slice(buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf); } else { return base64.fromByteArray(buf.slice(start, end)); } } function utf8Slice(buf, start, end) { end = Math.min(buf.length, end); var res = []; var i = start; while (i < end) { var firstByte = buf[i]; var codePoint = null; var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; if (i + bytesPerSequence <= end) { var secondByte, thirdByte, fourthByte, tempCodePoint; switch (bytesPerSequence) { case 1: if (firstByte < 0x80) { codePoint = firstByte; } break; case 2: secondByte = buf[i + 1]; if ((secondByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; if (tempCodePoint > 0x7F) { codePoint = tempCodePoint; } } break; case 3: secondByte = buf[i + 1]; thirdByte = buf[i + 2]; if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { codePoint = tempCodePoint; } } break; case 4: secondByte = buf[i + 1]; thirdByte = buf[i + 2]; fourthByte = buf[i + 3]; if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { codePoint = tempCodePoint; } } } } if (codePoint === null) { // we did not generate a valid codePoint so insert a // replacement char (U+FFFD) and advance only 1 byte codePoint = 0xFFFD; bytesPerSequence = 1; } else if (codePoint > 0xFFFF) { // encode to utf16 (surrogate pair dance) codePoint -= 0x10000; res.push(codePoint >>> 10 & 0x3FF | 0xD800); codePoint = 0xDC00 | codePoint & 0x3FF; } res.push(codePoint); i += bytesPerSequence; } return decodeCodePointsArray(res); } // Based on http://stackoverflow.com/a/22747272/680742, the browser with // the lowest limit is Chrome, with 0x10000 args. // We go 1 magnitude less, for safety var MAX_ARGUMENTS_LENGTH = 0x1000; function decodeCodePointsArray(codePoints) { var len = codePoints.length; if (len <= MAX_ARGUMENTS_LENGTH) { return String.fromCharCode.apply(String, codePoints); // avoid extra slice() } // Decode in chunks to avoid "call stack size exceeded". var res = ''; var i = 0; while (i < len) { res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); } return res; } function asciiSlice(buf, start, end) { var ret = ''; end = Math.min(buf.length, end); for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i] & 0x7F); } return ret; } function latin1Slice(buf, start, end) { var ret = ''; end = Math.min(buf.length, end); for (var i = start; i < end; ++i) { ret += String.fromCharCode(buf[i]); } return ret; } function hexSlice(buf, start, end) { var len = buf.length; if (!start || start < 0) start = 0; if (!end || end < 0 || end > len) end = len; var out = ''; for (var i = start; i < end; ++i) { out += toHex(buf[i]); } return out; } function utf16leSlice(buf, start, end) { var bytes = buf.slice(start, end); var res = ''; for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); } return res; } Buffer.prototype.slice = function slice(start, end) { var len = this.length; start = ~~start; end = end === undefined ? len : ~~end; if (start < 0) { start += len; if (start < 0) start = 0; } else if (start > len) { start = len; } if (end < 0) { end += len; if (end < 0) end = 0; } else if (end > len) { end = len; } if (end < start) end = start; var newBuf = this.subarray(start, end); // Return an augmented `Uint8Array` instance newBuf.__proto__ = Buffer.prototype; return newBuf; }; /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset(offset, ext, length) { if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); } Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) checkOffset(offset, byteLength, this.length); var val = this[offset]; var mul = 1; var i = 0; while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul; } return val; }; Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) { checkOffset(offset, byteLength, this.length); } var val = this[offset + --byteLength]; var mul = 1; while (byteLength > 0 && (mul *= 0x100)) { val += this[offset + --byteLength] * mul; } return val; }; Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); return this[offset]; }; Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] | this[offset + 1] << 8; }; Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); return this[offset] << 8 | this[offset + 1]; }; Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; }; Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); }; Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) checkOffset(offset, byteLength, this.length); var val = this[offset]; var mul = 1; var i = 0; while (++i < byteLength && (mul *= 0x100)) { val += this[offset + i] * mul; } mul *= 0x80; if (val >= mul) val -= Math.pow(2, 8 * byteLength); return val; }; Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) checkOffset(offset, byteLength, this.length); var i = byteLength; var mul = 1; var val = this[offset + --i]; while (i > 0 && (mul *= 0x100)) { val += this[offset + --i] * mul; } mul *= 0x80; if (val >= mul) val -= Math.pow(2, 8 * byteLength); return val; }; Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 1, this.length); if (!(this[offset] & 0x80)) return this[offset]; return (0xff - this[offset] + 1) * -1; }; Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); var val = this[offset] | this[offset + 1] << 8; return val & 0x8000 ? val | 0xFFFF0000 : val; }; Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 2, this.length); var val = this[offset + 1] | this[offset] << 8; return val & 0x8000 ? val | 0xFFFF0000 : val; }; Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; }; Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; }; Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, true, 23, 4); }; Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 4, this.length); return ieee754.read(this, offset, false, 23, 4); }; Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, true, 52, 8); }; Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { offset = offset >>> 0; if (!noAssert) checkOffset(offset, 8, this.length); return ieee754.read(this, offset, false, 52, 8); }; function checkInt(buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); if (offset + ext > buf.length) throw new RangeError('Index out of range'); } Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { value = +value; offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1; checkInt(this, value, offset, byteLength, maxBytes, 0); } var mul = 1; var i = 0; this[offset] = value & 0xFF; while (++i < byteLength && (mul *= 0x100)) { this[offset + i] = value / mul & 0xFF; } return offset + byteLength; }; Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { value = +value; offset = offset >>> 0; byteLength = byteLength >>> 0; if (!noAssert) { var maxBytes = Math.pow(2, 8 * byteLength) - 1; checkInt(this, value, offset, byteLength, maxBytes, 0); } var i = byteLength - 1; var mul = 1; this[offset + i] = value & 0xFF; while (--i >= 0 && (mul *= 0x100)) { this[offset + i] = value / mul & 0xFF; } return offset + byteLength; }; Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); this[offset] = value & 0xff; return offset + 1; }; Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); this[offset] = value & 0xff; this[offset + 1] = value >>> 8; return offset + 2; }; Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); this[offset] = value >>> 8; this[offset + 1] = value & 0xff; return offset + 2; }; Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); this[offset + 3] = value >>> 24; this[offset + 2] = value >>> 16; this[offset + 1] = value >>> 8; this[offset] = value & 0xff; return offset + 4; }; Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; this[offset + 3] = value & 0xff; return offset + 4; }; Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1); checkInt(this, value, offset, byteLength, limit - 1, -limit); } var i = 0; var mul = 1; var sub = 0; this[offset] = value & 0xFF; while (++i < byteLength && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { sub = 1; } this[offset + i] = (value / mul >> 0) - sub & 0xFF; } return offset + byteLength; }; Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { var limit = Math.pow(2, 8 * byteLength - 1); checkInt(this, value, offset, byteLength, limit - 1, -limit); } var i = byteLength - 1; var mul = 1; var sub = 0; this[offset + i] = value & 0xFF; while (--i >= 0 && (mul *= 0x100)) { if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { sub = 1; } this[offset + i] = (value / mul >> 0) - sub & 0xFF; } return offset + byteLength; }; Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); if (value < 0) value = 0xff + value + 1; this[offset] = value & 0xff; return offset + 1; }; Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); this[offset] = value & 0xff; this[offset + 1] = value >>> 8; return offset + 2; }; Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); this[offset] = value >>> 8; this[offset + 1] = value & 0xff; return offset + 2; }; Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); this[offset] = value & 0xff; this[offset + 1] = value >>> 8; this[offset + 2] = value >>> 16; this[offset + 3] = value >>> 24; return offset + 4; }; Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); if (value < 0) value = 0xffffffff + value + 1; this[offset] = value >>> 24; this[offset + 1] = value >>> 16; this[offset + 2] = value >>> 8; this[offset + 3] = value & 0xff; return offset + 4; }; function checkIEEE754(buf, value, offset, ext, max, min) { if (offset + ext > buf.length) throw new RangeError('Index out of range'); if (offset < 0) throw new RangeError('Index out of range'); } function writeFloat(buf, value, offset, littleEndian, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); } ieee754.write(buf, value, offset, littleEndian, 23, 4); return offset + 4; } Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert); }; Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert); }; function writeDouble(buf, value, offset, littleEndian, noAssert) { value = +value; offset = offset >>> 0; if (!noAssert) { checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); } ieee754.write(buf, value, offset, littleEndian, 52, 8); return offset + 8; } Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert); }; Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert); }; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function copy(target, targetStart, start, end) { if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer'); if (!start) start = 0; if (!end && end !== 0) end = this.length; if (targetStart >= target.length) targetStart = target.length; if (!targetStart) targetStart = 0; if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done if (end === start) return 0; if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions if (targetStart < 0) { throw new RangeError('targetStart out of bounds'); } if (start < 0 || start >= this.length) throw new RangeError('Index out of range'); if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob? if (end > this.length) end = this.length; if (target.length - targetStart < end - start) { end = target.length - targetStart + start; } var len = end - start; if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') { // Use built-in when available, missing from IE11 this.copyWithin(targetStart, start, end); } else if (this === target && start < targetStart && targetStart < end) { // descending copy from end for (var i = len - 1; i >= 0; --i) { target[i + targetStart] = this[i + start]; } } else { Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart); } return len; }; // Usage: // buffer.fill(number[, offset[, end]]) // buffer.fill(buffer[, offset[, end]]) // buffer.fill(string[, offset[, end]][, encoding]) Buffer.prototype.fill = function fill(val, start, end, encoding) { // Handle string cases: if (typeof val === 'string') { if (typeof start === 'string') { encoding = start; start = 0; end = this.length; } else if (typeof end === 'string') { encoding = end; end = this.length; } if (encoding !== undefined && typeof encoding !== 'string') { throw new TypeError('encoding must be a string'); } if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { throw new TypeError('Unknown encoding: ' + encoding); } if (val.length === 1) { var code = val.charCodeAt(0); if (encoding === 'utf8' && code < 128 || encoding === 'latin1') { // Fast path: If `val` fits into a single byte, use that numeric value. val = code; } } } else if (typeof val === 'number') { val = val & 255; } // Invalid ranges are not set to a default, so can range check early. if (start < 0 || this.length < start || this.length < end) { throw new RangeError('Out of range index'); } if (end <= start) { return this; } start = start >>> 0; end = end === undefined ? this.length : end >>> 0; if (!val) val = 0; var i; if (typeof val === 'number') { for (i = start; i < end; ++i) { this[i] = val; } } else { var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding); var len = bytes.length; if (len === 0) { throw new TypeError('The value "' + val + '" is invalid for argument "value"'); } for (i = 0; i < end - start; ++i) { this[i + start] = bytes[i % len]; } } return this; }; // HELPER FUNCTIONS // ================ var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g; function base64clean(str) { // Node takes equal signs as end of the Base64 encoding str = str.split('=')[0]; // Node strips out invalid characters like \n and \t from the string, base64-js does not str = str.trim().replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to '' if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '='; } return str; } function toHex(n) { if (n < 16) return '0' + n.toString(16); return n.toString(16); } function utf8ToBytes(string, units) { units = units || Infinity; var codePoint; var length = string.length; var leadSurrogate = null; var bytes = []; for (var i = 0; i < length; ++i) { codePoint = string.charCodeAt(i); // is surrogate component if (codePoint > 0xD7FF && codePoint < 0xE000) { // last char was a lead if (!leadSurrogate) { // no lead yet if (codePoint > 0xDBFF) { // unexpected trail if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); continue; } else if (i + 1 === length) { // unpaired lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); continue; } // valid lead leadSurrogate = codePoint; continue; } // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); leadSurrogate = codePoint; continue; } // valid surrogate pair codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; } else if (leadSurrogate) { // valid bmp char, but last char was a lead if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); } leadSurrogate = null; // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break; bytes.push(codePoint); } else if (codePoint < 0x800) { if ((units -= 2) < 0) break; bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break; bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); } else if (codePoint < 0x110000) { if ((units -= 4) < 0) break; bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); } else { throw new Error('Invalid code point'); } } return bytes; } function asciiToBytes(str) { var byteArray = []; for (var i = 0; i < str.length; ++i) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF); } return byteArray; } function utf16leToBytes(str, units) { var c, hi, lo; var byteArray = []; for (var i = 0; i < str.length; ++i) { if ((units -= 2) < 0) break; c = str.charCodeAt(i); hi = c >> 8; lo = c % 256; byteArray.push(lo); byteArray.push(hi); } return byteArray; } function base64ToBytes(str) { return base64.toByteArray(base64clean(str)); } function blitBuffer(src, dst, offset, length) { for (var i = 0; i < length; ++i) { if (i + offset >= dst.length || i >= src.length) break; dst[i + offset] = src[i]; } return i; } // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass // the `instanceof` check but they should be treated as of that type. // See: https://github.com/feross/buffer/issues/166 function isInstance(obj, type) { return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name; } function numberIsNaN(obj) { // For IE11 support return obj !== obj; // eslint-disable-line no-self-compare } }).call(this,require("buffer").Buffer) },{"base64-js":182,"buffer":216,"ieee754":385}],217:[function(require,module,exports){ (function (Buffer){ "use strict"; module.exports = function xor(a, b) { var length = Math.min(a.length, b.length); var buffer = new Buffer(length); for (var i = 0; i < length; ++i) { buffer[i] = a[i] ^ b[i]; } return buffer; }; }).call(this,require("buffer").Buffer) },{"buffer":216}],218:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; var Transform = require('stream').Transform; var StringDecoder = require('string_decoder').StringDecoder; var inherits = require('inherits'); function CipherBase(hashMode) { Transform.call(this); this.hashMode = typeof hashMode === 'string'; if (this.hashMode) { this[hashMode] = this._finalOrDigest; } else { this.final = this._finalOrDigest; } if (this._final) { this.__final = this._final; this._final = null; } this._decoder = null; this._encoding = null; } inherits(CipherBase, Transform); CipherBase.prototype.update = function (data, inputEnc, outputEnc) { if (typeof data === 'string') { data = Buffer.from(data, inputEnc); } var outData = this._update(data); if (this.hashMode) return this; if (outputEnc) { outData = this._toString(outData, outputEnc); } return outData; }; CipherBase.prototype.setAutoPadding = function () {}; CipherBase.prototype.getAuthTag = function () { throw new Error('trying to get auth tag in unsupported state'); }; CipherBase.prototype.setAuthTag = function () { throw new Error('trying to set auth tag in unsupported state'); }; CipherBase.prototype.setAAD = function () { throw new Error('trying to set aad in unsupported state'); }; CipherBase.prototype._transform = function (data, _, next) { var err; try { if (this.hashMode) { this._update(data); } else { this.push(this._update(data)); } } catch (e) { err = e; } finally { next(err); } }; CipherBase.prototype._flush = function (done) { var err; try { this.push(this.__final()); } catch (e) { err = e; } done(err); }; CipherBase.prototype._finalOrDigest = function (outputEnc) { var outData = this.__final() || Buffer.alloc(0); if (outputEnc) { outData = this._toString(outData, outputEnc, true); } return outData; }; CipherBase.prototype._toString = function (value, enc, fin) { if (!this._decoder) { this._decoder = new StringDecoder(enc); this._encoding = enc; } if (this._encoding !== enc) throw new Error('can\'t switch encodings'); var out = this._decoder.write(value); if (fin) { out += this._decoder.end(); } return out; }; module.exports = CipherBase; },{"inherits":387,"safe-buffer":494,"stream":506,"string_decoder":520}],219:[function(require,module,exports){ module.exports = function (it) { if (typeof it != 'function') { throw TypeError(String(it) + ' is not a function'); } return it; }; },{}],220:[function(require,module,exports){ var isObject = require('../internals/is-object'); module.exports = function (it) { if (!isObject(it) && it !== null) { throw TypeError("Can't set " + String(it) + ' as a prototype'); } return it; }; },{"../internals/is-object":263}],221:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); var create = require('../internals/object-create'); var definePropertyModule = require('../internals/object-define-property'); var UNSCOPABLES = wellKnownSymbol('unscopables'); var ArrayPrototype = Array.prototype; // Array.prototype[@@unscopables] // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables if (ArrayPrototype[UNSCOPABLES] == undefined) { definePropertyModule.f(ArrayPrototype, UNSCOPABLES, { configurable: true, value: create(null) }); } // add a key to Array.prototype[@@unscopables] module.exports = function (key) { ArrayPrototype[UNSCOPABLES][key] = true; }; },{"../internals/object-create":276,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],222:[function(require,module,exports){ module.exports = function (it, Constructor, name) { if (!(it instanceof Constructor)) { throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); } return it; }; },{}],223:[function(require,module,exports){ var isObject = require('../internals/is-object'); module.exports = function (it) { if (!isObject(it)) { throw TypeError(String(it) + ' is not an object'); } return it; }; },{"../internals/is-object":263}],224:[function(require,module,exports){ var toIndexedObject = require('../internals/to-indexed-object'); var toLength = require('../internals/to-length'); var toAbsoluteIndex = require('../internals/to-absolute-index'); // `Array.prototype.{ indexOf, includes }` methods implementation var createMethod = function (IS_INCLUDES) { return function ($this, el, fromIndex) { var O = toIndexedObject($this); var length = toLength(O.length); var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm // eslint-disable-next-line no-self-compare if (IS_INCLUDES && el != el) while (length > index) { value = O[index++]; // eslint-disable-next-line no-self-compare if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; module.exports = { // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes includes: createMethod(true), // `Array.prototype.indexOf` method // https://tc39.github.io/ecma262/#sec-array.prototype.indexof indexOf: createMethod(false) }; },{"../internals/to-absolute-index":304,"../internals/to-indexed-object":305,"../internals/to-length":307}],225:[function(require,module,exports){ var bind = require('../internals/function-bind-context'); var IndexedObject = require('../internals/indexed-object'); var toObject = require('../internals/to-object'); var toLength = require('../internals/to-length'); var arraySpeciesCreate = require('../internals/array-species-create'); var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation var createMethod = function (TYPE) { var IS_MAP = TYPE == 1; var IS_FILTER = TYPE == 2; var IS_SOME = TYPE == 3; var IS_EVERY = TYPE == 4; var IS_FIND_INDEX = TYPE == 6; var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; return function ($this, callbackfn, that, specificCreate) { var O = toObject($this); var self = IndexedObject(O); var boundFunction = bind(callbackfn, that, 3); var length = toLength(self.length); var index = 0; var create = specificCreate || arraySpeciesCreate; var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; var value, result; for (;length > index; index++) if (NO_HOLES || index in self) { value = self[index]; result = boundFunction(value, index, O); if (TYPE) { if (IS_MAP) target[index] = result; // map else if (result) switch (TYPE) { case 3: return true; // some case 5: return value; // find case 6: return index; // findIndex case 2: push.call(target, value); // filter } else if (IS_EVERY) return false; // every } } return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; }; }; module.exports = { // `Array.prototype.forEach` method // https://tc39.github.io/ecma262/#sec-array.prototype.foreach forEach: createMethod(0), // `Array.prototype.map` method // https://tc39.github.io/ecma262/#sec-array.prototype.map map: createMethod(1), // `Array.prototype.filter` method // https://tc39.github.io/ecma262/#sec-array.prototype.filter filter: createMethod(2), // `Array.prototype.some` method // https://tc39.github.io/ecma262/#sec-array.prototype.some some: createMethod(3), // `Array.prototype.every` method // https://tc39.github.io/ecma262/#sec-array.prototype.every every: createMethod(4), // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find find: createMethod(5), // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex findIndex: createMethod(6) }; },{"../internals/array-species-create":227,"../internals/function-bind-context":248,"../internals/indexed-object":257,"../internals/to-length":307,"../internals/to-object":308}],226:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var fails = require('../internals/fails'); var has = require('../internals/has'); var defineProperty = Object.defineProperty; var cache = {}; var thrower = function (it) { throw it; }; module.exports = function (METHOD_NAME, options) { if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; if (!options) options = {}; var method = [][METHOD_NAME]; var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; var argument0 = has(options, 0) ? options[0] : thrower; var argument1 = has(options, 1) ? options[1] : undefined; return cache[METHOD_NAME] = !!method && !fails(function () { if (ACCESSORS && !DESCRIPTORS) return true; var O = { length: -1 }; if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower }); else O[1] = 1; method.call(O, argument0, argument1); }); }; },{"../internals/descriptors":240,"../internals/fails":247,"../internals/has":252}],227:[function(require,module,exports){ var isObject = require('../internals/is-object'); var isArray = require('../internals/is-array'); var wellKnownSymbol = require('../internals/well-known-symbol'); var SPECIES = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation // https://tc39.github.io/ecma262/#sec-arrayspeciescreate module.exports = function (originalArray, length) { var C; if (isArray(originalArray)) { C = originalArray.constructor; // cross-realm fallback if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; else if (isObject(C)) { C = C[SPECIES]; if (C === null) C = undefined; } } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); }; },{"../internals/is-array":261,"../internals/is-object":263,"../internals/well-known-symbol":314}],228:[function(require,module,exports){ var anObject = require('../internals/an-object'); // call something on iterator step with safe closing on error module.exports = function (iterator, fn, value, ENTRIES) { try { return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) } catch (error) { var returnMethod = iterator['return']; if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); throw error; } }; },{"../internals/an-object":223}],229:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); var ITERATOR = wellKnownSymbol('iterator'); var SAFE_CLOSING = false; try { var called = 0; var iteratorWithReturn = { next: function () { return { done: !!called++ }; }, 'return': function () { SAFE_CLOSING = true; } }; iteratorWithReturn[ITERATOR] = function () { return this; }; // eslint-disable-next-line no-throw-literal Array.from(iteratorWithReturn, function () { throw 2; }); } catch (error) { /* empty */ } module.exports = function (exec, SKIP_CLOSING) { if (!SKIP_CLOSING && !SAFE_CLOSING) return false; var ITERATION_SUPPORT = false; try { var object = {}; object[ITERATOR] = function () { return { next: function () { return { done: ITERATION_SUPPORT = true }; } }; }; exec(object); } catch (error) { /* empty */ } return ITERATION_SUPPORT; }; },{"../internals/well-known-symbol":314}],230:[function(require,module,exports){ var toString = {}.toString; module.exports = function (it) { return toString.call(it).slice(8, -1); }; },{}],231:[function(require,module,exports){ var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support'); var classofRaw = require('../internals/classof-raw'); var wellKnownSymbol = require('../internals/well-known-symbol'); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); // ES3 wrong here var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function (it, key) { try { return it[key]; } catch (error) { /* empty */ } }; // getting tag from ES6+ `Object.prototype.toString` module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) { var O, tag, result; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag // builtinTag case : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; }; },{"../internals/classof-raw":230,"../internals/to-string-tag-support":310,"../internals/well-known-symbol":314}],232:[function(require,module,exports){ var has = require('../internals/has'); var ownKeys = require('../internals/own-keys'); var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); var definePropertyModule = require('../internals/object-define-property'); module.exports = function (target, source) { var keys = ownKeys(source); var defineProperty = definePropertyModule.f; var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); } }; },{"../internals/has":252,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/own-keys":289}],233:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); var MATCH = wellKnownSymbol('match'); module.exports = function (METHOD_NAME) { var regexp = /./; try { '/./'[METHOD_NAME](regexp); } catch (e) { try { regexp[MATCH] = false; return '/./'[METHOD_NAME](regexp); } catch (f) { /* empty */ } } return false; }; },{"../internals/well-known-symbol":314}],234:[function(require,module,exports){ var fails = require('../internals/fails'); module.exports = !fails(function () { function F() { /* empty */ } F.prototype.constructor = null; return Object.getPrototypeOf(new F()) !== F.prototype; }); },{"../internals/fails":247}],235:[function(require,module,exports){ 'use strict'; var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype; var create = require('../internals/object-create'); var createPropertyDescriptor = require('../internals/create-property-descriptor'); var setToStringTag = require('../internals/set-to-string-tag'); var Iterators = require('../internals/iterators'); var returnThis = function () { return this; }; module.exports = function (IteratorConstructor, NAME, next) { var TO_STRING_TAG = NAME + ' Iterator'; IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); Iterators[TO_STRING_TAG] = returnThis; return IteratorConstructor; }; },{"../internals/create-property-descriptor":237,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-create":276,"../internals/set-to-string-tag":298}],236:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var definePropertyModule = require('../internals/object-define-property'); var createPropertyDescriptor = require('../internals/create-property-descriptor'); module.exports = DESCRIPTORS ? function (object, key, value) { return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); } : function (object, key, value) { object[key] = value; return object; }; },{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/object-define-property":278}],237:[function(require,module,exports){ module.exports = function (bitmap, value) { return { enumerable: !(bitmap & 1), configurable: !(bitmap & 2), writable: !(bitmap & 4), value: value }; }; },{}],238:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var createIteratorConstructor = require('../internals/create-iterator-constructor'); var getPrototypeOf = require('../internals/object-get-prototype-of'); var setPrototypeOf = require('../internals/object-set-prototype-of'); var setToStringTag = require('../internals/set-to-string-tag'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var redefine = require('../internals/redefine'); var wellKnownSymbol = require('../internals/well-known-symbol'); var IS_PURE = require('../internals/is-pure'); var Iterators = require('../internals/iterators'); var IteratorsCore = require('../internals/iterators-core'); var IteratorPrototype = IteratorsCore.IteratorPrototype; var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; var ITERATOR = wellKnownSymbol('iterator'); var KEYS = 'keys'; var VALUES = 'values'; var ENTRIES = 'entries'; var returnThis = function () { return this; }; module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { createIteratorConstructor(IteratorConstructor, NAME, next); var getIterationMethod = function (KIND) { if (KIND === DEFAULT && defaultIterator) return defaultIterator; if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND]; switch (KIND) { case KEYS: return function keys() { return new IteratorConstructor(this, KIND); }; case VALUES: return function values() { return new IteratorConstructor(this, KIND); }; case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); }; } return function () { return new IteratorConstructor(this); }; }; var TO_STRING_TAG = NAME + ' Iterator'; var INCORRECT_VALUES_NAME = false; var IterablePrototype = Iterable.prototype; var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT]; var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator; var CurrentIteratorPrototype, methods, KEY; // fix native if (anyNativeIterator) { CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { if (setPrototypeOf) { setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') { createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis); } } // Set @@toStringTag to native iterators setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis; } } // fix Array#{values, @@iterator}.name in V8 / FF if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { INCORRECT_VALUES_NAME = true; defaultIterator = function values() { return nativeIterator.call(this); }; } // define iterator if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator); } Iterators[NAME] = defaultIterator; // export additional methods if (DEFAULT) { methods = { values: getIterationMethod(VALUES), keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), entries: getIterationMethod(ENTRIES) }; if (FORCED) for (KEY in methods) { if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { redefine(IterablePrototype, KEY, methods[KEY]); } } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); } return methods; }; },{"../internals/create-iterator-constructor":235,"../internals/create-non-enumerable-property":236,"../internals/export":246,"../internals/is-pure":264,"../internals/iterators":268,"../internals/iterators-core":267,"../internals/object-get-prototype-of":283,"../internals/object-set-prototype-of":287,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/well-known-symbol":314}],239:[function(require,module,exports){ var path = require('../internals/path'); var has = require('../internals/has'); var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); var defineProperty = require('../internals/object-define-property').f; module.exports = function (NAME) { var Symbol = path.Symbol || (path.Symbol = {}); if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, { value: wrappedWellKnownSymbolModule.f(NAME) }); }; },{"../internals/has":252,"../internals/object-define-property":278,"../internals/path":290,"../internals/well-known-symbol-wrapped":313}],240:[function(require,module,exports){ var fails = require('../internals/fails'); // Thank's IE8 for his funny defineProperty module.exports = !fails(function () { return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7; }); },{"../internals/fails":247}],241:[function(require,module,exports){ var global = require('../internals/global'); var isObject = require('../internals/is-object'); var document = global.document; // typeof document.createElement is 'object' in old IE var EXISTS = isObject(document) && isObject(document.createElement); module.exports = function (it) { return EXISTS ? document.createElement(it) : {}; }; },{"../internals/global":251,"../internals/is-object":263}],242:[function(require,module,exports){ var userAgent = require('../internals/engine-user-agent'); module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent); },{"../internals/engine-user-agent":243}],243:[function(require,module,exports){ var getBuiltIn = require('../internals/get-built-in'); module.exports = getBuiltIn('navigator', 'userAgent') || ''; },{"../internals/get-built-in":249}],244:[function(require,module,exports){ var global = require('../internals/global'); var userAgent = require('../internals/engine-user-agent'); var process = global.process; var versions = process && process.versions; var v8 = versions && versions.v8; var match, version; if (v8) { match = v8.split('.'); version = match[0] + match[1]; } else if (userAgent) { match = userAgent.match(/Edge\/(\d+)/); if (!match || match[1] >= 74) { match = userAgent.match(/Chrome\/(\d+)/); if (match) version = match[1]; } } module.exports = version && +version; },{"../internals/engine-user-agent":243,"../internals/global":251}],245:[function(require,module,exports){ // IE8- don't enum bug keys module.exports = [ 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf' ]; },{}],246:[function(require,module,exports){ var global = require('../internals/global'); var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var redefine = require('../internals/redefine'); var setGlobal = require('../internals/set-global'); var copyConstructorProperties = require('../internals/copy-constructor-properties'); var isForced = require('../internals/is-forced'); /* options.target - name of the target object options.global - target is the global object options.stat - export as static methods of target options.proto - export as prototype methods of target options.real - real prototype method for the `pure` version options.forced - export even if the native feature is available options.bind - bind methods to the target, required for the `pure` version options.wrap - wrap constructors to preventing global pollution, required for the `pure` version options.unsafe - use the simple assignment of property instead of delete + defineProperty options.sham - add a flag to not completely full polyfills options.enumerable - export as enumerable property options.noTargetGet - prevent calling a getter on target */ module.exports = function (options, source) { var TARGET = options.target; var GLOBAL = options.global; var STATIC = options.stat; var FORCED, target, key, targetProperty, sourceProperty, descriptor; if (GLOBAL) { target = global; } else if (STATIC) { target = global[TARGET] || setGlobal(TARGET, {}); } else { target = (global[TARGET] || {}).prototype; } if (target) for (key in source) { sourceProperty = source[key]; if (options.noTargetGet) { descriptor = getOwnPropertyDescriptor(target, key); targetProperty = descriptor && descriptor.value; } else targetProperty = target[key]; FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target if (!FORCED && targetProperty !== undefined) { if (typeof sourceProperty === typeof targetProperty) continue; copyConstructorProperties(sourceProperty, targetProperty); } // add a flag to not completely full polyfills if (options.sham || (targetProperty && targetProperty.sham)) { createNonEnumerableProperty(sourceProperty, 'sham', true); } // extend global redefine(target, key, sourceProperty, options); } }; },{"../internals/copy-constructor-properties":232,"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/is-forced":262,"../internals/object-get-own-property-descriptor":279,"../internals/redefine":294,"../internals/set-global":296}],247:[function(require,module,exports){ module.exports = function (exec) { try { return !!exec(); } catch (error) { return true; } }; },{}],248:[function(require,module,exports){ var aFunction = require('../internals/a-function'); // optional / simple context binding module.exports = function (fn, that, length) { aFunction(fn); if (that === undefined) return fn; switch (length) { case 0: return function () { return fn.call(that); }; case 1: return function (a) { return fn.call(that, a); }; case 2: return function (a, b) { return fn.call(that, a, b); }; case 3: return function (a, b, c) { return fn.call(that, a, b, c); }; } return function (/* ...args */) { return fn.apply(that, arguments); }; }; },{"../internals/a-function":219}],249:[function(require,module,exports){ var path = require('../internals/path'); var global = require('../internals/global'); var aFunction = function (variable) { return typeof variable == 'function' ? variable : undefined; }; module.exports = function (namespace, method) { return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; }; },{"../internals/global":251,"../internals/path":290}],250:[function(require,module,exports){ var classof = require('../internals/classof'); var Iterators = require('../internals/iterators'); var wellKnownSymbol = require('../internals/well-known-symbol'); var ITERATOR = wellKnownSymbol('iterator'); module.exports = function (it) { if (it != undefined) return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; },{"../internals/classof":231,"../internals/iterators":268,"../internals/well-known-symbol":314}],251:[function(require,module,exports){ (function (global){ var check = function (it) { return it && it.Math == Math && it; }; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 module.exports = // eslint-disable-next-line no-undef check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || // eslint-disable-next-line no-new-func Function('return this')(); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) },{}],252:[function(require,module,exports){ var hasOwnProperty = {}.hasOwnProperty; module.exports = function (it, key) { return hasOwnProperty.call(it, key); }; },{}],253:[function(require,module,exports){ module.exports = {}; },{}],254:[function(require,module,exports){ var global = require('../internals/global'); module.exports = function (a, b) { var console = global.console; if (console && console.error) { arguments.length === 1 ? console.error(a) : console.error(a, b); } }; },{"../internals/global":251}],255:[function(require,module,exports){ var getBuiltIn = require('../internals/get-built-in'); module.exports = getBuiltIn('document', 'documentElement'); },{"../internals/get-built-in":249}],256:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var fails = require('../internals/fails'); var createElement = require('../internals/document-create-element'); // Thank's IE8 for his funny defineProperty module.exports = !DESCRIPTORS && !fails(function () { return Object.defineProperty(createElement('div'), 'a', { get: function () { return 7; } }).a != 7; }); },{"../internals/descriptors":240,"../internals/document-create-element":241,"../internals/fails":247}],257:[function(require,module,exports){ var fails = require('../internals/fails'); var classof = require('../internals/classof-raw'); var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 // eslint-disable-next-line no-prototype-builtins return !Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) == 'String' ? split.call(it, '') : Object(it); } : Object; },{"../internals/classof-raw":230,"../internals/fails":247}],258:[function(require,module,exports){ var store = require('../internals/shared-store'); var functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper if (typeof store.inspectSource != 'function') { store.inspectSource = function (it) { return functionToString.call(it); }; } module.exports = store.inspectSource; },{"../internals/shared-store":300}],259:[function(require,module,exports){ var NATIVE_WEAK_MAP = require('../internals/native-weak-map'); var global = require('../internals/global'); var isObject = require('../internals/is-object'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var objectHas = require('../internals/has'); var sharedKey = require('../internals/shared-key'); var hiddenKeys = require('../internals/hidden-keys'); var WeakMap = global.WeakMap; var set, get, has; var enforce = function (it) { return has(it) ? get(it) : set(it, {}); }; var getterFor = function (TYPE) { return function (it) { var state; if (!isObject(it) || (state = get(it)).type !== TYPE) { throw TypeError('Incompatible receiver, ' + TYPE + ' required'); } return state; }; }; if (NATIVE_WEAK_MAP) { var store = new WeakMap(); var wmget = store.get; var wmhas = store.has; var wmset = store.set; set = function (it, metadata) { wmset.call(store, it, metadata); return metadata; }; get = function (it) { return wmget.call(store, it) || {}; }; has = function (it) { return wmhas.call(store, it); }; } else { var STATE = sharedKey('state'); hiddenKeys[STATE] = true; set = function (it, metadata) { createNonEnumerableProperty(it, STATE, metadata); return metadata; }; get = function (it) { return objectHas(it, STATE) ? it[STATE] : {}; }; has = function (it) { return objectHas(it, STATE); }; } module.exports = { set: set, get: get, has: has, enforce: enforce, getterFor: getterFor }; },{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/is-object":263,"../internals/native-weak-map":272,"../internals/shared-key":299}],260:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); var Iterators = require('../internals/iterators'); var ITERATOR = wellKnownSymbol('iterator'); var ArrayPrototype = Array.prototype; // check on default Array iterator module.exports = function (it) { return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); }; },{"../internals/iterators":268,"../internals/well-known-symbol":314}],261:[function(require,module,exports){ var classof = require('../internals/classof-raw'); // `IsArray` abstract operation // https://tc39.github.io/ecma262/#sec-isarray module.exports = Array.isArray || function isArray(arg) { return classof(arg) == 'Array'; }; },{"../internals/classof-raw":230}],262:[function(require,module,exports){ var fails = require('../internals/fails'); var replacement = /#|\.prototype\./; var isForced = function (feature, detection) { var value = data[normalize(feature)]; return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; }; var normalize = isForced.normalize = function (string) { return String(string).replace(replacement, '.').toLowerCase(); }; var data = isForced.data = {}; var NATIVE = isForced.NATIVE = 'N'; var POLYFILL = isForced.POLYFILL = 'P'; module.exports = isForced; },{"../internals/fails":247}],263:[function(require,module,exports){ module.exports = function (it) { return typeof it === 'object' ? it !== null : typeof it === 'function'; }; },{}],264:[function(require,module,exports){ module.exports = false; },{}],265:[function(require,module,exports){ var isObject = require('../internals/is-object'); var classof = require('../internals/classof-raw'); var wellKnownSymbol = require('../internals/well-known-symbol'); var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation // https://tc39.github.io/ecma262/#sec-isregexp module.exports = function (it) { var isRegExp; return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp'); }; },{"../internals/classof-raw":230,"../internals/is-object":263,"../internals/well-known-symbol":314}],266:[function(require,module,exports){ var anObject = require('../internals/an-object'); var isArrayIteratorMethod = require('../internals/is-array-iterator-method'); var toLength = require('../internals/to-length'); var bind = require('../internals/function-bind-context'); var getIteratorMethod = require('../internals/get-iterator-method'); var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing'); var Result = function (stopped, result) { this.stopped = stopped; this.result = result; }; var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { var boundFunction = bind(fn, that, AS_ENTRIES ? 2 : 1); var iterator, iterFn, index, length, result, next, step; if (IS_ITERATOR) { iterator = iterable; } else { iterFn = getIteratorMethod(iterable); if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators if (isArrayIteratorMethod(iterFn)) { for (index = 0, length = toLength(iterable.length); length > index; index++) { result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); if (result && result instanceof Result) return result; } return new Result(false); } iterator = iterFn.call(iterable); } next = iterator.next; while (!(step = next.call(iterator)).done) { result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); if (typeof result == 'object' && result && result instanceof Result) return result; } return new Result(false); }; iterate.stop = function (result) { return new Result(true, result); }; },{"../internals/an-object":223,"../internals/call-with-safe-iteration-closing":228,"../internals/function-bind-context":248,"../internals/get-iterator-method":250,"../internals/is-array-iterator-method":260,"../internals/to-length":307}],267:[function(require,module,exports){ 'use strict'; var getPrototypeOf = require('../internals/object-get-prototype-of'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var has = require('../internals/has'); var wellKnownSymbol = require('../internals/well-known-symbol'); var IS_PURE = require('../internals/is-pure'); var ITERATOR = wellKnownSymbol('iterator'); var BUGGY_SAFARI_ITERATORS = false; var returnThis = function () { return this; }; // `%IteratorPrototype%` object // https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; if ([].keys) { arrayIterator = [].keys(); // Safari 8 has buggy iterators w/o `next` if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true; else { PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype; } } if (IteratorPrototype == undefined) IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) { createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis); } module.exports = { IteratorPrototype: IteratorPrototype, BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS }; },{"../internals/create-non-enumerable-property":236,"../internals/has":252,"../internals/is-pure":264,"../internals/object-get-prototype-of":283,"../internals/well-known-symbol":314}],268:[function(require,module,exports){ arguments[4][253][0].apply(exports,arguments) },{"dup":253}],269:[function(require,module,exports){ var global = require('../internals/global'); var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f; var classof = require('../internals/classof-raw'); var macrotask = require('../internals/task').set; var IS_IOS = require('../internals/engine-is-ios'); var MutationObserver = global.MutationObserver || global.WebKitMutationObserver; var process = global.process; var Promise = global.Promise; var IS_NODE = classof(process) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask'); var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method if (!queueMicrotask) { flush = function () { var parent, fn; if (IS_NODE && (parent = process.domain)) parent.exit(); while (head) { fn = head.fn; head = head.next; try { fn(); } catch (error) { if (head) notify(); else last = undefined; throw error; } } last = undefined; if (parent) parent.enter(); }; // Node.js if (IS_NODE) { notify = function () { process.nextTick(flush); }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 } else if (MutationObserver && !IS_IOS) { toggle = true; node = document.createTextNode(''); new MutationObserver(flush).observe(node, { characterData: true }); notify = function () { node.data = toggle = !toggle; }; // environments with maybe non-completely correct, but existent Promise } else if (Promise && Promise.resolve) { // Promise.resolve without an argument throws an error in LG WebOS 2 promise = Promise.resolve(undefined); then = promise.then; notify = function () { then.call(promise, flush); }; // for other environments - macrotask based on: // - setImmediate // - MessageChannel // - window.postMessag // - onreadystatechange // - setTimeout } else { notify = function () { // strange IE + webpack dev server bug - use .call(global) macrotask.call(global, flush); }; } } module.exports = queueMicrotask || function (fn) { var task = { fn: fn, next: undefined }; if (last) last.next = task; if (!head) { head = task; notify(); } last = task; }; },{"../internals/classof-raw":230,"../internals/engine-is-ios":242,"../internals/global":251,"../internals/object-get-own-property-descriptor":279,"../internals/task":303}],270:[function(require,module,exports){ var global = require('../internals/global'); module.exports = global.Promise; },{"../internals/global":251}],271:[function(require,module,exports){ var fails = require('../internals/fails'); module.exports = !!Object.getOwnPropertySymbols && !fails(function () { // Chrome 38 Symbol has incorrect toString conversion // eslint-disable-next-line no-undef return !String(Symbol()); }); },{"../internals/fails":247}],272:[function(require,module,exports){ var global = require('../internals/global'); var inspectSource = require('../internals/inspect-source'); var WeakMap = global.WeakMap; module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); },{"../internals/global":251,"../internals/inspect-source":258}],273:[function(require,module,exports){ 'use strict'; var aFunction = require('../internals/a-function'); var PromiseCapability = function (C) { var resolve, reject; this.promise = new C(function ($$resolve, $$reject) { if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); resolve = $$resolve; reject = $$reject; }); this.resolve = aFunction(resolve); this.reject = aFunction(reject); }; // 25.4.1.5 NewPromiseCapability(C) module.exports.f = function (C) { return new PromiseCapability(C); }; },{"../internals/a-function":219}],274:[function(require,module,exports){ var isRegExp = require('../internals/is-regexp'); module.exports = function (it) { if (isRegExp(it)) { throw TypeError("The method doesn't accept regular expressions"); } return it; }; },{"../internals/is-regexp":265}],275:[function(require,module,exports){ 'use strict'; var DESCRIPTORS = require('../internals/descriptors'); var fails = require('../internals/fails'); var objectKeys = require('../internals/object-keys'); var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); var toObject = require('../internals/to-object'); var IndexedObject = require('../internals/indexed-object'); var nativeAssign = Object.assign; var defineProperty = Object.defineProperty; // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign module.exports = !nativeAssign || fails(function () { // should have correct order of operations (Edge bug) if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', { enumerable: true, get: function () { defineProperty(this, 'b', { value: 3, enumerable: false }); } }), { b: 2 })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug) var A = {}; var B = {}; // eslint-disable-next-line no-undef var symbol = Symbol(); var alphabet = 'abcdefghijklmnopqrst'; A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; }) ? function assign(target, source) { // eslint-disable-line no-unused-vars var T = toObject(target); var argumentsLength = arguments.length; var index = 1; var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; var propertyIsEnumerable = propertyIsEnumerableModule.f; while (argumentsLength > index) { var S = IndexedObject(arguments[index++]); var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); var length = keys.length; var j = 0; var key; while (length > j) { key = keys[j++]; if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key]; } } return T; } : nativeAssign; },{"../internals/descriptors":240,"../internals/fails":247,"../internals/indexed-object":257,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-object":308}],276:[function(require,module,exports){ var anObject = require('../internals/an-object'); var defineProperties = require('../internals/object-define-properties'); var enumBugKeys = require('../internals/enum-bug-keys'); var hiddenKeys = require('../internals/hidden-keys'); var html = require('../internals/html'); var documentCreateElement = require('../internals/document-create-element'); var sharedKey = require('../internals/shared-key'); var GT = '>'; var LT = '<'; var PROTOTYPE = 'prototype'; var SCRIPT = 'script'; var IE_PROTO = sharedKey('IE_PROTO'); var EmptyConstructor = function () { /* empty */ }; var scriptTag = function (content) { return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT; }; // Create object with fake `null` prototype: use ActiveX Object with cleared prototype var NullProtoObjectViaActiveX = function (activeXDocument) { activeXDocument.write(scriptTag('')); activeXDocument.close(); var temp = activeXDocument.parentWindow.Object; activeXDocument = null; // avoid memory leak return temp; }; // Create object with fake `null` prototype: use iframe Object with cleared prototype var NullProtoObjectViaIFrame = function () { // Thrash, waste and sodomy: IE GC bug var iframe = documentCreateElement('iframe'); var JS = 'java' + SCRIPT + ':'; var iframeDocument; iframe.style.display = 'none'; html.appendChild(iframe); // https://github.com/zloirock/core-js/issues/475 iframe.src = String(JS); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(scriptTag('document.F=Object')); iframeDocument.close(); return iframeDocument.F; }; // Check for document.domain and active x support // No need to use active x approach when document.domain is not set // see https://github.com/es-shims/es5-shim/issues/150 // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346 // avoid IE GC bug var activeXDocument; var NullProtoObject = function () { try { /* global ActiveXObject */ activeXDocument = document.domain && new ActiveXObject('htmlfile'); } catch (error) { /* ignore */ } NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame(); var length = enumBugKeys.length; while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]]; return NullProtoObject(); }; hiddenKeys[IE_PROTO] = true; // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create module.exports = Object.create || function create(O, Properties) { var result; if (O !== null) { EmptyConstructor[PROTOTYPE] = anObject(O); result = new EmptyConstructor(); EmptyConstructor[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = NullProtoObject(); return Properties === undefined ? result : defineProperties(result, Properties); }; },{"../internals/an-object":223,"../internals/document-create-element":241,"../internals/enum-bug-keys":245,"../internals/hidden-keys":253,"../internals/html":255,"../internals/object-define-properties":277,"../internals/shared-key":299}],277:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var definePropertyModule = require('../internals/object-define-property'); var anObject = require('../internals/an-object'); var objectKeys = require('../internals/object-keys'); // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { anObject(O); var keys = objectKeys(Properties); var length = keys.length; var index = 0; var key; while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); return O; }; },{"../internals/an-object":223,"../internals/descriptors":240,"../internals/object-define-property":278,"../internals/object-keys":285}],278:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); var anObject = require('../internals/an-object'); var toPrimitive = require('../internals/to-primitive'); var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { anObject(O); P = toPrimitive(P, true); anObject(Attributes); if (IE8_DOM_DEFINE) try { return nativeDefineProperty(O, P, Attributes); } catch (error) { /* empty */ } if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); if ('value' in Attributes) O[P] = Attributes.value; return O; }; },{"../internals/an-object":223,"../internals/descriptors":240,"../internals/ie8-dom-define":256,"../internals/to-primitive":309}],279:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); var createPropertyDescriptor = require('../internals/create-property-descriptor'); var toIndexedObject = require('../internals/to-indexed-object'); var toPrimitive = require('../internals/to-primitive'); var has = require('../internals/has'); var IE8_DOM_DEFINE = require('../internals/ie8-dom-define'); var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { O = toIndexedObject(O); P = toPrimitive(P, true); if (IE8_DOM_DEFINE) try { return nativeGetOwnPropertyDescriptor(O, P); } catch (error) { /* empty */ } if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); }; },{"../internals/create-property-descriptor":237,"../internals/descriptors":240,"../internals/has":252,"../internals/ie8-dom-define":256,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305,"../internals/to-primitive":309}],280:[function(require,module,exports){ var toIndexedObject = require('../internals/to-indexed-object'); var nativeGetOwnPropertyNames = require('../internals/object-get-own-property-names').f; var toString = {}.toString; var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : []; var getWindowNames = function (it) { try { return nativeGetOwnPropertyNames(it); } catch (error) { return windowNames.slice(); } }; // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window module.exports.f = function getOwnPropertyNames(it) { return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : nativeGetOwnPropertyNames(toIndexedObject(it)); }; },{"../internals/object-get-own-property-names":281,"../internals/to-indexed-object":305}],281:[function(require,module,exports){ var internalObjectKeys = require('../internals/object-keys-internal'); var enumBugKeys = require('../internals/enum-bug-keys'); var hiddenKeys = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { return internalObjectKeys(O, hiddenKeys); }; },{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],282:[function(require,module,exports){ exports.f = Object.getOwnPropertySymbols; },{}],283:[function(require,module,exports){ var has = require('../internals/has'); var toObject = require('../internals/to-object'); var sharedKey = require('../internals/shared-key'); var CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter'); var IE_PROTO = sharedKey('IE_PROTO'); var ObjectPrototype = Object.prototype; // `Object.getPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.getprototypeof module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) { O = toObject(O); if (has(O, IE_PROTO)) return O[IE_PROTO]; if (typeof O.constructor == 'function' && O instanceof O.constructor) { return O.constructor.prototype; } return O instanceof Object ? ObjectPrototype : null; }; },{"../internals/correct-prototype-getter":234,"../internals/has":252,"../internals/shared-key":299,"../internals/to-object":308}],284:[function(require,module,exports){ var has = require('../internals/has'); var toIndexedObject = require('../internals/to-indexed-object'); var indexOf = require('../internals/array-includes').indexOf; var hiddenKeys = require('../internals/hidden-keys'); module.exports = function (object, names) { var O = toIndexedObject(object); var i = 0; var result = []; var key; for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); // Don't enum bug & hidden keys while (names.length > i) if (has(O, key = names[i++])) { ~indexOf(result, key) || result.push(key); } return result; }; },{"../internals/array-includes":224,"../internals/has":252,"../internals/hidden-keys":253,"../internals/to-indexed-object":305}],285:[function(require,module,exports){ var internalObjectKeys = require('../internals/object-keys-internal'); var enumBugKeys = require('../internals/enum-bug-keys'); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys module.exports = Object.keys || function keys(O) { return internalObjectKeys(O, enumBugKeys); }; },{"../internals/enum-bug-keys":245,"../internals/object-keys-internal":284}],286:[function(require,module,exports){ 'use strict'; var nativePropertyIsEnumerable = {}.propertyIsEnumerable; var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); // `Object.prototype.propertyIsEnumerable` method implementation // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { var descriptor = getOwnPropertyDescriptor(this, V); return !!descriptor && descriptor.enumerable; } : nativePropertyIsEnumerable; },{}],287:[function(require,module,exports){ var anObject = require('../internals/an-object'); var aPossiblePrototype = require('../internals/a-possible-prototype'); // `Object.setPrototypeOf` method // https://tc39.github.io/ecma262/#sec-object.setprototypeof // Works with __proto__ only. Old v8 can't work with null proto objects. /* eslint-disable no-proto */ module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () { var CORRECT_SETTER = false; var test = {}; var setter; try { setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set; setter.call(test, []); CORRECT_SETTER = test instanceof Array; } catch (error) { /* empty */ } return function setPrototypeOf(O, proto) { anObject(O); aPossiblePrototype(proto); if (CORRECT_SETTER) setter.call(O, proto); else O.__proto__ = proto; return O; }; }() : undefined); },{"../internals/a-possible-prototype":220,"../internals/an-object":223}],288:[function(require,module,exports){ var DESCRIPTORS = require('../internals/descriptors'); var objectKeys = require('../internals/object-keys'); var toIndexedObject = require('../internals/to-indexed-object'); var propertyIsEnumerable = require('../internals/object-property-is-enumerable').f; // `Object.{ entries, values }` methods implementation var createMethod = function (TO_ENTRIES) { return function (it) { var O = toIndexedObject(it); var keys = objectKeys(O); var length = keys.length; var i = 0; var result = []; var key; while (length > i) { key = keys[i++]; if (!DESCRIPTORS || propertyIsEnumerable.call(O, key)) { result.push(TO_ENTRIES ? [key, O[key]] : O[key]); } } return result; }; }; module.exports = { // `Object.entries` method // https://tc39.github.io/ecma262/#sec-object.entries entries: createMethod(true), // `Object.values` method // https://tc39.github.io/ecma262/#sec-object.values values: createMethod(false) }; },{"../internals/descriptors":240,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/to-indexed-object":305}],289:[function(require,module,exports){ var getBuiltIn = require('../internals/get-built-in'); var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); var anObject = require('../internals/an-object'); // all object keys, includes non-enumerable and symbols module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { var keys = getOwnPropertyNamesModule.f(anObject(it)); var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; }; },{"../internals/an-object":223,"../internals/get-built-in":249,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-symbols":282}],290:[function(require,module,exports){ var global = require('../internals/global'); module.exports = global; },{"../internals/global":251}],291:[function(require,module,exports){ module.exports = function (exec) { try { return { error: false, value: exec() }; } catch (error) { return { error: true, value: error }; } }; },{}],292:[function(require,module,exports){ var anObject = require('../internals/an-object'); var isObject = require('../internals/is-object'); var newPromiseCapability = require('../internals/new-promise-capability'); module.exports = function (C, x) { anObject(C); if (isObject(x) && x.constructor === C) return x; var promiseCapability = newPromiseCapability.f(C); var resolve = promiseCapability.resolve; resolve(x); return promiseCapability.promise; }; },{"../internals/an-object":223,"../internals/is-object":263,"../internals/new-promise-capability":273}],293:[function(require,module,exports){ var redefine = require('../internals/redefine'); module.exports = function (target, src, options) { for (var key in src) redefine(target, key, src[key], options); return target; }; },{"../internals/redefine":294}],294:[function(require,module,exports){ var global = require('../internals/global'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var has = require('../internals/has'); var setGlobal = require('../internals/set-global'); var inspectSource = require('../internals/inspect-source'); var InternalStateModule = require('../internals/internal-state'); var getInternalState = InternalStateModule.get; var enforceInternalState = InternalStateModule.enforce; var TEMPLATE = String(String).split('String'); (module.exports = function (O, key, value, options) { var unsafe = options ? !!options.unsafe : false; var simple = options ? !!options.enumerable : false; var noTargetGet = options ? !!options.noTargetGet : false; if (typeof value == 'function') { if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); } if (O === global) { if (simple) O[key] = value; else setGlobal(key, value); return; } else if (!unsafe) { delete O[key]; } else if (!noTargetGet && O[key]) { simple = true; } if (simple) O[key] = value; else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative })(Function.prototype, 'toString', function toString() { return typeof this == 'function' && getInternalState(this).source || inspectSource(this); }); },{"../internals/create-non-enumerable-property":236,"../internals/global":251,"../internals/has":252,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/set-global":296}],295:[function(require,module,exports){ // `RequireObjectCoercible` abstract operation // https://tc39.github.io/ecma262/#sec-requireobjectcoercible module.exports = function (it) { if (it == undefined) throw TypeError("Can't call method on " + it); return it; }; },{}],296:[function(require,module,exports){ var global = require('../internals/global'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); module.exports = function (key, value) { try { createNonEnumerableProperty(global, key, value); } catch (error) { global[key] = value; } return value; }; },{"../internals/create-non-enumerable-property":236,"../internals/global":251}],297:[function(require,module,exports){ 'use strict'; var getBuiltIn = require('../internals/get-built-in'); var definePropertyModule = require('../internals/object-define-property'); var wellKnownSymbol = require('../internals/well-known-symbol'); var DESCRIPTORS = require('../internals/descriptors'); var SPECIES = wellKnownSymbol('species'); module.exports = function (CONSTRUCTOR_NAME) { var Constructor = getBuiltIn(CONSTRUCTOR_NAME); var defineProperty = definePropertyModule.f; if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) { defineProperty(Constructor, SPECIES, { configurable: true, get: function () { return this; } }); } }; },{"../internals/descriptors":240,"../internals/get-built-in":249,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],298:[function(require,module,exports){ var defineProperty = require('../internals/object-define-property').f; var has = require('../internals/has'); var wellKnownSymbol = require('../internals/well-known-symbol'); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); module.exports = function (it, TAG, STATIC) { if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); } }; },{"../internals/has":252,"../internals/object-define-property":278,"../internals/well-known-symbol":314}],299:[function(require,module,exports){ var shared = require('../internals/shared'); var uid = require('../internals/uid'); var keys = shared('keys'); module.exports = function (key) { return keys[key] || (keys[key] = uid(key)); }; },{"../internals/shared":301,"../internals/uid":311}],300:[function(require,module,exports){ var global = require('../internals/global'); var setGlobal = require('../internals/set-global'); var SHARED = '__core-js_shared__'; var store = global[SHARED] || setGlobal(SHARED, {}); module.exports = store; },{"../internals/global":251,"../internals/set-global":296}],301:[function(require,module,exports){ var IS_PURE = require('../internals/is-pure'); var store = require('../internals/shared-store'); (module.exports = function (key, value) { return store[key] || (store[key] = value !== undefined ? value : {}); })('versions', []).push({ version: '3.6.5', mode: IS_PURE ? 'pure' : 'global', copyright: '© 2020 Denis Pushkarev (zloirock.ru)' }); },{"../internals/is-pure":264,"../internals/shared-store":300}],302:[function(require,module,exports){ var anObject = require('../internals/an-object'); var aFunction = require('../internals/a-function'); var wellKnownSymbol = require('../internals/well-known-symbol'); var SPECIES = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation // https://tc39.github.io/ecma262/#sec-speciesconstructor module.exports = function (O, defaultConstructor) { var C = anObject(O).constructor; var S; return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); }; },{"../internals/a-function":219,"../internals/an-object":223,"../internals/well-known-symbol":314}],303:[function(require,module,exports){ var global = require('../internals/global'); var fails = require('../internals/fails'); var classof = require('../internals/classof-raw'); var bind = require('../internals/function-bind-context'); var html = require('../internals/html'); var createElement = require('../internals/document-create-element'); var IS_IOS = require('../internals/engine-is-ios'); var location = global.location; var set = global.setImmediate; var clear = global.clearImmediate; var process = global.process; var MessageChannel = global.MessageChannel; var Dispatch = global.Dispatch; var counter = 0; var queue = {}; var ONREADYSTATECHANGE = 'onreadystatechange'; var defer, channel, port; var run = function (id) { // eslint-disable-next-line no-prototype-builtins if (queue.hasOwnProperty(id)) { var fn = queue[id]; delete queue[id]; fn(); } }; var runner = function (id) { return function () { run(id); }; }; var listener = function (event) { run(event.data); }; var post = function (id) { // old engines have not location.origin global.postMessage(id + '', location.protocol + '//' + location.host); }; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: if (!set || !clear) { set = function setImmediate(fn) { var args = []; var i = 1; while (arguments.length > i) args.push(arguments[i++]); queue[++counter] = function () { // eslint-disable-next-line no-new-func (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); }; defer(counter); return counter; }; clear = function clearImmediate(id) { delete queue[id]; }; // Node.js 0.8- if (classof(process) == 'process') { defer = function (id) { process.nextTick(runner(id)); }; // Sphere (JS game engine) Dispatch API } else if (Dispatch && Dispatch.now) { defer = function (id) { Dispatch.now(runner(id)); }; // Browsers with MessageChannel, includes WebWorkers // except iOS - https://github.com/zloirock/core-js/issues/624 } else if (MessageChannel && !IS_IOS) { channel = new MessageChannel(); port = channel.port2; channel.port1.onmessage = listener; defer = bind(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' } else if ( global.addEventListener && typeof postMessage == 'function' && !global.importScripts && !fails(post) && location.protocol !== 'file:' ) { defer = post; global.addEventListener('message', listener, false); // IE8- } else if (ONREADYSTATECHANGE in createElement('script')) { defer = function (id) { html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () { html.removeChild(this); run(id); }; }; // Rest old browsers } else { defer = function (id) { setTimeout(runner(id), 0); }; } } module.exports = { set: set, clear: clear }; },{"../internals/classof-raw":230,"../internals/document-create-element":241,"../internals/engine-is-ios":242,"../internals/fails":247,"../internals/function-bind-context":248,"../internals/global":251,"../internals/html":255}],304:[function(require,module,exports){ var toInteger = require('../internals/to-integer'); var max = Math.max; var min = Math.min; // Helper for a popular repeating case of the spec: // Let integer be ? ToInteger(index). // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). module.exports = function (index, length) { var integer = toInteger(index); return integer < 0 ? max(integer + length, 0) : min(integer, length); }; },{"../internals/to-integer":306}],305:[function(require,module,exports){ // toObject with fallback for non-array-like ES3 strings var IndexedObject = require('../internals/indexed-object'); var requireObjectCoercible = require('../internals/require-object-coercible'); module.exports = function (it) { return IndexedObject(requireObjectCoercible(it)); }; },{"../internals/indexed-object":257,"../internals/require-object-coercible":295}],306:[function(require,module,exports){ var ceil = Math.ceil; var floor = Math.floor; // `ToInteger` abstract operation // https://tc39.github.io/ecma262/#sec-tointeger module.exports = function (argument) { return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); }; },{}],307:[function(require,module,exports){ var toInteger = require('../internals/to-integer'); var min = Math.min; // `ToLength` abstract operation // https://tc39.github.io/ecma262/#sec-tolength module.exports = function (argument) { return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 }; },{"../internals/to-integer":306}],308:[function(require,module,exports){ var requireObjectCoercible = require('../internals/require-object-coercible'); // `ToObject` abstract operation // https://tc39.github.io/ecma262/#sec-toobject module.exports = function (argument) { return Object(requireObjectCoercible(argument)); }; },{"../internals/require-object-coercible":295}],309:[function(require,module,exports){ var isObject = require('../internals/is-object'); // `ToPrimitive` abstract operation // https://tc39.github.io/ecma262/#sec-toprimitive // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function (input, PREFERRED_STRING) { if (!isObject(input)) return input; var fn, val; if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; throw TypeError("Can't convert object to primitive value"); }; },{"../internals/is-object":263}],310:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); var TO_STRING_TAG = wellKnownSymbol('toStringTag'); var test = {}; test[TO_STRING_TAG] = 'z'; module.exports = String(test) === '[object z]'; },{"../internals/well-known-symbol":314}],311:[function(require,module,exports){ var id = 0; var postfix = Math.random(); module.exports = function (key) { return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); }; },{}],312:[function(require,module,exports){ var NATIVE_SYMBOL = require('../internals/native-symbol'); module.exports = NATIVE_SYMBOL // eslint-disable-next-line no-undef && !Symbol.sham // eslint-disable-next-line no-undef && typeof Symbol.iterator == 'symbol'; },{"../internals/native-symbol":271}],313:[function(require,module,exports){ var wellKnownSymbol = require('../internals/well-known-symbol'); exports.f = wellKnownSymbol; },{"../internals/well-known-symbol":314}],314:[function(require,module,exports){ var global = require('../internals/global'); var shared = require('../internals/shared'); var has = require('../internals/has'); var uid = require('../internals/uid'); var NATIVE_SYMBOL = require('../internals/native-symbol'); var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid'); var WellKnownSymbolsStore = shared('wks'); var Symbol = global.Symbol; var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid; module.exports = function (name) { if (!has(WellKnownSymbolsStore, name)) { if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name]; else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); } return WellKnownSymbolsStore[name]; }; },{"../internals/global":251,"../internals/has":252,"../internals/native-symbol":271,"../internals/shared":301,"../internals/uid":311,"../internals/use-symbol-as-uid":312}],315:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var $findIndex = require('../internals/array-iteration').findIndex; var addToUnscopables = require('../internals/add-to-unscopables'); var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); var FIND_INDEX = 'findIndex'; var SKIPS_HOLES = true; var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX); // Shouldn't skip holes if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; }); // `Array.prototype.findIndex` method // https://tc39.github.io/ecma262/#sec-array.prototype.findindex $({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, { findIndex: function findIndex(callbackfn /* , that = undefined */) { return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND_INDEX); },{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],316:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var $find = require('../internals/array-iteration').find; var addToUnscopables = require('../internals/add-to-unscopables'); var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); var FIND = 'find'; var SKIPS_HOLES = true; var USES_TO_LENGTH = arrayMethodUsesToLength(FIND); // Shouldn't skip holes if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; }); // `Array.prototype.find` method // https://tc39.github.io/ecma262/#sec-array.prototype.find $({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, { find: function find(callbackfn /* , that = undefined */) { return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables(FIND); },{"../internals/add-to-unscopables":221,"../internals/array-iteration":225,"../internals/array-method-uses-to-length":226,"../internals/export":246}],317:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var $includes = require('../internals/array-includes').includes; var addToUnscopables = require('../internals/add-to-unscopables'); var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length'); var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 }); // `Array.prototype.includes` method // https://tc39.github.io/ecma262/#sec-array.prototype.includes $({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, { includes: function includes(el /* , fromIndex = 0 */) { return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); } }); // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('includes'); },{"../internals/add-to-unscopables":221,"../internals/array-includes":224,"../internals/array-method-uses-to-length":226,"../internals/export":246}],318:[function(require,module,exports){ 'use strict'; var toIndexedObject = require('../internals/to-indexed-object'); var addToUnscopables = require('../internals/add-to-unscopables'); var Iterators = require('../internals/iterators'); var InternalStateModule = require('../internals/internal-state'); var defineIterator = require('../internals/define-iterator'); var ARRAY_ITERATOR = 'Array Iterator'; var setInternalState = InternalStateModule.set; var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR); // `Array.prototype.entries` method // https://tc39.github.io/ecma262/#sec-array.prototype.entries // `Array.prototype.keys` method // https://tc39.github.io/ecma262/#sec-array.prototype.keys // `Array.prototype.values` method // https://tc39.github.io/ecma262/#sec-array.prototype.values // `Array.prototype[@@iterator]` method // https://tc39.github.io/ecma262/#sec-array.prototype-@@iterator // `CreateArrayIterator` internal method // https://tc39.github.io/ecma262/#sec-createarrayiterator module.exports = defineIterator(Array, 'Array', function (iterated, kind) { setInternalState(this, { type: ARRAY_ITERATOR, target: toIndexedObject(iterated), // target index: 0, // next index kind: kind // kind }); // `%ArrayIteratorPrototype%.next` method // https://tc39.github.io/ecma262/#sec-%arrayiteratorprototype%.next }, function () { var state = getInternalState(this); var target = state.target; var kind = state.kind; var index = state.index++; if (!target || index >= target.length) { state.target = undefined; return { value: undefined, done: true }; } if (kind == 'keys') return { value: index, done: false }; if (kind == 'values') return { value: target[index], done: false }; return { value: [index, target[index]], done: false }; }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% // https://tc39.github.io/ecma262/#sec-createunmappedargumentsobject // https://tc39.github.io/ecma262/#sec-createmappedargumentsobject Iterators.Arguments = Iterators.Array; // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); },{"../internals/add-to-unscopables":221,"../internals/define-iterator":238,"../internals/internal-state":259,"../internals/iterators":268,"../internals/to-indexed-object":305}],319:[function(require,module,exports){ var $ = require('../internals/export'); // `Number.isNaN` method // https://tc39.github.io/ecma262/#sec-number.isnan $({ target: 'Number', stat: true }, { isNaN: function isNaN(number) { // eslint-disable-next-line no-self-compare return number != number; } }); },{"../internals/export":246}],320:[function(require,module,exports){ var $ = require('../internals/export'); var assign = require('../internals/object-assign'); // `Object.assign` method // https://tc39.github.io/ecma262/#sec-object.assign $({ target: 'Object', stat: true, forced: Object.assign !== assign }, { assign: assign }); },{"../internals/export":246,"../internals/object-assign":275}],321:[function(require,module,exports){ var $ = require('../internals/export'); var toObject = require('../internals/to-object'); var nativeKeys = require('../internals/object-keys'); var fails = require('../internals/fails'); var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); }); // `Object.keys` method // https://tc39.github.io/ecma262/#sec-object.keys $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, { keys: function keys(it) { return nativeKeys(toObject(it)); } }); },{"../internals/export":246,"../internals/fails":247,"../internals/object-keys":285,"../internals/to-object":308}],322:[function(require,module,exports){ var $ = require('../internals/export'); var $values = require('../internals/object-to-array').values; // `Object.values` method // https://tc39.github.io/ecma262/#sec-object.values $({ target: 'Object', stat: true }, { values: function values(O) { return $values(O); } }); },{"../internals/export":246,"../internals/object-to-array":288}],323:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var IS_PURE = require('../internals/is-pure'); var global = require('../internals/global'); var getBuiltIn = require('../internals/get-built-in'); var NativePromise = require('../internals/native-promise-constructor'); var redefine = require('../internals/redefine'); var redefineAll = require('../internals/redefine-all'); var setToStringTag = require('../internals/set-to-string-tag'); var setSpecies = require('../internals/set-species'); var isObject = require('../internals/is-object'); var aFunction = require('../internals/a-function'); var anInstance = require('../internals/an-instance'); var classof = require('../internals/classof-raw'); var inspectSource = require('../internals/inspect-source'); var iterate = require('../internals/iterate'); var checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration'); var speciesConstructor = require('../internals/species-constructor'); var task = require('../internals/task').set; var microtask = require('../internals/microtask'); var promiseResolve = require('../internals/promise-resolve'); var hostReportErrors = require('../internals/host-report-errors'); var newPromiseCapabilityModule = require('../internals/new-promise-capability'); var perform = require('../internals/perform'); var InternalStateModule = require('../internals/internal-state'); var isForced = require('../internals/is-forced'); var wellKnownSymbol = require('../internals/well-known-symbol'); var V8_VERSION = require('../internals/engine-v8-version'); var SPECIES = wellKnownSymbol('species'); var PROMISE = 'Promise'; var getInternalState = InternalStateModule.get; var setInternalState = InternalStateModule.set; var getInternalPromiseState = InternalStateModule.getterFor(PROMISE); var PromiseConstructor = NativePromise; var TypeError = global.TypeError; var document = global.document; var process = global.process; var $fetch = getBuiltIn('fetch'); var newPromiseCapability = newPromiseCapabilityModule.f; var newGenericPromiseCapability = newPromiseCapability; var IS_NODE = classof(process) == 'process'; var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent); var UNHANDLED_REJECTION = 'unhandledrejection'; var REJECTION_HANDLED = 'rejectionhandled'; var PENDING = 0; var FULFILLED = 1; var REJECTED = 2; var HANDLED = 1; var UNHANDLED = 2; var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; var FORCED = isForced(PROMISE, function () { var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); if (!GLOBAL_CORE_JS_PROMISE) { // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 // We can't detect it synchronously, so just check versions if (V8_VERSION === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test if (!IS_NODE && typeof PromiseRejectionEvent != 'function') return true; } // We need Promise#finally in the pure version for preventing prototype pollution if (IS_PURE && !PromiseConstructor.prototype['finally']) return true; // We can't use @@species feature detection in V8 since it causes // deoptimization and performance degradation // https://github.com/zloirock/core-js/issues/679 if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false; // Detect correctness of subclassing with @@species support var promise = PromiseConstructor.resolve(1); var FakePromise = function (exec) { exec(function () { /* empty */ }, function () { /* empty */ }); }; var constructor = promise.constructor = {}; constructor[SPECIES] = FakePromise; return !(promise.then(function () { /* empty */ }) instanceof FakePromise); }); var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { PromiseConstructor.all(iterable)['catch'](function () { /* empty */ }); }); // helpers var isThenable = function (it) { var then; return isObject(it) && typeof (then = it.then) == 'function' ? then : false; }; var notify = function (promise, state, isReject) { if (state.notified) return; state.notified = true; var chain = state.reactions; microtask(function () { var value = state.value; var ok = state.state == FULFILLED; var index = 0; // variable length - can't use forEach while (chain.length > index) { var reaction = chain[index++]; var handler = ok ? reaction.ok : reaction.fail; var resolve = reaction.resolve; var reject = reaction.reject; var domain = reaction.domain; var result, then, exited; try { if (handler) { if (!ok) { if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); state.rejection = HANDLED; } if (handler === true) result = value; else { if (domain) domain.enter(); result = handler(value); // can throw if (domain) { domain.exit(); exited = true; } } if (result === reaction.promise) { reject(TypeError('Promise-chain cycle')); } else if (then = isThenable(result)) { then.call(result, resolve, reject); } else resolve(result); } else reject(value); } catch (error) { if (domain && !exited) domain.exit(); reject(error); } } state.reactions = []; state.notified = false; if (isReject && !state.rejection) onUnhandled(promise, state); }); }; var dispatchEvent = function (name, promise, reason) { var event, handler; if (DISPATCH_EVENT) { event = document.createEvent('Event'); event.promise = promise; event.reason = reason; event.initEvent(name, false, true); global.dispatchEvent(event); } else event = { promise: promise, reason: reason }; if (handler = global['on' + name]) handler(event); else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); }; var onUnhandled = function (promise, state) { task.call(global, function () { var value = state.value; var IS_UNHANDLED = isUnhandled(state); var result; if (IS_UNHANDLED) { result = perform(function () { if (IS_NODE) { process.emit('unhandledRejection', value, promise); } else dispatchEvent(UNHANDLED_REJECTION, promise, value); }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED; if (result.error) throw result.value; } }); }; var isUnhandled = function (state) { return state.rejection !== HANDLED && !state.parent; }; var onHandleUnhandled = function (promise, state) { task.call(global, function () { if (IS_NODE) { process.emit('rejectionHandled', promise); } else dispatchEvent(REJECTION_HANDLED, promise, state.value); }); }; var bind = function (fn, promise, state, unwrap) { return function (value) { fn(promise, state, value, unwrap); }; }; var internalReject = function (promise, state, value, unwrap) { if (state.done) return; state.done = true; if (unwrap) state = unwrap; state.value = value; state.state = REJECTED; notify(promise, state, true); }; var internalResolve = function (promise, state, value, unwrap) { if (state.done) return; state.done = true; if (unwrap) state = unwrap; try { if (promise === value) throw TypeError("Promise can't be resolved itself"); var then = isThenable(value); if (then) { microtask(function () { var wrapper = { done: false }; try { then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state) ); } catch (error) { internalReject(promise, wrapper, error, state); } }); } else { state.value = value; state.state = FULFILLED; notify(promise, state, false); } } catch (error) { internalReject(promise, { done: false }, error, state); } }; // constructor polyfill if (FORCED) { // 25.4.3.1 Promise(executor) PromiseConstructor = function Promise(executor) { anInstance(this, PromiseConstructor, PROMISE); aFunction(executor); Internal.call(this); var state = getInternalState(this); try { executor(bind(internalResolve, this, state), bind(internalReject, this, state)); } catch (error) { internalReject(this, state, error); } }; // eslint-disable-next-line no-unused-vars Internal = function Promise(executor) { setInternalState(this, { type: PROMISE, done: false, notified: false, parent: false, reactions: [], rejection: false, state: PENDING, value: undefined }); }; Internal.prototype = redefineAll(PromiseConstructor.prototype, { // `Promise.prototype.then` method // https://tc39.github.io/ecma262/#sec-promise.prototype.then then: function then(onFulfilled, onRejected) { var state = getInternalPromiseState(this); var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor)); reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; reaction.fail = typeof onRejected == 'function' && onRejected; reaction.domain = IS_NODE ? process.domain : undefined; state.parent = true; state.reactions.push(reaction); if (state.state != PENDING) notify(this, state, false); return reaction.promise; }, // `Promise.prototype.catch` method // https://tc39.github.io/ecma262/#sec-promise.prototype.catch 'catch': function (onRejected) { return this.then(undefined, onRejected); } }); OwnPromiseCapability = function () { var promise = new Internal(); var state = getInternalState(promise); this.promise = promise; this.resolve = bind(internalResolve, promise, state); this.reject = bind(internalReject, promise, state); }; newPromiseCapabilityModule.f = newPromiseCapability = function (C) { return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); }; if (!IS_PURE && typeof NativePromise == 'function') { nativeThen = NativePromise.prototype.then; // wrap native Promise#then for native async functions redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) { var that = this; return new PromiseConstructor(function (resolve, reject) { nativeThen.call(that, resolve, reject); }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640 }, { unsafe: true }); // wrap fetch result if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, { // eslint-disable-next-line no-unused-vars fetch: function fetch(input /* , init */) { return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments)); } }); } } $({ global: true, wrap: true, forced: FORCED }, { Promise: PromiseConstructor }); setToStringTag(PromiseConstructor, PROMISE, false, true); setSpecies(PROMISE); PromiseWrapper = getBuiltIn(PROMISE); // statics $({ target: PROMISE, stat: true, forced: FORCED }, { // `Promise.reject` method // https://tc39.github.io/ecma262/#sec-promise.reject reject: function reject(r) { var capability = newPromiseCapability(this); capability.reject.call(undefined, r); return capability.promise; } }); $({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, { // `Promise.resolve` method // https://tc39.github.io/ecma262/#sec-promise.resolve resolve: function resolve(x) { return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x); } }); $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, { // `Promise.all` method // https://tc39.github.io/ecma262/#sec-promise.all all: function all(iterable) { var C = this; var capability = newPromiseCapability(C); var resolve = capability.resolve; var reject = capability.reject; var result = perform(function () { var $promiseResolve = aFunction(C.resolve); var values = []; var counter = 0; var remaining = 1; iterate(iterable, function (promise) { var index = counter++; var alreadyCalled = false; values.push(undefined); remaining++; $promiseResolve.call(C, promise).then(function (value) { if (alreadyCalled) return; alreadyCalled = true; values[index] = value; --remaining || resolve(values); }, reject); }); --remaining || resolve(values); }); if (result.error) reject(result.value); return capability.promise; }, // `Promise.race` method // https://tc39.github.io/ecma262/#sec-promise.race race: function race(iterable) { var C = this; var capability = newPromiseCapability(C); var reject = capability.reject; var result = perform(function () { var $promiseResolve = aFunction(C.resolve); iterate(iterable, function (promise) { $promiseResolve.call(C, promise).then(capability.resolve, reject); }); }); if (result.error) reject(result.value); return capability.promise; } }); },{"../internals/a-function":219,"../internals/an-instance":222,"../internals/check-correctness-of-iteration":229,"../internals/classof-raw":230,"../internals/engine-v8-version":244,"../internals/export":246,"../internals/get-built-in":249,"../internals/global":251,"../internals/host-report-errors":254,"../internals/inspect-source":258,"../internals/internal-state":259,"../internals/is-forced":262,"../internals/is-object":263,"../internals/is-pure":264,"../internals/iterate":266,"../internals/microtask":269,"../internals/native-promise-constructor":270,"../internals/new-promise-capability":273,"../internals/perform":291,"../internals/promise-resolve":292,"../internals/redefine":294,"../internals/redefine-all":293,"../internals/set-species":297,"../internals/set-to-string-tag":298,"../internals/species-constructor":302,"../internals/task":303,"../internals/well-known-symbol":314}],324:[function(require,module,exports){ var $ = require('../internals/export'); var toAbsoluteIndex = require('../internals/to-absolute-index'); var fromCharCode = String.fromCharCode; var nativeFromCodePoint = String.fromCodePoint; // length should be 1, old FF problem var INCORRECT_LENGTH = !!nativeFromCodePoint && nativeFromCodePoint.length != 1; // `String.fromCodePoint` method // https://tc39.github.io/ecma262/#sec-string.fromcodepoint $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, { fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars var elements = []; var length = arguments.length; var i = 0; var code; while (length > i) { code = +arguments[i++]; if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point'); elements.push(code < 0x10000 ? fromCharCode(code) : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00) ); } return elements.join(''); } }); },{"../internals/export":246,"../internals/to-absolute-index":304}],325:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var notARegExp = require('../internals/not-a-regexp'); var requireObjectCoercible = require('../internals/require-object-coercible'); var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic'); // `String.prototype.includes` method // https://tc39.github.io/ecma262/#sec-string.prototype.includes $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, { includes: function includes(searchString /* , position = 0 */) { return !!~String(requireObjectCoercible(this)) .indexOf(notARegExp(searchString), arguments.length > 1 ? arguments[1] : undefined); } }); },{"../internals/correct-is-regexp-logic":233,"../internals/export":246,"../internals/not-a-regexp":274,"../internals/require-object-coercible":295}],326:[function(require,module,exports){ var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); // `Symbol.asyncIterator` well-known symbol // https://tc39.github.io/ecma262/#sec-symbol.asynciterator defineWellKnownSymbol('asyncIterator'); },{"../internals/define-well-known-symbol":239}],327:[function(require,module,exports){ 'use strict'; var $ = require('../internals/export'); var global = require('../internals/global'); var getBuiltIn = require('../internals/get-built-in'); var IS_PURE = require('../internals/is-pure'); var DESCRIPTORS = require('../internals/descriptors'); var NATIVE_SYMBOL = require('../internals/native-symbol'); var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid'); var fails = require('../internals/fails'); var has = require('../internals/has'); var isArray = require('../internals/is-array'); var isObject = require('../internals/is-object'); var anObject = require('../internals/an-object'); var toObject = require('../internals/to-object'); var toIndexedObject = require('../internals/to-indexed-object'); var toPrimitive = require('../internals/to-primitive'); var createPropertyDescriptor = require('../internals/create-property-descriptor'); var nativeObjectCreate = require('../internals/object-create'); var objectKeys = require('../internals/object-keys'); var getOwnPropertyNamesModule = require('../internals/object-get-own-property-names'); var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external'); var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols'); var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor'); var definePropertyModule = require('../internals/object-define-property'); var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable'); var createNonEnumerableProperty = require('../internals/create-non-enumerable-property'); var redefine = require('../internals/redefine'); var shared = require('../internals/shared'); var sharedKey = require('../internals/shared-key'); var hiddenKeys = require('../internals/hidden-keys'); var uid = require('../internals/uid'); var wellKnownSymbol = require('../internals/well-known-symbol'); var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped'); var defineWellKnownSymbol = require('../internals/define-well-known-symbol'); var setToStringTag = require('../internals/set-to-string-tag'); var InternalStateModule = require('../internals/internal-state'); var $forEach = require('../internals/array-iteration').forEach; var HIDDEN = sharedKey('hidden'); var SYMBOL = 'Symbol'; var PROTOTYPE = 'prototype'; var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); var setInternalState = InternalStateModule.set; var getInternalState = InternalStateModule.getterFor(SYMBOL); var ObjectPrototype = Object[PROTOTYPE]; var $Symbol = global.Symbol; var $stringify = getBuiltIn('JSON', 'stringify'); var nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; var nativeDefineProperty = definePropertyModule.f; var nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f; var nativePropertyIsEnumerable = propertyIsEnumerableModule.f; var AllSymbols = shared('symbols'); var ObjectPrototypeSymbols = shared('op-symbols'); var StringToSymbolRegistry = shared('string-to-symbol-registry'); var SymbolToStringRegistry = shared('symbol-to-string-registry'); var WellKnownSymbolsStore = shared('wks'); var QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 var USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 var setSymbolDescriptor = DESCRIPTORS && fails(function () { return nativeObjectCreate(nativeDefineProperty({}, 'a', { get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; } })).a != 7; }) ? function (O, P, Attributes) { var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P); if (ObjectPrototypeDescriptor) delete ObjectPrototype[P]; nativeDefineProperty(O, P, Attributes); if (ObjectPrototypeDescriptor && O !== ObjectPrototype) { nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor); } } : nativeDefineProperty; var wrap = function (tag, description) { var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]); setInternalState(symbol, { type: SYMBOL, tag: tag, description: description }); if (!DESCRIPTORS) symbol.description = description; return symbol; }; var isSymbol = USE_SYMBOL_AS_UID ? function (it) { return typeof it == 'symbol'; } : function (it) { return Object(it) instanceof $Symbol; }; var $defineProperty = function defineProperty(O, P, Attributes) { if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes); anObject(O); var key = toPrimitive(P, true); anObject(Attributes); if (has(AllSymbols, key)) { if (!Attributes.enumerable) { if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {})); O[HIDDEN][key] = true; } else { if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false; Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) }); } return setSymbolDescriptor(O, key, Attributes); } return nativeDefineProperty(O, key, Attributes); }; var $defineProperties = function defineProperties(O, Properties) { anObject(O); var properties = toIndexedObject(Properties); var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties)); $forEach(keys, function (key) { if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]); }); return O; }; var $create = function create(O, Properties) { return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties); }; var $propertyIsEnumerable = function propertyIsEnumerable(V) { var P = toPrimitive(V, true); var enumerable = nativePropertyIsEnumerable.call(this, P); if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false; return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true; }; var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) { var it = toIndexedObject(O); var key = toPrimitive(P, true); if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return; var descriptor = nativeGetOwnPropertyDescriptor(it, key); if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) { descriptor.enumerable = true; } return descriptor; }; var $getOwnPropertyNames = function getOwnPropertyNames(O) { var names = nativeGetOwnPropertyNames(toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key); }); return result; }; var $getOwnPropertySymbols = function getOwnPropertySymbols(O) { var IS_OBJECT_PROTOTYPE = O === ObjectPrototype; var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O)); var result = []; $forEach(names, function (key) { if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) { result.push(AllSymbols[key]); } }); return result; }; // `Symbol` constructor // https://tc39.github.io/ecma262/#sec-symbol-constructor if (!NATIVE_SYMBOL) { $Symbol = function Symbol() { if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor'); var description = !arguments.length || arguments[0] === undefined ? undefined : String(arguments[0]); var tag = uid(description); var setter = function (value) { if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value); if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false; setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value)); }; if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter }); return wrap(tag, description); }; redefine($Symbol[PROTOTYPE], 'toString', function toString() { return getInternalState(this).tag; }); redefine($Symbol, 'withoutSetter', function (description) { return wrap(uid(description), description); }); propertyIsEnumerableModule.f = $propertyIsEnumerable; definePropertyModule.f = $defineProperty; getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor; getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames; getOwnPropertySymbolsModule.f = $getOwnPropertySymbols; wrappedWellKnownSymbolModule.f = function (name) { return wrap(wellKnownSymbol(name), name); }; if (DESCRIPTORS) { // https://github.com/tc39/proposal-Symbol-description nativeDefineProperty($Symbol[PROTOTYPE], 'description', { configurable: true, get: function description() { return getInternalState(this).description; } }); if (!IS_PURE) { redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true }); } } } $({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, { Symbol: $Symbol }); $forEach(objectKeys(WellKnownSymbolsStore), function (name) { defineWellKnownSymbol(name); }); $({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, { // `Symbol.for` method // https://tc39.github.io/ecma262/#sec-symbol.for 'for': function (key) { var string = String(key); if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string]; var symbol = $Symbol(string); StringToSymbolRegistry[string] = symbol; SymbolToStringRegistry[symbol] = string; return symbol; }, // `Symbol.keyFor` method // https://tc39.github.io/ecma262/#sec-symbol.keyfor keyFor: function keyFor(sym) { if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol'); if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym]; }, useSetter: function () { USE_SETTER = true; }, useSimple: function () { USE_SETTER = false; } }); $({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, { // `Object.create` method // https://tc39.github.io/ecma262/#sec-object.create create: $create, // `Object.defineProperty` method // https://tc39.github.io/ecma262/#sec-object.defineproperty defineProperty: $defineProperty, // `Object.defineProperties` method // https://tc39.github.io/ecma262/#sec-object.defineproperties defineProperties: $defineProperties, // `Object.getOwnPropertyDescriptor` method // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors getOwnPropertyDescriptor: $getOwnPropertyDescriptor }); $({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, { // `Object.getOwnPropertyNames` method // https://tc39.github.io/ecma262/#sec-object.getownpropertynames getOwnPropertyNames: $getOwnPropertyNames, // `Object.getOwnPropertySymbols` method // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols getOwnPropertySymbols: $getOwnPropertySymbols }); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives // https://bugs.chromium.org/p/v8/issues/detail?id=3443 $({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, { getOwnPropertySymbols: function getOwnPropertySymbols(it) { return getOwnPropertySymbolsModule.f(toObject(it)); } }); // `JSON.stringify` method behavior with symbols // https://tc39.github.io/ecma262/#sec-json.stringify if ($stringify) { var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () { var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {} return $stringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null || $stringify({ a: symbol }) != '{}' // V8 throws on boxed symbols || $stringify(Object(symbol)) != '{}'; }); $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, { // eslint-disable-next-line no-unused-vars stringify: function stringify(it, replacer, space) { var args = [it]; var index = 1; var $replacer; while (arguments.length > index) args.push(arguments[index++]); $replacer = replacer; if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined if (!isArray(replacer)) replacer = function (key, value) { if (typeof $replacer == 'function') value = $replacer.call(this, key, value); if (!isSymbol(value)) return value; }; args[1] = replacer; return $stringify.apply(null, args); } }); } // `Symbol.prototype[@@toPrimitive]` method // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive if (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) { createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); } // `Symbol.prototype[@@toStringTag]` property // https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag setToStringTag($Symbol, SYMBOL); hiddenKeys[HIDDEN] = true; },{"../internals/an-object":223,"../internals/array-iteration":225,"../internals/create-non-enumerable-property":236,"../internals/create-property-descriptor":237,"../internals/define-well-known-symbol":239,"../internals/descriptors":240,"../internals/export":246,"../internals/fails":247,"../internals/get-built-in":249,"../internals/global":251,"../internals/has":252,"../internals/hidden-keys":253,"../internals/internal-state":259,"../internals/is-array":261,"../internals/is-object":263,"../internals/is-pure":264,"../internals/native-symbol":271,"../internals/object-create":276,"../internals/object-define-property":278,"../internals/object-get-own-property-descriptor":279,"../internals/object-get-own-property-names":281,"../internals/object-get-own-property-names-external":280,"../internals/object-get-own-property-symbols":282,"../internals/object-keys":285,"../internals/object-property-is-enumerable":286,"../internals/redefine":294,"../internals/set-to-string-tag":298,"../internals/shared":301,"../internals/shared-key":299,"../internals/to-indexed-object":305,"../internals/to-object":308,"../internals/to-primitive":309,"../internals/uid":311,"../internals/use-symbol-as-uid":312,"../internals/well-known-symbol":314,"../internals/well-known-symbol-wrapped":313}],328:[function(require,module,exports){ (function (Buffer){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. // NOTE: These type checking functions intentionally don't use `instanceof` // because it is fragile and can be easily faked with `Object.create()`. function isArray(arg) { if (Array.isArray) { return Array.isArray(arg); } return objectToString(arg) === '[object Array]'; } exports.isArray = isArray; function isBoolean(arg) { return typeof arg === 'boolean'; } exports.isBoolean = isBoolean; function isNull(arg) { return arg === null; } exports.isNull = isNull; function isNullOrUndefined(arg) { return arg == null; } exports.isNullOrUndefined = isNullOrUndefined; function isNumber(arg) { return typeof arg === 'number'; } exports.isNumber = isNumber; function isString(arg) { return typeof arg === 'string'; } exports.isString = isString; function isSymbol(arg) { return _typeof(arg) === 'symbol'; } exports.isSymbol = isSymbol; function isUndefined(arg) { return arg === void 0; } exports.isUndefined = isUndefined; function isRegExp(re) { return objectToString(re) === '[object RegExp]'; } exports.isRegExp = isRegExp; function isObject(arg) { return _typeof(arg) === 'object' && arg !== null; } exports.isObject = isObject; function isDate(d) { return objectToString(d) === '[object Date]'; } exports.isDate = isDate; function isError(e) { return objectToString(e) === '[object Error]' || e instanceof Error; } exports.isError = isError; function isFunction(arg) { return typeof arg === 'function'; } exports.isFunction = isFunction; function isPrimitive(arg) { return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || _typeof(arg) === 'symbol' || // ES6 symbol typeof arg === 'undefined'; } exports.isPrimitive = isPrimitive; exports.isBuffer = Buffer.isBuffer; function objectToString(o) { return Object.prototype.toString.call(o); } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) },{"../../is-buffer/index.js":388}],329:[function(require,module,exports){ (function (Buffer){ "use strict"; var elliptic = require('elliptic'); var BN = require('bn.js'); module.exports = function createECDH(curve) { return new ECDH(curve); }; var aliases = { secp256k1: { name: 'secp256k1', byteLength: 32 }, secp224r1: { name: 'p224', byteLength: 28 }, prime256v1: { name: 'p256', byteLength: 32 }, prime192v1: { name: 'p192', byteLength: 24 }, ed25519: { name: 'ed25519', byteLength: 32 }, secp384r1: { name: 'p384', byteLength: 48 }, secp521r1: { name: 'p521', byteLength: 66 } }; aliases.p224 = aliases.secp224r1; aliases.p256 = aliases.secp256r1 = aliases.prime256v1; aliases.p192 = aliases.secp192r1 = aliases.prime192v1; aliases.p384 = aliases.secp384r1; aliases.p521 = aliases.secp521r1; function ECDH(curve) { this.curveType = aliases[curve]; if (!this.curveType) { this.curveType = { name: curve }; } this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap this.keys = void 0; } ECDH.prototype.generateKeys = function (enc, format) { this.keys = this.curve.genKeyPair(); return this.getPublicKey(enc, format); }; ECDH.prototype.computeSecret = function (other, inenc, enc) { inenc = inenc || 'utf8'; if (!Buffer.isBuffer(other)) { other = new Buffer(other, inenc); } var otherPub = this.curve.keyFromPublic(other).getPublic(); var out = otherPub.mul(this.keys.getPrivate()).getX(); return formatReturnValue(out, enc, this.curveType.byteLength); }; ECDH.prototype.getPublicKey = function (enc, format) { var key = this.keys.getPublic(format === 'compressed', true); if (format === 'hybrid') { if (key[key.length - 1] % 2) { key[0] = 7; } else { key[0] = 6; } } return formatReturnValue(key, enc); }; ECDH.prototype.getPrivateKey = function (enc) { return formatReturnValue(this.keys.getPrivate(), enc); }; ECDH.prototype.setPublicKey = function (pub, enc) { enc = enc || 'utf8'; if (!Buffer.isBuffer(pub)) { pub = new Buffer(pub, enc); } this.keys._importPublic(pub); return this; }; ECDH.prototype.setPrivateKey = function (priv, enc) { enc = enc || 'utf8'; if (!Buffer.isBuffer(priv)) { priv = new Buffer(priv, enc); } var _priv = new BN(priv); _priv = _priv.toString(16); this.keys = this.curve.genKeyPair(); this.keys._importPrivate(_priv); return this; }; function formatReturnValue(bn, enc, len) { if (!Array.isArray(bn)) { bn = bn.toArray(); } var buf = new Buffer(bn); if (len && buf.length < len) { var zeros = new Buffer(len - buf.length); zeros.fill(0); buf = Buffer.concat([zeros, buf]); } if (!enc) { return buf; } else { return buf.toString(enc); } } }).call(this,require("buffer").Buffer) },{"bn.js":330,"buffer":216,"elliptic":350}],330:[function(require,module,exports){ arguments[4][181][0].apply(exports,arguments) },{"buffer":185,"dup":181}],331:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var MD5 = require('md5.js'); var RIPEMD160 = require('ripemd160'); var sha = require('sha.js'); var Base = require('cipher-base'); function Hash(hash) { Base.call(this, 'digest'); this._hash = hash; } inherits(Hash, Base); Hash.prototype._update = function (data) { this._hash.update(data); }; Hash.prototype._final = function () { return this._hash.digest(); }; module.exports = function createHash(alg) { alg = alg.toLowerCase(); if (alg === 'md5') return new MD5(); if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160(); return new Hash(sha(alg)); }; },{"cipher-base":218,"inherits":387,"md5.js":434,"ripemd160":493,"sha.js":499}],332:[function(require,module,exports){ "use strict"; var MD5 = require('md5.js'); module.exports = function (buffer) { return new MD5().update(buffer).digest(); }; },{"md5.js":434}],333:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var Legacy = require('./legacy'); var Base = require('cipher-base'); var Buffer = require('safe-buffer').Buffer; var md5 = require('create-hash/md5'); var RIPEMD160 = require('ripemd160'); var sha = require('sha.js'); var ZEROS = Buffer.alloc(128); function Hmac(alg, key) { Base.call(this, 'digest'); if (typeof key === 'string') { key = Buffer.from(key); } var blocksize = alg === 'sha512' || alg === 'sha384' ? 128 : 64; this._alg = alg; this._key = key; if (key.length > blocksize) { var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); key = hash.update(key).digest(); } else if (key.length < blocksize) { key = Buffer.concat([key, ZEROS], blocksize); } var ipad = this._ipad = Buffer.allocUnsafe(blocksize); var opad = this._opad = Buffer.allocUnsafe(blocksize); for (var i = 0; i < blocksize; i++) { ipad[i] = key[i] ^ 0x36; opad[i] = key[i] ^ 0x5C; } this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg); this._hash.update(ipad); } inherits(Hmac, Base); Hmac.prototype._update = function (data) { this._hash.update(data); }; Hmac.prototype._final = function () { var h = this._hash.digest(); var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg); return hash.update(this._opad).update(h).digest(); }; module.exports = function createHmac(alg, key) { alg = alg.toLowerCase(); if (alg === 'rmd160' || alg === 'ripemd160') { return new Hmac('rmd160', key); } if (alg === 'md5') { return new Legacy(md5, key); } return new Hmac(alg, key); }; },{"./legacy":334,"cipher-base":218,"create-hash/md5":332,"inherits":387,"ripemd160":493,"safe-buffer":494,"sha.js":499}],334:[function(require,module,exports){ 'use strict'; var inherits = require('inherits'); var Buffer = require('safe-buffer').Buffer; var Base = require('cipher-base'); var ZEROS = Buffer.alloc(128); var blocksize = 64; function Hmac(alg, key) { Base.call(this, 'digest'); if (typeof key === 'string') { key = Buffer.from(key); } this._alg = alg; this._key = key; if (key.length > blocksize) { key = alg(key); } else if (key.length < blocksize) { key = Buffer.concat([key, ZEROS], blocksize); } var ipad = this._ipad = Buffer.allocUnsafe(blocksize); var opad = this._opad = Buffer.allocUnsafe(blocksize); for (var i = 0; i < blocksize; i++) { ipad[i] = key[i] ^ 0x36; opad[i] = key[i] ^ 0x5C; } this._hash = [ipad]; } inherits(Hmac, Base); Hmac.prototype._update = function (data) { this._hash.push(data); }; Hmac.prototype._final = function () { var h = this._alg(Buffer.concat(this._hash)); return this._alg(Buffer.concat([this._opad, h])); }; module.exports = Hmac; },{"cipher-base":218,"inherits":387,"safe-buffer":494}],335:[function(require,module,exports){ 'use strict'; exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes'); exports.createHash = exports.Hash = require('create-hash'); exports.createHmac = exports.Hmac = require('create-hmac'); var algos = require('browserify-sign/algos'); var algoKeys = Object.keys(algos); var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys); exports.getHashes = function () { return hashes; }; var p = require('pbkdf2'); exports.pbkdf2 = p.pbkdf2; exports.pbkdf2Sync = p.pbkdf2Sync; var aes = require('browserify-cipher'); exports.Cipher = aes.Cipher; exports.createCipher = aes.createCipher; exports.Cipheriv = aes.Cipheriv; exports.createCipheriv = aes.createCipheriv; exports.Decipher = aes.Decipher; exports.createDecipher = aes.createDecipher; exports.Decipheriv = aes.Decipheriv; exports.createDecipheriv = aes.createDecipheriv; exports.getCiphers = aes.getCiphers; exports.listCiphers = aes.listCiphers; var dh = require('diffie-hellman'); exports.DiffieHellmanGroup = dh.DiffieHellmanGroup; exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup; exports.getDiffieHellman = dh.getDiffieHellman; exports.createDiffieHellman = dh.createDiffieHellman; exports.DiffieHellman = dh.DiffieHellman; var sign = require('browserify-sign'); exports.createSign = sign.createSign; exports.Sign = sign.Sign; exports.createVerify = sign.createVerify; exports.Verify = sign.Verify; exports.createECDH = require('create-ecdh'); var publicEncrypt = require('public-encrypt'); exports.publicEncrypt = publicEncrypt.publicEncrypt; exports.privateEncrypt = publicEncrypt.privateEncrypt; exports.publicDecrypt = publicEncrypt.publicDecrypt; exports.privateDecrypt = publicEncrypt.privateDecrypt; // the least I can do is make error messages for the rest of the node.js/crypto api. // ;[ // 'createCredentials' // ].forEach(function (name) { // exports[name] = function () { // throw new Error([ // 'sorry, ' + name + ' is not implemented yet', // 'we accept pull requests', // 'https://github.com/crypto-browserify/crypto-browserify' // ].join('\n')) // } // }) var rf = require('randomfill'); exports.randomFill = rf.randomFill; exports.randomFillSync = rf.randomFillSync; exports.createCredentials = function () { throw new Error(['sorry, createCredentials is not implemented yet', 'we accept pull requests', 'https://github.com/crypto-browserify/crypto-browserify'].join('\n')); }; exports.constants = { 'DH_CHECK_P_NOT_SAFE_PRIME': 2, 'DH_CHECK_P_NOT_PRIME': 1, 'DH_UNABLE_TO_CHECK_GENERATOR': 4, 'DH_NOT_SUITABLE_GENERATOR': 8, 'NPN_ENABLED': 1, 'ALPN_ENABLED': 1, 'RSA_PKCS1_PADDING': 1, 'RSA_SSLV23_PADDING': 2, 'RSA_NO_PADDING': 3, 'RSA_PKCS1_OAEP_PADDING': 4, 'RSA_X931_PADDING': 5, 'RSA_PKCS1_PSS_PADDING': 6, 'POINT_CONVERSION_COMPRESSED': 2, 'POINT_CONVERSION_UNCOMPRESSED': 4, 'POINT_CONVERSION_HYBRID': 6 }; },{"browserify-cipher":203,"browserify-sign":211,"browserify-sign/algos":208,"create-ecdh":329,"create-hash":331,"create-hmac":333,"diffie-hellman":345,"pbkdf2":460,"public-encrypt":468,"randombytes":475,"randomfill":476}],336:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } !function (t, e) { "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.dayjs = e(); }(void 0, function () { "use strict"; var t = "millisecond", e = "second", n = "minute", r = "hour", i = "day", s = "week", u = "month", a = "quarter", o = "year", f = "date", h = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d+)?$/, c = /\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, d = function d(t, e, n) { var r = String(t); return !r || r.length >= e ? t : "" + Array(e + 1 - r.length).join(n) + t; }, $ = { s: d, z: function z(t) { var e = -t.utcOffset(), n = Math.abs(e), r = Math.floor(n / 60), i = n % 60; return (e <= 0 ? "+" : "-") + d(r, 2, "0") + ":" + d(i, 2, "0"); }, m: function t(e, n) { if (e.date() < n.date()) return -t(n, e); var r = 12 * (n.year() - e.year()) + (n.month() - e.month()), i = e.add(r, u), s = n - i < 0, a = e.add(r + (s ? -1 : 1), u); return +(-(r + (n - i) / (s ? i - a : a - i)) || 0); }, a: function a(t) { return t < 0 ? Math.ceil(t) || 0 : Math.floor(t); }, p: function p(h) { return { M: u, y: o, w: s, d: i, D: f, h: r, m: n, s: e, ms: t, Q: a }[h] || String(h || "").toLowerCase().replace(/s$/, ""); }, u: function u(t) { return void 0 === t; } }, l = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_") }, y = "en", M = {}; M[y] = l; var m = function m(t) { return t instanceof S; }, D = function D(t, e, n) { var r; if (!t) return y; if ("string" == typeof t) M[t] && (r = t), e && (M[t] = e, r = t);else { var i = t.name; M[i] = t, r = i; } return !n && r && (y = r), r || !n && y; }, v = function v(t, e) { if (m(t)) return t.clone(); var n = "object" == _typeof(e) ? e : {}; return n.date = t, n.args = arguments, new S(n); }, g = $; g.l = D, g.i = m, g.w = function (t, e) { return v(t, { locale: e.$L, utc: e.$u, $offset: e.$offset }); }; var S = function () { function d(t) { this.$L = this.$L || D(t.locale, null, !0), this.parse(t); } var $ = d.prototype; return $.parse = function (t) { this.$d = function (t) { var e = t.date, n = t.utc; if (null === e) return new Date(NaN); if (g.u(e)) return new Date(); if (e instanceof Date) return new Date(e); if ("string" == typeof e && !/Z$/i.test(e)) { var r = e.match(h); if (r) { var i = r[2] - 1 || 0, s = (r[7] || "0").substring(0, 3); return n ? new Date(Date.UTC(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s)) : new Date(r[1], i, r[3] || 1, r[4] || 0, r[5] || 0, r[6] || 0, s); } } return new Date(e); }(t), this.init(); }, $.init = function () { var t = this.$d; this.$y = t.getFullYear(), this.$M = t.getMonth(), this.$D = t.getDate(), this.$W = t.getDay(), this.$H = t.getHours(), this.$m = t.getMinutes(), this.$s = t.getSeconds(), this.$ms = t.getMilliseconds(); }, $.$utils = function () { return g; }, $.isValid = function () { return !("Invalid Date" === this.$d.toString()); }, $.isSame = function (t, e) { var n = v(t); return this.startOf(e) <= n && n <= this.endOf(e); }, $.isAfter = function (t, e) { return v(t) < this.startOf(e); }, $.isBefore = function (t, e) { return this.endOf(e) < v(t); }, $.$g = function (t, e, n) { return g.u(t) ? this[e] : this.set(n, t); }, $.unix = function () { return Math.floor(this.valueOf() / 1e3); }, $.valueOf = function () { return this.$d.getTime(); }, $.startOf = function (t, a) { var h = this, c = !!g.u(a) || a, d = g.p(t), $ = function $(t, e) { var n = g.w(h.$u ? Date.UTC(h.$y, e, t) : new Date(h.$y, e, t), h); return c ? n : n.endOf(i); }, l = function l(t, e) { return g.w(h.toDate()[t].apply(h.toDate("s"), (c ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(e)), h); }, y = this.$W, M = this.$M, m = this.$D, D = "set" + (this.$u ? "UTC" : ""); switch (d) { case o: return c ? $(1, 0) : $(31, 11); case u: return c ? $(1, M) : $(0, M + 1); case s: var v = this.$locale().weekStart || 0, S = (y < v ? y + 7 : y) - v; return $(c ? m - S : m + (6 - S), M); case i: case f: return l(D + "Hours", 0); case r: return l(D + "Minutes", 1); case n: return l(D + "Seconds", 2); case e: return l(D + "Milliseconds", 3); default: return this.clone(); } }, $.endOf = function (t) { return this.startOf(t, !1); }, $.$set = function (s, a) { var h, c = g.p(s), d = "set" + (this.$u ? "UTC" : ""), $ = (h = {}, h[i] = d + "Date", h[f] = d + "Date", h[u] = d + "Month", h[o] = d + "FullYear", h[r] = d + "Hours", h[n] = d + "Minutes", h[e] = d + "Seconds", h[t] = d + "Milliseconds", h)[c], l = c === i ? this.$D + (a - this.$W) : a; if (c === u || c === o) { var y = this.clone().set(f, 1); y.$d[$](l), y.init(), this.$d = y.set(f, Math.min(this.$D, y.daysInMonth())).$d; } else $ && this.$d[$](l); return this.init(), this; }, $.set = function (t, e) { return this.clone().$set(t, e); }, $.get = function (t) { return this[g.p(t)](); }, $.add = function (t, a) { var f, h = this; t = Number(t); var c = g.p(a), d = function d(e) { var n = v(h); return g.w(n.date(n.date() + Math.round(e * t)), h); }; if (c === u) return this.set(u, this.$M + t); if (c === o) return this.set(o, this.$y + t); if (c === i) return d(1); if (c === s) return d(7); var $ = (f = {}, f[n] = 6e4, f[r] = 36e5, f[e] = 1e3, f)[c] || 1, l = this.$d.getTime() + t * $; return g.w(l, this); }, $.subtract = function (t, e) { return this.add(-1 * t, e); }, $.format = function (t) { var e = this; if (!this.isValid()) return "Invalid Date"; var n = t || "YYYY-MM-DDTHH:mm:ssZ", r = g.z(this), i = this.$locale(), s = this.$H, u = this.$m, a = this.$M, o = i.weekdays, f = i.months, h = function h(t, r, i, s) { return t && (t[r] || t(e, n)) || i[r].substr(0, s); }, d = function d(t) { return g.s(s % 12 || 12, t, "0"); }, $ = i.meridiem || function (t, e, n) { var r = t < 12 ? "AM" : "PM"; return n ? r.toLowerCase() : r; }, l = { YY: String(this.$y).slice(-2), YYYY: this.$y, M: a + 1, MM: g.s(a + 1, 2, "0"), MMM: h(i.monthsShort, a, f, 3), MMMM: h(f, a), D: this.$D, DD: g.s(this.$D, 2, "0"), d: String(this.$W), dd: h(i.weekdaysMin, this.$W, o, 2), ddd: h(i.weekdaysShort, this.$W, o, 3), dddd: o[this.$W], H: String(s), HH: g.s(s, 2, "0"), h: d(1), hh: d(2), a: $(s, u, !0), A: $(s, u, !1), m: String(u), mm: g.s(u, 2, "0"), s: String(this.$s), ss: g.s(this.$s, 2, "0"), SSS: g.s(this.$ms, 3, "0"), Z: r }; return n.replace(c, function (t, e) { return e || l[t] || r.replace(":", ""); }); }, $.utcOffset = function () { return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); }, $.diff = function (t, f, h) { var c, d = g.p(f), $ = v(t), l = 6e4 * ($.utcOffset() - this.utcOffset()), y = this - $, M = g.m(this, $); return M = (c = {}, c[o] = M / 12, c[u] = M, c[a] = M / 3, c[s] = (y - l) / 6048e5, c[i] = (y - l) / 864e5, c[r] = y / 36e5, c[n] = y / 6e4, c[e] = y / 1e3, c)[d] || y, h ? M : g.a(M); }, $.daysInMonth = function () { return this.endOf(u).$D; }, $.$locale = function () { return M[this.$L]; }, $.locale = function (t, e) { if (!t) return this.$L; var n = this.clone(), r = D(t, e, !0); return r && (n.$L = r), n; }, $.clone = function () { return g.w(this.$d, this); }, $.toDate = function () { return new Date(this.valueOf()); }, $.toJSON = function () { return this.isValid() ? this.toISOString() : null; }, $.toISOString = function () { return this.$d.toISOString(); }, $.toString = function () { return this.$d.toUTCString(); }, d; }(), p = S.prototype; return v.prototype = p, [["$ms", t], ["$s", e], ["$m", n], ["$H", r], ["$W", i], ["$M", u], ["$y", o], ["$D", f]].forEach(function (t) { p[t[1]] = function (e) { return this.$g(e, t[0], t[1]); }; }), v.extend = function (t, e) { return t(e, S, v), v; }, v.locale = D, v.isDayjs = m, v.unix = function (t) { return v(1e3 * t); }, v.en = M[y], v.Ls = M, v; }); },{}],337:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } !function (t, e) { "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t.dayjs_plugin_customParseFormat = e(); }(void 0, function () { "use strict"; var t, e = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g, n = /\d\d/, r = /\d\d?/, o = /\d*[^\s\d-:/()]+/; var i = function i(t) { return function (e) { this[t] = +e; }; }, s = [/[+-]\d\d:?\d\d/, function (t) { var e, n; (this.zone || (this.zone = {})).offset = (e = t.match(/([+-]|\d\d)/g), 0 === (n = 60 * e[1] + +e[2]) ? 0 : "+" === e[0] ? -n : n); }], a = function a(e) { var n = t[e]; return n && (n.indexOf ? n : n.s.concat(n.f)); }, h = { A: [/[AP]M/, function (t) { this.afternoon = "PM" === t; }], a: [/[ap]m/, function (t) { this.afternoon = "pm" === t; }], S: [/\d/, function (t) { this.milliseconds = 100 * +t; }], SS: [n, function (t) { this.milliseconds = 10 * +t; }], SSS: [/\d{3}/, function (t) { this.milliseconds = +t; }], s: [r, i("seconds")], ss: [r, i("seconds")], m: [r, i("minutes")], mm: [r, i("minutes")], H: [r, i("hours")], h: [r, i("hours")], HH: [r, i("hours")], hh: [r, i("hours")], D: [r, i("day")], DD: [n, i("day")], Do: [o, function (e) { var n = t.ordinal, r = e.match(/\d+/); if (this.day = r[0], n) for (var o = 1; o <= 31; o += 1) { n(o).replace(/\[|\]/g, "") === e && (this.day = o); } }], M: [r, i("month")], MM: [n, i("month")], MMM: [o, function (t) { var e = a("months"), n = (a("monthsShort") || e.map(function (t) { return t.substr(0, 3); })).indexOf(t) + 1; if (n < 1) throw new Error(); this.month = n % 12 || n; }], MMMM: [o, function (t) { var e = a("months").indexOf(t) + 1; if (e < 1) throw new Error(); this.month = e % 12 || e; }], Y: [/[+-]?\d+/, i("year")], YY: [n, function (t) { t = +t, this.year = t + (t > 68 ? 1900 : 2e3); }], YYYY: [/\d{4}/, i("year")], Z: s, ZZ: s }; var f = function f(t, n, r) { try { var o = function (t) { for (var n = t.match(e), r = n.length, o = 0; o < r; o += 1) { var i = n[o], s = h[i], a = s && s[0], f = s && s[1]; n[o] = f ? { regex: a, parser: f } : i.replace(/^\[|\]$/g, ""); } return function (t) { for (var e = {}, o = 0, i = 0; o < r; o += 1) { var s = n[o]; if ("string" == typeof s) i += s.length;else { var a = s.regex, h = s.parser, f = t.substr(i), u = a.exec(f)[0]; h.call(e, u), t = t.replace(u, ""); } } return function (t) { var e = t.afternoon; if (void 0 !== e) { var n = t.hours; e ? n < 12 && (t.hours += 12) : 12 === n && (t.hours = 0), delete t.afternoon; } }(e), e; }; }(n)(t), i = o.year, s = o.month, a = o.day, f = o.hours, u = o.minutes, d = o.seconds, c = o.milliseconds, l = o.zone, m = new Date(), v = a || (i || s ? 1 : m.getDate()), p = i || m.getFullYear(), y = 0; i && !s || (y = s > 0 ? s - 1 : m.getMonth()); var D = f || 0, M = u || 0, g = d || 0, Y = c || 0; return l ? new Date(Date.UTC(p, y, v, D, M, g, Y + 60 * l.offset * 1e3)) : r ? new Date(Date.UTC(p, y, v, D, M, g, Y)) : new Date(p, y, v, D, M, g, Y); } catch (t) { return new Date(""); } }; return function (e, n, r) { var o = n.prototype, i = o.parse; o.parse = function (e) { var n = e.date, o = e.utc, s = e.args; this.$u = o; var a = s[1]; if ("string" == typeof a) { var h = !0 === s[2], u = !0 === s[3], d = h || u, c = s[2]; u && (c = s[2]), h || (t = c ? r.Ls[c] : this.$locale()), this.$d = f(n, a, o), this.init(), c && !0 !== c && (this.$L = this.locale(c).$L), d && n !== this.format(a) && (this.$d = new Date("")); } else if (a instanceof Array) for (var l = a.length, m = 1; m <= l; m += 1) { s[1] = a[m - 1]; var v = r.apply(this, s); if (v.isValid()) { this.$d = v.$d, this.$L = v.$L, this.init(); break; } m === l && (this.$d = new Date("")); } else i.call(this, e); }; }; }); },{}],338:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } !function (t, i) { "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : t.dayjs_plugin_utc = i(); }(void 0, function () { "use strict"; return function (t, i, e) { var s = new Date().getTimezoneOffset(), n = i.prototype; e.utc = function (t) { return new i({ date: t, utc: !0, args: arguments }); }, n.utc = function () { return e(this.toDate(), { locale: this.$L, utc: !0 }); }, n.local = function () { return e(this.toDate(), { locale: this.$L, utc: !1 }); }; var u = n.parse; n.parse = function (t) { t.utc && (this.$u = !0), this.$utils().u(t.$offset) || (this.$offset = t.$offset), u.call(this, t); }; var o = n.init; n.init = function () { if (this.$u) { var t = this.$d; this.$y = t.getUTCFullYear(), this.$M = t.getUTCMonth(), this.$D = t.getUTCDate(), this.$W = t.getUTCDay(), this.$H = t.getUTCHours(), this.$m = t.getUTCMinutes(), this.$s = t.getUTCSeconds(), this.$ms = t.getUTCMilliseconds(); } else o.call(this); }; var f = n.utcOffset; n.utcOffset = function (t, i) { var e = this.$utils().u; if (e(t)) return this.$u ? 0 : e(this.$offset) ? f.call(this) : this.$offset; var n = Math.abs(t) <= 16 ? 60 * t : t, u = this; return i ? (u.$offset = n, u.$u = 0 === t, u) : (0 !== t ? (u = this.local().add(n + s, "minute")).$offset = n : u = this.utc(), u); }; var r = n.format; n.format = function (t) { var i = t || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : ""); return r.call(this, i); }, n.valueOf = function () { var t = this.$utils().u(this.$offset) ? 0 : this.$offset + s; return this.$d.valueOf() - 6e4 * t; }, n.isUTC = function () { return !!this.$u; }, n.toISOString = function () { return this.toDate().toISOString(); }, n.toString = function () { return this.toDate().toUTCString(); }; var a = n.toDate; n.toDate = function (t) { return "s" === t && this.$offset ? e(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : a.call(this); }; var c = n.diff; n.diff = function (t, i, s) { var n = this.local(), u = e(t).local(); return c.call(n, u, i, s); }; }; }); },{}],339:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); exports.Cipher = require('./des/cipher'); exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); },{"./des/cbc":340,"./des/cipher":341,"./des/des":342,"./des/ede":343,"./des/utils":344}],340:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); var inherits = require('inherits'); var proto = {}; function CBCState(iv) { assert.equal(iv.length, 8, 'Invalid IV length'); this.iv = new Array(8); for (var i = 0; i < this.iv.length; i++) { this.iv[i] = iv[i]; } } function instantiate(Base) { function CBC(options) { Base.call(this, options); this._cbcInit(); } inherits(CBC, Base); var keys = Object.keys(proto); for (var i = 0; i < keys.length; i++) { var key = keys[i]; CBC.prototype[key] = proto[key]; } CBC.create = function create(options) { return new CBC(options); }; return CBC; } exports.instantiate = instantiate; proto._cbcInit = function _cbcInit() { var state = new CBCState(this.options.iv); this._cbcState = state; }; proto._update = function _update(inp, inOff, out, outOff) { var state = this._cbcState; var superProto = this.constructor.super_.prototype; var iv = state.iv; if (this.type === 'encrypt') { for (var i = 0; i < this.blockSize; i++) { iv[i] ^= inp[inOff + i]; } superProto._update.call(this, iv, 0, out, outOff); for (var i = 0; i < this.blockSize; i++) { iv[i] = out[outOff + i]; } } else { superProto._update.call(this, inp, inOff, out, outOff); for (var i = 0; i < this.blockSize; i++) { out[outOff + i] ^= iv[i]; } for (var i = 0; i < this.blockSize; i++) { iv[i] = inp[inOff + i]; } } }; },{"inherits":387,"minimalistic-assert":437}],341:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); function Cipher(options) { this.options = options; this.type = this.options.type; this.blockSize = 8; this._init(); this.buffer = new Array(this.blockSize); this.bufferOff = 0; } module.exports = Cipher; Cipher.prototype._init = function _init() {// Might be overrided }; Cipher.prototype.update = function update(data) { if (data.length === 0) return []; if (this.type === 'decrypt') return this._updateDecrypt(data);else return this._updateEncrypt(data); }; Cipher.prototype._buffer = function _buffer(data, off) { // Append data to buffer var min = Math.min(this.buffer.length - this.bufferOff, data.length - off); for (var i = 0; i < min; i++) { this.buffer[this.bufferOff + i] = data[off + i]; } this.bufferOff += min; // Shift next return min; }; Cipher.prototype._flushBuffer = function _flushBuffer(out, off) { this._update(this.buffer, 0, out, off); this.bufferOff = 0; return this.blockSize; }; Cipher.prototype._updateEncrypt = function _updateEncrypt(data) { var inputOff = 0; var outputOff = 0; var count = (this.bufferOff + data.length) / this.blockSize | 0; var out = new Array(count * this.blockSize); if (this.bufferOff !== 0) { inputOff += this._buffer(data, inputOff); if (this.bufferOff === this.buffer.length) outputOff += this._flushBuffer(out, outputOff); } // Write blocks var max = data.length - (data.length - inputOff) % this.blockSize; for (; inputOff < max; inputOff += this.blockSize) { this._update(data, inputOff, out, outputOff); outputOff += this.blockSize; } // Queue rest for (; inputOff < data.length; inputOff++, this.bufferOff++) { this.buffer[this.bufferOff] = data[inputOff]; } return out; }; Cipher.prototype._updateDecrypt = function _updateDecrypt(data) { var inputOff = 0; var outputOff = 0; var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1; var out = new Array(count * this.blockSize); // TODO(indutny): optimize it, this is far from optimal for (; count > 0; count--) { inputOff += this._buffer(data, inputOff); outputOff += this._flushBuffer(out, outputOff); } // Buffer rest of the input inputOff += this._buffer(data, inputOff); return out; }; Cipher.prototype.final = function final(buffer) { var first; if (buffer) first = this.update(buffer); var last; if (this.type === 'encrypt') last = this._finalEncrypt();else last = this._finalDecrypt(); if (first) return first.concat(last);else return last; }; Cipher.prototype._pad = function _pad(buffer, off) { if (off === 0) return false; while (off < buffer.length) { buffer[off++] = 0; } return true; }; Cipher.prototype._finalEncrypt = function _finalEncrypt() { if (!this._pad(this.buffer, this.bufferOff)) return []; var out = new Array(this.blockSize); this._update(this.buffer, 0, out, 0); return out; }; Cipher.prototype._unpad = function _unpad(buffer) { return buffer; }; Cipher.prototype._finalDecrypt = function _finalDecrypt() { assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt'); var out = new Array(this.blockSize); this._flushBuffer(out, 0); return this._unpad(out); }; },{"minimalistic-assert":437}],342:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); var inherits = require('inherits'); var utils = require('./utils'); var Cipher = require('./cipher'); function DESState() { this.tmp = new Array(2); this.keys = null; } function DES(options) { Cipher.call(this, options); var state = new DESState(); this._desState = state; this.deriveKeys(state, options.key); } inherits(DES, Cipher); module.exports = DES; DES.create = function create(options) { return new DES(options); }; var shiftTable = [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]; DES.prototype.deriveKeys = function deriveKeys(state, key) { state.keys = new Array(16 * 2); assert.equal(key.length, this.blockSize, 'Invalid key length'); var kL = utils.readUInt32BE(key, 0); var kR = utils.readUInt32BE(key, 4); utils.pc1(kL, kR, state.tmp, 0); kL = state.tmp[0]; kR = state.tmp[1]; for (var i = 0; i < state.keys.length; i += 2) { var shift = shiftTable[i >>> 1]; kL = utils.r28shl(kL, shift); kR = utils.r28shl(kR, shift); utils.pc2(kL, kR, state.keys, i); } }; DES.prototype._update = function _update(inp, inOff, out, outOff) { var state = this._desState; var l = utils.readUInt32BE(inp, inOff); var r = utils.readUInt32BE(inp, inOff + 4); // Initial Permutation utils.ip(l, r, state.tmp, 0); l = state.tmp[0]; r = state.tmp[1]; if (this.type === 'encrypt') this._encrypt(state, l, r, state.tmp, 0);else this._decrypt(state, l, r, state.tmp, 0); l = state.tmp[0]; r = state.tmp[1]; utils.writeUInt32BE(out, l, outOff); utils.writeUInt32BE(out, r, outOff + 4); }; DES.prototype._pad = function _pad(buffer, off) { var value = buffer.length - off; for (var i = off; i < buffer.length; i++) { buffer[i] = value; } return true; }; DES.prototype._unpad = function _unpad(buffer) { var pad = buffer[buffer.length - 1]; for (var i = buffer.length - pad; i < buffer.length; i++) { assert.equal(buffer[i], pad); } return buffer.slice(0, buffer.length - pad); }; DES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) { var l = lStart; var r = rStart; // Apply f() x16 times for (var i = 0; i < state.keys.length; i += 2) { var keyL = state.keys[i]; var keyR = state.keys[i + 1]; // f(r, k) utils.expand(r, state.tmp, 0); keyL ^= state.tmp[0]; keyR ^= state.tmp[1]; var s = utils.substitute(keyL, keyR); var f = utils.permute(s); var t = r; r = (l ^ f) >>> 0; l = t; } // Reverse Initial Permutation utils.rip(r, l, out, off); }; DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { var l = rStart; var r = lStart; // Apply f() x16 times for (var i = state.keys.length - 2; i >= 0; i -= 2) { var keyL = state.keys[i]; var keyR = state.keys[i + 1]; // f(r, k) utils.expand(l, state.tmp, 0); keyL ^= state.tmp[0]; keyR ^= state.tmp[1]; var s = utils.substitute(keyL, keyR); var f = utils.permute(s); var t = l; l = (r ^ f) >>> 0; r = t; } // Reverse Initial Permutation utils.rip(l, r, out, off); }; },{"./cipher":341,"./utils":344,"inherits":387,"minimalistic-assert":437}],343:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); var inherits = require('inherits'); var Cipher = require('./cipher'); var DES = require('./des'); function EDEState(type, key) { assert.equal(key.length, 24, 'Invalid key length'); var k1 = key.slice(0, 8); var k2 = key.slice(8, 16); var k3 = key.slice(16, 24); if (type === 'encrypt') { this.ciphers = [DES.create({ type: 'encrypt', key: k1 }), DES.create({ type: 'decrypt', key: k2 }), DES.create({ type: 'encrypt', key: k3 })]; } else { this.ciphers = [DES.create({ type: 'decrypt', key: k3 }), DES.create({ type: 'encrypt', key: k2 }), DES.create({ type: 'decrypt', key: k1 })]; } } function EDE(options) { Cipher.call(this, options); var state = new EDEState(this.type, this.options.key); this._edeState = state; } inherits(EDE, Cipher); module.exports = EDE; EDE.create = function create(options) { return new EDE(options); }; EDE.prototype._update = function _update(inp, inOff, out, outOff) { var state = this._edeState; state.ciphers[0]._update(inp, inOff, out, outOff); state.ciphers[1]._update(out, outOff, out, outOff); state.ciphers[2]._update(out, outOff, out, outOff); }; EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; },{"./cipher":341,"./des":342,"inherits":387,"minimalistic-assert":437}],344:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { var res = bytes[0 + off] << 24 | bytes[1 + off] << 16 | bytes[2 + off] << 8 | bytes[3 + off]; return res >>> 0; }; exports.writeUInt32BE = function writeUInt32BE(bytes, value, off) { bytes[0 + off] = value >>> 24; bytes[1 + off] = value >>> 16 & 0xff; bytes[2 + off] = value >>> 8 & 0xff; bytes[3 + off] = value & 0xff; }; exports.ip = function ip(inL, inR, out, off) { var outL = 0; var outR = 0; for (var i = 6; i >= 0; i -= 2) { for (var j = 0; j <= 24; j += 8) { outL <<= 1; outL |= inR >>> j + i & 1; } for (var j = 0; j <= 24; j += 8) { outL <<= 1; outL |= inL >>> j + i & 1; } } for (var i = 6; i >= 0; i -= 2) { for (var j = 1; j <= 25; j += 8) { outR <<= 1; outR |= inR >>> j + i & 1; } for (var j = 1; j <= 25; j += 8) { outR <<= 1; outR |= inL >>> j + i & 1; } } out[off + 0] = outL >>> 0; out[off + 1] = outR >>> 0; }; exports.rip = function rip(inL, inR, out, off) { var outL = 0; var outR = 0; for (var i = 0; i < 4; i++) { for (var j = 24; j >= 0; j -= 8) { outL <<= 1; outL |= inR >>> j + i & 1; outL <<= 1; outL |= inL >>> j + i & 1; } } for (var i = 4; i < 8; i++) { for (var j = 24; j >= 0; j -= 8) { outR <<= 1; outR |= inR >>> j + i & 1; outR <<= 1; outR |= inL >>> j + i & 1; } } out[off + 0] = outL >>> 0; out[off + 1] = outR >>> 0; }; exports.pc1 = function pc1(inL, inR, out, off) { var outL = 0; var outR = 0; // 7, 15, 23, 31, 39, 47, 55, 63 // 6, 14, 22, 30, 39, 47, 55, 63 // 5, 13, 21, 29, 39, 47, 55, 63 // 4, 12, 20, 28 for (var i = 7; i >= 5; i--) { for (var j = 0; j <= 24; j += 8) { outL <<= 1; outL |= inR >> j + i & 1; } for (var j = 0; j <= 24; j += 8) { outL <<= 1; outL |= inL >> j + i & 1; } } for (var j = 0; j <= 24; j += 8) { outL <<= 1; outL |= inR >> j + i & 1; } // 1, 9, 17, 25, 33, 41, 49, 57 // 2, 10, 18, 26, 34, 42, 50, 58 // 3, 11, 19, 27, 35, 43, 51, 59 // 36, 44, 52, 60 for (var i = 1; i <= 3; i++) { for (var j = 0; j <= 24; j += 8) { outR <<= 1; outR |= inR >> j + i & 1; } for (var j = 0; j <= 24; j += 8) { outR <<= 1; outR |= inL >> j + i & 1; } } for (var j = 0; j <= 24; j += 8) { outR <<= 1; outR |= inL >> j + i & 1; } out[off + 0] = outL >>> 0; out[off + 1] = outR >>> 0; }; exports.r28shl = function r28shl(num, shift) { return num << shift & 0xfffffff | num >>> 28 - shift; }; var pc2table = [// inL => outL 14, 11, 17, 4, 27, 23, 25, 0, 13, 22, 7, 18, 5, 9, 16, 24, 2, 20, 12, 21, 1, 8, 15, 26, // inR => outR 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24]; exports.pc2 = function pc2(inL, inR, out, off) { var outL = 0; var outR = 0; var len = pc2table.length >>> 1; for (var i = 0; i < len; i++) { outL <<= 1; outL |= inL >>> pc2table[i] & 0x1; } for (var i = len; i < pc2table.length; i++) { outR <<= 1; outR |= inR >>> pc2table[i] & 0x1; } out[off + 0] = outL >>> 0; out[off + 1] = outR >>> 0; }; exports.expand = function expand(r, out, off) { var outL = 0; var outR = 0; outL = (r & 1) << 5 | r >>> 27; for (var i = 23; i >= 15; i -= 4) { outL <<= 6; outL |= r >>> i & 0x3f; } for (var i = 11; i >= 3; i -= 4) { outR |= r >>> i & 0x3f; outR <<= 6; } outR |= (r & 0x1f) << 1 | r >>> 31; out[off + 0] = outL >>> 0; out[off + 1] = outR >>> 0; }; var sTable = [14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1, 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8, 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7, 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13, 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14, 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5, 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2, 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9, 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10, 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1, 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7, 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12, 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3, 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9, 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8, 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14, 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1, 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6, 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13, 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3, 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5, 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8, 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10, 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13, 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10, 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6, 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7, 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12, 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4, 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2, 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13, 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11]; exports.substitute = function substitute(inL, inR) { var out = 0; for (var i = 0; i < 4; i++) { var b = inL >>> 18 - i * 6 & 0x3f; var sb = sTable[i * 0x40 + b]; out <<= 4; out |= sb; } for (var i = 0; i < 4; i++) { var b = inR >>> 18 - i * 6 & 0x3f; var sb = sTable[4 * 0x40 + i * 0x40 + b]; out <<= 4; out |= sb; } return out >>> 0; }; var permuteTable = [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7]; exports.permute = function permute(num) { var out = 0; for (var i = 0; i < permuteTable.length; i++) { out <<= 1; out |= num >>> permuteTable[i] & 0x1; } return out >>> 0; }; exports.padSplit = function padSplit(num, size, group) { var str = num.toString(2); while (str.length < size) { str = '0' + str; } var out = []; for (var i = 0; i < size; i += group) { out.push(str.slice(i, i + group)); } return out.join(' '); }; },{}],345:[function(require,module,exports){ (function (Buffer){ "use strict"; var generatePrime = require('./lib/generatePrime'); var primes = require('./lib/primes.json'); var DH = require('./lib/dh'); function getDiffieHellman(mod) { var prime = new Buffer(primes[mod].prime, 'hex'); var gen = new Buffer(primes[mod].gen, 'hex'); return new DH(prime, gen); } var ENCODINGS = { 'binary': true, 'hex': true, 'base64': true }; function createDiffieHellman(prime, enc, generator, genc) { if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) { return createDiffieHellman(prime, 'binary', enc, generator); } enc = enc || 'binary'; genc = genc || 'binary'; generator = generator || new Buffer([2]); if (!Buffer.isBuffer(generator)) { generator = new Buffer(generator, genc); } if (typeof prime === 'number') { return new DH(generatePrime(prime, generator), generator, true); } if (!Buffer.isBuffer(prime)) { prime = new Buffer(prime, enc); } return new DH(prime, generator, true); } exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman; exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman; }).call(this,require("buffer").Buffer) },{"./lib/dh":346,"./lib/generatePrime":347,"./lib/primes.json":348,"buffer":216}],346:[function(require,module,exports){ (function (Buffer){ "use strict"; var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); var millerRabin = new MillerRabin(); var TWENTYFOUR = new BN(24); var ELEVEN = new BN(11); var TEN = new BN(10); var THREE = new BN(3); var SEVEN = new BN(7); var primes = require('./generatePrime'); var randomBytes = require('randombytes'); module.exports = DH; function setPublicKey(pub, enc) { enc = enc || 'utf8'; if (!Buffer.isBuffer(pub)) { pub = new Buffer(pub, enc); } this._pub = new BN(pub); return this; } function setPrivateKey(priv, enc) { enc = enc || 'utf8'; if (!Buffer.isBuffer(priv)) { priv = new Buffer(priv, enc); } this._priv = new BN(priv); return this; } var primeCache = {}; function checkPrime(prime, generator) { var gen = generator.toString('hex'); var hex = [gen, prime.toString(16)].join('_'); if (hex in primeCache) { return primeCache[hex]; } var error = 0; if (prime.isEven() || !primes.simpleSieve || !primes.fermatTest(prime) || !millerRabin.test(prime)) { //not a prime so +1 error += 1; if (gen === '02' || gen === '05') { // we'd be able to check the generator // it would fail so +8 error += 8; } else { //we wouldn't be able to test the generator // so +4 error += 4; } primeCache[hex] = error; return error; } if (!millerRabin.test(prime.shrn(1))) { //not a safe prime error += 2; } var rem; switch (gen) { case '02': if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) { // unsuidable generator error += 8; } break; case '05': rem = prime.mod(TEN); if (rem.cmp(THREE) && rem.cmp(SEVEN)) { // prime mod 10 needs to equal 3 or 7 error += 8; } break; default: error += 4; } primeCache[hex] = error; return error; } function DH(prime, generator, malleable) { this.setGenerator(generator); this.__prime = new BN(prime); this._prime = BN.mont(this.__prime); this._primeLen = prime.length; this._pub = undefined; this._priv = undefined; this._primeCode = undefined; if (malleable) { this.setPublicKey = setPublicKey; this.setPrivateKey = setPrivateKey; } else { this._primeCode = 8; } } Object.defineProperty(DH.prototype, 'verifyError', { enumerable: true, get: function get() { if (typeof this._primeCode !== 'number') { this._primeCode = checkPrime(this.__prime, this.__gen); } return this._primeCode; } }); DH.prototype.generateKeys = function () { if (!this._priv) { this._priv = new BN(randomBytes(this._primeLen)); } this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed(); return this.getPublicKey(); }; DH.prototype.computeSecret = function (other) { other = new BN(other); other = other.toRed(this._prime); var secret = other.redPow(this._priv).fromRed(); var out = new Buffer(secret.toArray()); var prime = this.getPrime(); if (out.length < prime.length) { var front = new Buffer(prime.length - out.length); front.fill(0); out = Buffer.concat([front, out]); } return out; }; DH.prototype.getPublicKey = function getPublicKey(enc) { return formatReturnValue(this._pub, enc); }; DH.prototype.getPrivateKey = function getPrivateKey(enc) { return formatReturnValue(this._priv, enc); }; DH.prototype.getPrime = function (enc) { return formatReturnValue(this.__prime, enc); }; DH.prototype.getGenerator = function (enc) { return formatReturnValue(this._gen, enc); }; DH.prototype.setGenerator = function (gen, enc) { enc = enc || 'utf8'; if (!Buffer.isBuffer(gen)) { gen = new Buffer(gen, enc); } this.__gen = gen; this._gen = new BN(gen); return this; }; function formatReturnValue(bn, enc) { var buf = new Buffer(bn.toArray()); if (!enc) { return buf; } else { return buf.toString(enc); } } }).call(this,require("buffer").Buffer) },{"./generatePrime":347,"bn.js":349,"buffer":216,"miller-rabin":435,"randombytes":475}],347:[function(require,module,exports){ "use strict"; var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; findPrime.fermatTest = fermatTest; var BN = require('bn.js'); var TWENTYFOUR = new BN(24); var MillerRabin = require('miller-rabin'); var millerRabin = new MillerRabin(); var ONE = new BN(1); var TWO = new BN(2); var FIVE = new BN(5); var SIXTEEN = new BN(16); var EIGHT = new BN(8); var TEN = new BN(10); var THREE = new BN(3); var SEVEN = new BN(7); var ELEVEN = new BN(11); var FOUR = new BN(4); var TWELVE = new BN(12); var primes = null; function _getPrimes() { if (primes !== null) return primes; var limit = 0x100000; var res = []; res[0] = 2; for (var i = 1, k = 3; k < limit; k += 2) { var sqrt = Math.ceil(Math.sqrt(k)); for (var j = 0; j < i && res[j] <= sqrt; j++) { if (k % res[j] === 0) break; } if (i !== j && res[j] <= sqrt) continue; res[i++] = k; } primes = res; return res; } function simpleSieve(p) { var primes = _getPrimes(); for (var i = 0; i < primes.length; i++) { if (p.modn(primes[i]) === 0) { if (p.cmpn(primes[i]) === 0) { return true; } else { return false; } } } return true; } function fermatTest(p) { var red = BN.mont(p); return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; } function findPrime(bits, gen) { if (bits < 16) { // this is what openssl does if (gen === 2 || gen === 5) { return new BN([0x8c, 0x7b]); } else { return new BN([0x8c, 0x27]); } } gen = new BN(gen); var num, n2; while (true) { num = new BN(randomBytes(Math.ceil(bits / 8))); while (num.bitLength() > bits) { num.ishrn(1); } if (num.isEven()) { num.iadd(ONE); } if (!num.testn(1)) { num.iadd(TWO); } if (!gen.cmp(TWO)) { while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { num.iadd(FOUR); } } else if (!gen.cmp(FIVE)) { while (num.mod(TEN).cmp(THREE)) { num.iadd(FOUR); } } n2 = num.shrn(1); if (simpleSieve(n2) && simpleSieve(num) && fermatTest(n2) && fermatTest(num) && millerRabin.test(n2) && millerRabin.test(num)) { return num; } } } },{"bn.js":349,"miller-rabin":435,"randombytes":475}],348:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff" }, "modp2": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff" }, "modp5": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff" }, "modp14": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff" }, "modp15": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff" }, "modp16": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff" }, "modp17": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff" }, "modp18": { "gen": "02", "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } },{}],349:[function(require,module,exports){ arguments[4][181][0].apply(exports,arguments) },{"buffer":185,"dup":181}],350:[function(require,module,exports){ 'use strict'; var elliptic = exports; elliptic.version = require('../package.json').version; elliptic.utils = require('./elliptic/utils'); elliptic.rand = require('brorand'); elliptic.curve = require('./elliptic/curve'); elliptic.curves = require('./elliptic/curves'); // Protocols elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); },{"../package.json":366,"./elliptic/curve":353,"./elliptic/curves":356,"./elliptic/ec":357,"./elliptic/eddsa":360,"./elliptic/utils":364,"brorand":184}],351:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); var utils = require('../utils'); var getNAF = utils.getNAF; var getJSF = utils.getJSF; var assert = utils.assert; function BaseCurve(type, conf) { this.type = type; this.p = new BN(conf.p, 16); // Use Montgomery, when there is no fast reduction for the prime this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p); // Useful for many curves this.zero = new BN(0).toRed(this.red); this.one = new BN(1).toRed(this.red); this.two = new BN(2).toRed(this.red); // Curve configuration, optional this.n = conf.n && new BN(conf.n, 16); this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed); // Temporary arrays this._wnafT1 = new Array(4); this._wnafT2 = new Array(4); this._wnafT3 = new Array(4); this._wnafT4 = new Array(4); this._bitLength = this.n ? this.n.bitLength() : 0; // Generalized Greg Maxwell's trick var adjustCount = this.n && this.p.div(this.n); if (!adjustCount || adjustCount.cmpn(100) > 0) { this.redN = null; } else { this._maxwellTrick = true; this.redN = this.n.toRed(this.red); } } module.exports = BaseCurve; BaseCurve.prototype.point = function point() { throw new Error('Not implemented'); }; BaseCurve.prototype.validate = function validate() { throw new Error('Not implemented'); }; BaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) { assert(p.precomputed); var doubles = p._getDoubles(); var naf = getNAF(k, 1, this._bitLength); var I = (1 << doubles.step + 1) - (doubles.step % 2 === 0 ? 2 : 1); I /= 3; // Translate into more windowed form var repr = []; for (var j = 0; j < naf.length; j += doubles.step) { var nafW = 0; for (var k = j + doubles.step - 1; k >= j; k--) { nafW = (nafW << 1) + naf[k]; } repr.push(nafW); } var a = this.jpoint(null, null, null); var b = this.jpoint(null, null, null); for (var i = I; i > 0; i--) { for (var j = 0; j < repr.length; j++) { var nafW = repr[j]; if (nafW === i) b = b.mixedAdd(doubles.points[j]);else if (nafW === -i) b = b.mixedAdd(doubles.points[j].neg()); } a = a.add(b); } return a.toP(); }; BaseCurve.prototype._wnafMul = function _wnafMul(p, k) { var w = 4; // Precompute window var nafPoints = p._getNAFPoints(w); w = nafPoints.wnd; var wnd = nafPoints.points; // Get NAF form var naf = getNAF(k, w, this._bitLength); // Add `this`*(N+1) for every w-NAF index var acc = this.jpoint(null, null, null); for (var i = naf.length - 1; i >= 0; i--) { // Count zeroes for (var k = 0; i >= 0 && naf[i] === 0; i--) { k++; } if (i >= 0) k++; acc = acc.dblp(k); if (i < 0) break; var z = naf[i]; assert(z !== 0); if (p.type === 'affine') { // J +- P if (z > 0) acc = acc.mixedAdd(wnd[z - 1 >> 1]);else acc = acc.mixedAdd(wnd[-z - 1 >> 1].neg()); } else { // J +- J if (z > 0) acc = acc.add(wnd[z - 1 >> 1]);else acc = acc.add(wnd[-z - 1 >> 1].neg()); } } return p.type === 'affine' ? acc.toP() : acc; }; BaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW, points, coeffs, len, jacobianResult) { var wndWidth = this._wnafT1; var wnd = this._wnafT2; var naf = this._wnafT3; // Fill all arrays var max = 0; for (var i = 0; i < len; i++) { var p = points[i]; var nafPoints = p._getNAFPoints(defW); wndWidth[i] = nafPoints.wnd; wnd[i] = nafPoints.points; } // Comb small window NAFs for (var i = len - 1; i >= 1; i -= 2) { var a = i - 1; var b = i; if (wndWidth[a] !== 1 || wndWidth[b] !== 1) { naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength); naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength); max = Math.max(naf[a].length, max); max = Math.max(naf[b].length, max); continue; } var comb = [points[a], /* 1 */ null, /* 3 */ null, /* 5 */ points[b] /* 7 */ ]; // Try to avoid Projective points, if possible if (points[a].y.cmp(points[b].y) === 0) { comb[1] = points[a].add(points[b]); comb[2] = points[a].toJ().mixedAdd(points[b].neg()); } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) { comb[1] = points[a].toJ().mixedAdd(points[b]); comb[2] = points[a].add(points[b].neg()); } else { comb[1] = points[a].toJ().mixedAdd(points[b]); comb[2] = points[a].toJ().mixedAdd(points[b].neg()); } var index = [-3, /* -1 -1 */ -1, /* -1 0 */ -5, /* -1 1 */ -7, /* 0 -1 */ 0, /* 0 0 */ 7, /* 0 1 */ 5, /* 1 -1 */ 1, /* 1 0 */ 3 /* 1 1 */ ]; var jsf = getJSF(coeffs[a], coeffs[b]); max = Math.max(jsf[0].length, max); naf[a] = new Array(max); naf[b] = new Array(max); for (var j = 0; j < max; j++) { var ja = jsf[0][j] | 0; var jb = jsf[1][j] | 0; naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]; naf[b][j] = 0; wnd[a] = comb; } } var acc = this.jpoint(null, null, null); var tmp = this._wnafT4; for (var i = max; i >= 0; i--) { var k = 0; while (i >= 0) { var zero = true; for (var j = 0; j < len; j++) { tmp[j] = naf[j][i] | 0; if (tmp[j] !== 0) zero = false; } if (!zero) break; k++; i--; } if (i >= 0) k++; acc = acc.dblp(k); if (i < 0) break; for (var j = 0; j < len; j++) { var z = tmp[j]; var p; if (z === 0) continue;else if (z > 0) p = wnd[j][z - 1 >> 1];else if (z < 0) p = wnd[j][-z - 1 >> 1].neg(); if (p.type === 'affine') acc = acc.mixedAdd(p);else acc = acc.add(p); } } // Zeroify references for (var i = 0; i < len; i++) { wnd[i] = null; } if (jacobianResult) return acc;else return acc.toP(); }; function BasePoint(curve, type) { this.curve = curve; this.type = type; this.precomputed = null; } BaseCurve.BasePoint = BasePoint; BasePoint.prototype.eq = function eq() /*other*/ { throw new Error('Not implemented'); }; BasePoint.prototype.validate = function validate() { return this.curve.validate(this); }; BaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) { bytes = utils.toArray(bytes, enc); var len = this.p.byteLength(); // uncompressed, hybrid-odd, hybrid-even if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) && bytes.length - 1 === 2 * len) { if (bytes[0] === 0x06) assert(bytes[bytes.length - 1] % 2 === 0);else if (bytes[0] === 0x07) assert(bytes[bytes.length - 1] % 2 === 1); var res = this.point(bytes.slice(1, 1 + len), bytes.slice(1 + len, 1 + 2 * len)); return res; } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) && bytes.length - 1 === len) { return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03); } throw new Error('Unknown point format'); }; BasePoint.prototype.encodeCompressed = function encodeCompressed(enc) { return this.encode(enc, true); }; BasePoint.prototype._encode = function _encode(compact) { var len = this.curve.p.byteLength(); var x = this.getX().toArray('be', len); if (compact) return [this.getY().isEven() ? 0x02 : 0x03].concat(x); return [0x04].concat(x, this.getY().toArray('be', len)); }; BasePoint.prototype.encode = function encode(enc, compact) { return utils.encode(this._encode(compact), enc); }; BasePoint.prototype.precompute = function precompute(power) { if (this.precomputed) return this; var precomputed = { doubles: null, naf: null, beta: null }; precomputed.naf = this._getNAFPoints(8); precomputed.doubles = this._getDoubles(4, power); precomputed.beta = this._getBeta(); this.precomputed = precomputed; return this; }; BasePoint.prototype._hasDoubles = function _hasDoubles(k) { if (!this.precomputed) return false; var doubles = this.precomputed.doubles; if (!doubles) return false; return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step); }; BasePoint.prototype._getDoubles = function _getDoubles(step, power) { if (this.precomputed && this.precomputed.doubles) return this.precomputed.doubles; var doubles = [this]; var acc = this; for (var i = 0; i < power; i += step) { for (var j = 0; j < step; j++) { acc = acc.dbl(); } doubles.push(acc); } return { step: step, points: doubles }; }; BasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) { if (this.precomputed && this.precomputed.naf) return this.precomputed.naf; var res = [this]; var max = (1 << wnd) - 1; var dbl = max === 1 ? null : this.dbl(); for (var i = 1; i < max; i++) { res[i] = res[i - 1].add(dbl); } return { wnd: wnd, points: res }; }; BasePoint.prototype._getBeta = function _getBeta() { return null; }; BasePoint.prototype.dblp = function dblp(k) { var r = this; for (var i = 0; i < k; i++) { r = r.dbl(); } return r; }; },{"../utils":364,"bn.js":365}],352:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var BN = require('bn.js'); var inherits = require('inherits'); var Base = require('./base'); var assert = utils.assert; function EdwardsCurve(conf) { // NOTE: Important as we are creating point in Base.call() this.twisted = (conf.a | 0) !== 1; this.mOneA = this.twisted && (conf.a | 0) === -1; this.extended = this.mOneA; Base.call(this, 'edwards', conf); this.a = new BN(conf.a, 16).umod(this.red.m); this.a = this.a.toRed(this.red); this.c = new BN(conf.c, 16).toRed(this.red); this.c2 = this.c.redSqr(); this.d = new BN(conf.d, 16).toRed(this.red); this.dd = this.d.redAdd(this.d); assert(!this.twisted || this.c.fromRed().cmpn(1) === 0); this.oneC = (conf.c | 0) === 1; } inherits(EdwardsCurve, Base); module.exports = EdwardsCurve; EdwardsCurve.prototype._mulA = function _mulA(num) { if (this.mOneA) return num.redNeg();else return this.a.redMul(num); }; EdwardsCurve.prototype._mulC = function _mulC(num) { if (this.oneC) return num;else return this.c.redMul(num); }; // Just for compatibility with Short curve EdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) { return this.point(x, y, z, t); }; EdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) { x = new BN(x, 16); if (!x.red) x = x.toRed(this.red); var x2 = x.redSqr(); var rhs = this.c2.redSub(this.a.redMul(x2)); var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2)); var y2 = rhs.redMul(lhs.redInvm()); var y = y2.redSqrt(); if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); var isOdd = y.fromRed().isOdd(); if (odd && !isOdd || !odd && isOdd) y = y.redNeg(); return this.point(x, y); }; EdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) { y = new BN(y, 16); if (!y.red) y = y.toRed(this.red); // x^2 = (y^2 - c^2) / (c^2 d y^2 - a) var y2 = y.redSqr(); var lhs = y2.redSub(this.c2); var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a); var x2 = lhs.redMul(rhs.redInvm()); if (x2.cmp(this.zero) === 0) { if (odd) throw new Error('invalid point');else return this.point(this.zero, y); } var x = x2.redSqrt(); if (x.redSqr().redSub(x2).cmp(this.zero) !== 0) throw new Error('invalid point'); if (x.fromRed().isOdd() !== odd) x = x.redNeg(); return this.point(x, y); }; EdwardsCurve.prototype.validate = function validate(point) { if (point.isInfinity()) return true; // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2) point.normalize(); var x2 = point.x.redSqr(); var y2 = point.y.redSqr(); var lhs = x2.redMul(this.a).redAdd(y2); var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2))); return lhs.cmp(rhs) === 0; }; function Point(curve, x, y, z, t) { Base.BasePoint.call(this, curve, 'projective'); if (x === null && y === null && z === null) { this.x = this.curve.zero; this.y = this.curve.one; this.z = this.curve.one; this.t = this.curve.zero; this.zOne = true; } else { this.x = new BN(x, 16); this.y = new BN(y, 16); this.z = z ? new BN(z, 16) : this.curve.one; this.t = t && new BN(t, 16); if (!this.x.red) this.x = this.x.toRed(this.curve.red); if (!this.y.red) this.y = this.y.toRed(this.curve.red); if (!this.z.red) this.z = this.z.toRed(this.curve.red); if (this.t && !this.t.red) this.t = this.t.toRed(this.curve.red); this.zOne = this.z === this.curve.one; // Use extended coordinates if (this.curve.extended && !this.t) { this.t = this.x.redMul(this.y); if (!this.zOne) this.t = this.t.redMul(this.z.redInvm()); } } } inherits(Point, Base.BasePoint); EdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) { return Point.fromJSON(this, obj); }; EdwardsCurve.prototype.point = function point(x, y, z, t) { return new Point(this, x, y, z, t); }; Point.fromJSON = function fromJSON(curve, obj) { return new Point(curve, obj[0], obj[1], obj[2]); }; Point.prototype.inspect = function inspect() { if (this.isInfinity()) return ''; return ''; }; Point.prototype.isInfinity = function isInfinity() { // XXX This code assumes that zero is always zero in red return this.x.cmpn(0) === 0 && (this.y.cmp(this.z) === 0 || this.zOne && this.y.cmp(this.curve.c) === 0); }; Point.prototype._extDbl = function _extDbl() { // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html // #doubling-dbl-2008-hwcd // 4M + 4S // A = X1^2 var a = this.x.redSqr(); // B = Y1^2 var b = this.y.redSqr(); // C = 2 * Z1^2 var c = this.z.redSqr(); c = c.redIAdd(c); // D = a * A var d = this.curve._mulA(a); // E = (X1 + Y1)^2 - A - B var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b); // G = D + B var g = d.redAdd(b); // F = G - C var f = g.redSub(c); // H = D - B var h = d.redSub(b); // X3 = E * F var nx = e.redMul(f); // Y3 = G * H var ny = g.redMul(h); // T3 = E * H var nt = e.redMul(h); // Z3 = F * G var nz = f.redMul(g); return this.curve.point(nx, ny, nz, nt); }; Point.prototype._projDbl = function _projDbl() { // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html // #doubling-dbl-2008-bbjlp // #doubling-dbl-2007-bl // and others // Generally 3M + 4S or 2M + 4S // B = (X1 + Y1)^2 var b = this.x.redAdd(this.y).redSqr(); // C = X1^2 var c = this.x.redSqr(); // D = Y1^2 var d = this.y.redSqr(); var nx; var ny; var nz; if (this.curve.twisted) { // E = a * C var e = this.curve._mulA(c); // F = E + D var f = e.redAdd(d); if (this.zOne) { // X3 = (B - C - D) * (F - 2) nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)); // Y3 = F * (E - D) ny = f.redMul(e.redSub(d)); // Z3 = F^2 - 2 * F nz = f.redSqr().redSub(f).redSub(f); } else { // H = Z1^2 var h = this.z.redSqr(); // J = F - 2 * H var j = f.redSub(h).redISub(h); // X3 = (B-C-D)*J nx = b.redSub(c).redISub(d).redMul(j); // Y3 = F * (E - D) ny = f.redMul(e.redSub(d)); // Z3 = F * J nz = f.redMul(j); } } else { // E = C + D var e = c.redAdd(d); // H = (c * Z1)^2 var h = this.curve._mulC(this.z).redSqr(); // J = E - 2 * H var j = e.redSub(h).redSub(h); // X3 = c * (B - E) * J nx = this.curve._mulC(b.redISub(e)).redMul(j); // Y3 = c * E * (C - D) ny = this.curve._mulC(e).redMul(c.redISub(d)); // Z3 = E * J nz = e.redMul(j); } return this.curve.point(nx, ny, nz); }; Point.prototype.dbl = function dbl() { if (this.isInfinity()) return this; // Double in extended coordinates if (this.curve.extended) return this._extDbl();else return this._projDbl(); }; Point.prototype._extAdd = function _extAdd(p) { // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html // #addition-add-2008-hwcd-3 // 8M // A = (Y1 - X1) * (Y2 - X2) var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x)); // B = (Y1 + X1) * (Y2 + X2) var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)); // C = T1 * k * T2 var c = this.t.redMul(this.curve.dd).redMul(p.t); // D = Z1 * 2 * Z2 var d = this.z.redMul(p.z.redAdd(p.z)); // E = B - A var e = b.redSub(a); // F = D - C var f = d.redSub(c); // G = D + C var g = d.redAdd(c); // H = B + A var h = b.redAdd(a); // X3 = E * F var nx = e.redMul(f); // Y3 = G * H var ny = g.redMul(h); // T3 = E * H var nt = e.redMul(h); // Z3 = F * G var nz = f.redMul(g); return this.curve.point(nx, ny, nz, nt); }; Point.prototype._projAdd = function _projAdd(p) { // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html // #addition-add-2008-bbjlp // #addition-add-2007-bl // 10M + 1S // A = Z1 * Z2 var a = this.z.redMul(p.z); // B = A^2 var b = a.redSqr(); // C = X1 * X2 var c = this.x.redMul(p.x); // D = Y1 * Y2 var d = this.y.redMul(p.y); // E = d * C * D var e = this.curve.d.redMul(c).redMul(d); // F = B - E var f = b.redSub(e); // G = B + E var g = b.redAdd(e); // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D) var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d); var nx = a.redMul(f).redMul(tmp); var ny; var nz; if (this.curve.twisted) { // Y3 = A * G * (D - a * C) ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c))); // Z3 = F * G nz = f.redMul(g); } else { // Y3 = A * G * (D - C) ny = a.redMul(g).redMul(d.redSub(c)); // Z3 = c * F * G nz = this.curve._mulC(f).redMul(g); } return this.curve.point(nx, ny, nz); }; Point.prototype.add = function add(p) { if (this.isInfinity()) return p; if (p.isInfinity()) return this; if (this.curve.extended) return this._extAdd(p);else return this._projAdd(p); }; Point.prototype.mul = function mul(k) { if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else return this.curve._wnafMul(this, k); }; Point.prototype.mulAdd = function mulAdd(k1, p, k2) { return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, false); }; Point.prototype.jmulAdd = function jmulAdd(k1, p, k2) { return this.curve._wnafMulAdd(1, [this, p], [k1, k2], 2, true); }; Point.prototype.normalize = function normalize() { if (this.zOne) return this; // Normalize coordinates var zi = this.z.redInvm(); this.x = this.x.redMul(zi); this.y = this.y.redMul(zi); if (this.t) this.t = this.t.redMul(zi); this.z = this.curve.one; this.zOne = true; return this; }; Point.prototype.neg = function neg() { return this.curve.point(this.x.redNeg(), this.y, this.z, this.t && this.t.redNeg()); }; Point.prototype.getX = function getX() { this.normalize(); return this.x.fromRed(); }; Point.prototype.getY = function getY() { this.normalize(); return this.y.fromRed(); }; Point.prototype.eq = function eq(other) { return this === other || this.getX().cmp(other.getX()) === 0 && this.getY().cmp(other.getY()) === 0; }; Point.prototype.eqXToP = function eqXToP(x) { var rx = x.toRed(this.curve.red).redMul(this.z); if (this.x.cmp(rx) === 0) return true; var xc = x.clone(); var t = this.curve.redN.redMul(this.z); for (;;) { xc.iadd(this.curve.n); if (xc.cmp(this.curve.p) >= 0) return false; rx.redIAdd(t); if (this.x.cmp(rx) === 0) return true; } }; // Compatibility with BaseCurve Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; },{"../utils":364,"./base":351,"bn.js":365,"inherits":387}],353:[function(require,module,exports){ 'use strict'; var curve = exports; curve.base = require('./base'); curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); },{"./base":351,"./edwards":352,"./mont":354,"./short":355}],354:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); var inherits = require('inherits'); var Base = require('./base'); var utils = require('../utils'); function MontCurve(conf) { Base.call(this, 'mont', conf); this.a = new BN(conf.a, 16).toRed(this.red); this.b = new BN(conf.b, 16).toRed(this.red); this.i4 = new BN(4).toRed(this.red).redInvm(); this.two = new BN(2).toRed(this.red); this.a24 = this.i4.redMul(this.a.redAdd(this.two)); } inherits(MontCurve, Base); module.exports = MontCurve; MontCurve.prototype.validate = function validate(point) { var x = point.normalize().x; var x2 = x.redSqr(); var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x); var y = rhs.redSqrt(); return y.redSqr().cmp(rhs) === 0; }; function Point(curve, x, z) { Base.BasePoint.call(this, curve, 'projective'); if (x === null && z === null) { this.x = this.curve.one; this.z = this.curve.zero; } else { this.x = new BN(x, 16); this.z = new BN(z, 16); if (!this.x.red) this.x = this.x.toRed(this.curve.red); if (!this.z.red) this.z = this.z.toRed(this.curve.red); } } inherits(Point, Base.BasePoint); MontCurve.prototype.decodePoint = function decodePoint(bytes, enc) { return this.point(utils.toArray(bytes, enc), 1); }; MontCurve.prototype.point = function point(x, z) { return new Point(this, x, z); }; MontCurve.prototype.pointFromJSON = function pointFromJSON(obj) { return Point.fromJSON(this, obj); }; Point.prototype.precompute = function precompute() {// No-op }; Point.prototype._encode = function _encode() { return this.getX().toArray('be', this.curve.p.byteLength()); }; Point.fromJSON = function fromJSON(curve, obj) { return new Point(curve, obj[0], obj[1] || curve.one); }; Point.prototype.inspect = function inspect() { if (this.isInfinity()) return ''; return ''; }; Point.prototype.isInfinity = function isInfinity() { // XXX This code assumes that zero is always zero in red return this.z.cmpn(0) === 0; }; Point.prototype.dbl = function dbl() { // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3 // 2M + 2S + 4A // A = X1 + Z1 var a = this.x.redAdd(this.z); // AA = A^2 var aa = a.redSqr(); // B = X1 - Z1 var b = this.x.redSub(this.z); // BB = B^2 var bb = b.redSqr(); // C = AA - BB var c = aa.redSub(bb); // X3 = AA * BB var nx = aa.redMul(bb); // Z3 = C * (BB + A24 * C) var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c))); return this.curve.point(nx, nz); }; Point.prototype.add = function add() { throw new Error('Not supported on Montgomery curve'); }; Point.prototype.diffAdd = function diffAdd(p, diff) { // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3 // 4M + 2S + 6A // A = X2 + Z2 var a = this.x.redAdd(this.z); // B = X2 - Z2 var b = this.x.redSub(this.z); // C = X3 + Z3 var c = p.x.redAdd(p.z); // D = X3 - Z3 var d = p.x.redSub(p.z); // DA = D * A var da = d.redMul(a); // CB = C * B var cb = c.redMul(b); // X5 = Z1 * (DA + CB)^2 var nx = diff.z.redMul(da.redAdd(cb).redSqr()); // Z5 = X1 * (DA - CB)^2 var nz = diff.x.redMul(da.redISub(cb).redSqr()); return this.curve.point(nx, nz); }; Point.prototype.mul = function mul(k) { var t = k.clone(); var a = this; // (N / 2) * Q + Q var b = this.curve.point(null, null); // (N / 2) * Q var c = this; // Q for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1)) { bits.push(t.andln(1)); } for (var i = bits.length - 1; i >= 0; i--) { if (bits[i] === 0) { // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q a = a.diffAdd(b, c); // N * Q = 2 * ((N / 2) * Q + Q)) b = b.dbl(); } else { // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q) b = a.diffAdd(b, c); // N * Q + Q = 2 * ((N / 2) * Q + Q) a = a.dbl(); } } return b; }; Point.prototype.mulAdd = function mulAdd() { throw new Error('Not supported on Montgomery curve'); }; Point.prototype.jumlAdd = function jumlAdd() { throw new Error('Not supported on Montgomery curve'); }; Point.prototype.eq = function eq(other) { return this.getX().cmp(other.getX()) === 0; }; Point.prototype.normalize = function normalize() { this.x = this.x.redMul(this.z.redInvm()); this.z = this.curve.one; return this; }; Point.prototype.getX = function getX() { // Normalize coordinates this.normalize(); return this.x.fromRed(); }; },{"../utils":364,"./base":351,"bn.js":365,"inherits":387}],355:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var BN = require('bn.js'); var inherits = require('inherits'); var Base = require('./base'); var assert = utils.assert; function ShortCurve(conf) { Base.call(this, 'short', conf); this.a = new BN(conf.a, 16).toRed(this.red); this.b = new BN(conf.b, 16).toRed(this.red); this.tinv = this.two.redInvm(); this.zeroA = this.a.fromRed().cmpn(0) === 0; this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0; // If the curve is endomorphic, precalculate beta and lambda this.endo = this._getEndomorphism(conf); this._endoWnafT1 = new Array(4); this._endoWnafT2 = new Array(4); } inherits(ShortCurve, Base); module.exports = ShortCurve; ShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) { // No efficient endomorphism if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1) return; // Compute beta and lambda, that lambda * P = (beta * Px; Py) var beta; var lambda; if (conf.beta) { beta = new BN(conf.beta, 16).toRed(this.red); } else { var betas = this._getEndoRoots(this.p); // Choose the smallest beta beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1]; beta = beta.toRed(this.red); } if (conf.lambda) { lambda = new BN(conf.lambda, 16); } else { // Choose the lambda that is matching selected beta var lambdas = this._getEndoRoots(this.n); if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) { lambda = lambdas[0]; } else { lambda = lambdas[1]; assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0); } } // Get basis vectors, used for balanced length-two representation var basis; if (conf.basis) { basis = conf.basis.map(function (vec) { return { a: new BN(vec.a, 16), b: new BN(vec.b, 16) }; }); } else { basis = this._getEndoBasis(lambda); } return { beta: beta, lambda: lambda, basis: basis }; }; ShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) { // Find roots of for x^2 + x + 1 in F // Root = (-1 +- Sqrt(-3)) / 2 // var red = num === this.p ? this.red : BN.mont(num); var tinv = new BN(2).toRed(red).redInvm(); var ntinv = tinv.redNeg(); var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv); var l1 = ntinv.redAdd(s).fromRed(); var l2 = ntinv.redSub(s).fromRed(); return [l1, l2]; }; ShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) { // aprxSqrt >= sqrt(this.n) var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2)); // 3.74 // Run EGCD, until r(L + 1) < aprxSqrt var u = lambda; var v = this.n.clone(); var x1 = new BN(1); var y1 = new BN(0); var x2 = new BN(0); var y2 = new BN(1); // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n) var a0; var b0; // First vector var a1; var b1; // Second vector var a2; var b2; var prevR; var i = 0; var r; var x; while (u.cmpn(0) !== 0) { var q = v.div(u); r = v.sub(q.mul(u)); x = x2.sub(q.mul(x1)); var y = y2.sub(q.mul(y1)); if (!a1 && r.cmp(aprxSqrt) < 0) { a0 = prevR.neg(); b0 = x1; a1 = r.neg(); b1 = x; } else if (a1 && ++i === 2) { break; } prevR = r; v = u; u = r; x2 = x1; x1 = x; y2 = y1; y1 = y; } a2 = r.neg(); b2 = x; var len1 = a1.sqr().add(b1.sqr()); var len2 = a2.sqr().add(b2.sqr()); if (len2.cmp(len1) >= 0) { a2 = a0; b2 = b0; } // Normalize signs if (a1.negative) { a1 = a1.neg(); b1 = b1.neg(); } if (a2.negative) { a2 = a2.neg(); b2 = b2.neg(); } return [{ a: a1, b: b1 }, { a: a2, b: b2 }]; }; ShortCurve.prototype._endoSplit = function _endoSplit(k) { var basis = this.endo.basis; var v1 = basis[0]; var v2 = basis[1]; var c1 = v2.b.mul(k).divRound(this.n); var c2 = v1.b.neg().mul(k).divRound(this.n); var p1 = c1.mul(v1.a); var p2 = c2.mul(v2.a); var q1 = c1.mul(v1.b); var q2 = c2.mul(v2.b); // Calculate answer var k1 = k.sub(p1).sub(p2); var k2 = q1.add(q2).neg(); return { k1: k1, k2: k2 }; }; ShortCurve.prototype.pointFromX = function pointFromX(x, odd) { x = new BN(x, 16); if (!x.red) x = x.toRed(this.red); var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b); var y = y2.redSqrt(); if (y.redSqr().redSub(y2).cmp(this.zero) !== 0) throw new Error('invalid point'); // XXX Is there any way to tell if the number is odd without converting it // to non-red form? var isOdd = y.fromRed().isOdd(); if (odd && !isOdd || !odd && isOdd) y = y.redNeg(); return this.point(x, y); }; ShortCurve.prototype.validate = function validate(point) { if (point.inf) return true; var x = point.x; var y = point.y; var ax = this.a.redMul(x); var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b); return y.redSqr().redISub(rhs).cmpn(0) === 0; }; ShortCurve.prototype._endoWnafMulAdd = function _endoWnafMulAdd(points, coeffs, jacobianResult) { var npoints = this._endoWnafT1; var ncoeffs = this._endoWnafT2; for (var i = 0; i < points.length; i++) { var split = this._endoSplit(coeffs[i]); var p = points[i]; var beta = p._getBeta(); if (split.k1.negative) { split.k1.ineg(); p = p.neg(true); } if (split.k2.negative) { split.k2.ineg(); beta = beta.neg(true); } npoints[i * 2] = p; npoints[i * 2 + 1] = beta; ncoeffs[i * 2] = split.k1; ncoeffs[i * 2 + 1] = split.k2; } var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult); // Clean-up references to points and coefficients for (var j = 0; j < i * 2; j++) { npoints[j] = null; ncoeffs[j] = null; } return res; }; function Point(curve, x, y, isRed) { Base.BasePoint.call(this, curve, 'affine'); if (x === null && y === null) { this.x = null; this.y = null; this.inf = true; } else { this.x = new BN(x, 16); this.y = new BN(y, 16); // Force redgomery representation when loading from JSON if (isRed) { this.x.forceRed(this.curve.red); this.y.forceRed(this.curve.red); } if (!this.x.red) this.x = this.x.toRed(this.curve.red); if (!this.y.red) this.y = this.y.toRed(this.curve.red); this.inf = false; } } inherits(Point, Base.BasePoint); ShortCurve.prototype.point = function point(x, y, isRed) { return new Point(this, x, y, isRed); }; ShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) { return Point.fromJSON(this, obj, red); }; Point.prototype._getBeta = function _getBeta() { if (!this.curve.endo) return; var pre = this.precomputed; if (pre && pre.beta) return pre.beta; var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y); if (pre) { var curve = this.curve; var endoMul = function endoMul(p) { return curve.point(p.x.redMul(curve.endo.beta), p.y); }; pre.beta = beta; beta.precomputed = { beta: null, naf: pre.naf && { wnd: pre.naf.wnd, points: pre.naf.points.map(endoMul) }, doubles: pre.doubles && { step: pre.doubles.step, points: pre.doubles.points.map(endoMul) } }; } return beta; }; Point.prototype.toJSON = function toJSON() { if (!this.precomputed) return [this.x, this.y]; return [this.x, this.y, this.precomputed && { doubles: this.precomputed.doubles && { step: this.precomputed.doubles.step, points: this.precomputed.doubles.points.slice(1) }, naf: this.precomputed.naf && { wnd: this.precomputed.naf.wnd, points: this.precomputed.naf.points.slice(1) } }]; }; Point.fromJSON = function fromJSON(curve, obj, red) { if (typeof obj === 'string') obj = JSON.parse(obj); var res = curve.point(obj[0], obj[1], red); if (!obj[2]) return res; function obj2point(obj) { return curve.point(obj[0], obj[1], red); } var pre = obj[2]; res.precomputed = { beta: null, doubles: pre.doubles && { step: pre.doubles.step, points: [res].concat(pre.doubles.points.map(obj2point)) }, naf: pre.naf && { wnd: pre.naf.wnd, points: [res].concat(pre.naf.points.map(obj2point)) } }; return res; }; Point.prototype.inspect = function inspect() { if (this.isInfinity()) return ''; return ''; }; Point.prototype.isInfinity = function isInfinity() { return this.inf; }; Point.prototype.add = function add(p) { // O + P = P if (this.inf) return p; // P + O = P if (p.inf) return this; // P + P = 2P if (this.eq(p)) return this.dbl(); // P + (-P) = O if (this.neg().eq(p)) return this.curve.point(null, null); // P + Q = O if (this.x.cmp(p.x) === 0) return this.curve.point(null, null); var c = this.y.redSub(p.y); if (c.cmpn(0) !== 0) c = c.redMul(this.x.redSub(p.x).redInvm()); var nx = c.redSqr().redISub(this.x).redISub(p.x); var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); return this.curve.point(nx, ny); }; Point.prototype.dbl = function dbl() { if (this.inf) return this; // 2P = O var ys1 = this.y.redAdd(this.y); if (ys1.cmpn(0) === 0) return this.curve.point(null, null); var a = this.curve.a; var x2 = this.x.redSqr(); var dyinv = ys1.redInvm(); var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv); var nx = c.redSqr().redISub(this.x.redAdd(this.x)); var ny = c.redMul(this.x.redSub(nx)).redISub(this.y); return this.curve.point(nx, ny); }; Point.prototype.getX = function getX() { return this.x.fromRed(); }; Point.prototype.getY = function getY() { return this.y.fromRed(); }; Point.prototype.mul = function mul(k) { k = new BN(k, 16); if (this.isInfinity()) return this;else if (this._hasDoubles(k)) return this.curve._fixedNafMul(this, k);else if (this.curve.endo) return this.curve._endoWnafMulAdd([this], [k]);else return this.curve._wnafMul(this, k); }; Point.prototype.mulAdd = function mulAdd(k1, p2, k2) { var points = [this, p2]; var coeffs = [k1, k2]; if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs);else return this.curve._wnafMulAdd(1, points, coeffs, 2); }; Point.prototype.jmulAdd = function jmulAdd(k1, p2, k2) { var points = [this, p2]; var coeffs = [k1, k2]; if (this.curve.endo) return this.curve._endoWnafMulAdd(points, coeffs, true);else return this.curve._wnafMulAdd(1, points, coeffs, 2, true); }; Point.prototype.eq = function eq(p) { return this === p || this.inf === p.inf && (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0); }; Point.prototype.neg = function neg(_precompute) { if (this.inf) return this; var res = this.curve.point(this.x, this.y.redNeg()); if (_precompute && this.precomputed) { var pre = this.precomputed; var negate = function negate(p) { return p.neg(); }; res.precomputed = { naf: pre.naf && { wnd: pre.naf.wnd, points: pre.naf.points.map(negate) }, doubles: pre.doubles && { step: pre.doubles.step, points: pre.doubles.points.map(negate) } }; } return res; }; Point.prototype.toJ = function toJ() { if (this.inf) return this.curve.jpoint(null, null, null); var res = this.curve.jpoint(this.x, this.y, this.curve.one); return res; }; function JPoint(curve, x, y, z) { Base.BasePoint.call(this, curve, 'jacobian'); if (x === null && y === null && z === null) { this.x = this.curve.one; this.y = this.curve.one; this.z = new BN(0); } else { this.x = new BN(x, 16); this.y = new BN(y, 16); this.z = new BN(z, 16); } if (!this.x.red) this.x = this.x.toRed(this.curve.red); if (!this.y.red) this.y = this.y.toRed(this.curve.red); if (!this.z.red) this.z = this.z.toRed(this.curve.red); this.zOne = this.z === this.curve.one; } inherits(JPoint, Base.BasePoint); ShortCurve.prototype.jpoint = function jpoint(x, y, z) { return new JPoint(this, x, y, z); }; JPoint.prototype.toP = function toP() { if (this.isInfinity()) return this.curve.point(null, null); var zinv = this.z.redInvm(); var zinv2 = zinv.redSqr(); var ax = this.x.redMul(zinv2); var ay = this.y.redMul(zinv2).redMul(zinv); return this.curve.point(ax, ay); }; JPoint.prototype.neg = function neg() { return this.curve.jpoint(this.x, this.y.redNeg(), this.z); }; JPoint.prototype.add = function add(p) { // O + P = P if (this.isInfinity()) return p; // P + O = P if (p.isInfinity()) return this; // 12M + 4S + 7A var pz2 = p.z.redSqr(); var z2 = this.z.redSqr(); var u1 = this.x.redMul(pz2); var u2 = p.x.redMul(z2); var s1 = this.y.redMul(pz2.redMul(p.z)); var s2 = p.y.redMul(z2.redMul(this.z)); var h = u1.redSub(u2); var r = s1.redSub(s2); if (h.cmpn(0) === 0) { if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl(); } var h2 = h.redSqr(); var h3 = h2.redMul(h); var v = u1.redMul(h2); var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); var nz = this.z.redMul(p.z).redMul(h); return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype.mixedAdd = function mixedAdd(p) { // O + P = P if (this.isInfinity()) return p.toJ(); // P + O = P if (p.isInfinity()) return this; // 8M + 3S + 7A var z2 = this.z.redSqr(); var u1 = this.x; var u2 = p.x.redMul(z2); var s1 = this.y; var s2 = p.y.redMul(z2).redMul(this.z); var h = u1.redSub(u2); var r = s1.redSub(s2); if (h.cmpn(0) === 0) { if (r.cmpn(0) !== 0) return this.curve.jpoint(null, null, null);else return this.dbl(); } var h2 = h.redSqr(); var h3 = h2.redMul(h); var v = u1.redMul(h2); var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v); var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)); var nz = this.z.redMul(h); return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype.dblp = function dblp(pow) { if (pow === 0) return this; if (this.isInfinity()) return this; if (!pow) return this.dbl(); if (this.curve.zeroA || this.curve.threeA) { var r = this; for (var i = 0; i < pow; i++) { r = r.dbl(); } return r; } // 1M + 2S + 1A + N * (4S + 5M + 8A) // N = 1 => 6M + 6S + 9A var a = this.curve.a; var tinv = this.curve.tinv; var jx = this.x; var jy = this.y; var jz = this.z; var jz4 = jz.redSqr().redSqr(); // Reuse results var jyd = jy.redAdd(jy); for (var i = 0; i < pow; i++) { var jx2 = jx.redSqr(); var jyd2 = jyd.redSqr(); var jyd4 = jyd2.redSqr(); var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); var t1 = jx.redMul(jyd2); var nx = c.redSqr().redISub(t1.redAdd(t1)); var t2 = t1.redISub(nx); var dny = c.redMul(t2); dny = dny.redIAdd(dny).redISub(jyd4); var nz = jyd.redMul(jz); if (i + 1 < pow) jz4 = jz4.redMul(jyd4); jx = nx; jz = nz; jyd = dny; } return this.curve.jpoint(jx, jyd.redMul(tinv), jz); }; JPoint.prototype.dbl = function dbl() { if (this.isInfinity()) return this; if (this.curve.zeroA) return this._zeroDbl();else if (this.curve.threeA) return this._threeDbl();else return this._dbl(); }; JPoint.prototype._zeroDbl = function _zeroDbl() { var nx; var ny; var nz; // Z = 1 if (this.zOne) { // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html // #doubling-mdbl-2007-bl // 1M + 5S + 14A // XX = X1^2 var xx = this.x.redSqr(); // YY = Y1^2 var yy = this.y.redSqr(); // YYYY = YY^2 var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY) var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); s = s.redIAdd(s); // M = 3 * XX + a; a = 0 var m = xx.redAdd(xx).redIAdd(xx); // T = M ^ 2 - 2*S var t = m.redSqr().redISub(s).redISub(s); // 8 * YYYY var yyyy8 = yyyy.redIAdd(yyyy); yyyy8 = yyyy8.redIAdd(yyyy8); yyyy8 = yyyy8.redIAdd(yyyy8); // X3 = T nx = t; // Y3 = M * (S - T) - 8 * YYYY ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2*Y1 nz = this.y.redAdd(this.y); } else { // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html // #doubling-dbl-2009-l // 2M + 5S + 13A // A = X1^2 var a = this.x.redSqr(); // B = Y1^2 var b = this.y.redSqr(); // C = B^2 var c = b.redSqr(); // D = 2 * ((X1 + B)^2 - A - C) var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c); d = d.redIAdd(d); // E = 3 * A var e = a.redAdd(a).redIAdd(a); // F = E^2 var f = e.redSqr(); // 8 * C var c8 = c.redIAdd(c); c8 = c8.redIAdd(c8); c8 = c8.redIAdd(c8); // X3 = F - 2 * D nx = f.redISub(d).redISub(d); // Y3 = E * (D - X3) - 8 * C ny = e.redMul(d.redISub(nx)).redISub(c8); // Z3 = 2 * Y1 * Z1 nz = this.y.redMul(this.z); nz = nz.redIAdd(nz); } return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype._threeDbl = function _threeDbl() { var nx; var ny; var nz; // Z = 1 if (this.zOne) { // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html // #doubling-mdbl-2007-bl // 1M + 5S + 15A // XX = X1^2 var xx = this.x.redSqr(); // YY = Y1^2 var yy = this.y.redSqr(); // YYYY = YY^2 var yyyy = yy.redSqr(); // S = 2 * ((X1 + YY)^2 - XX - YYYY) var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); s = s.redIAdd(s); // M = 3 * XX + a var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a); // T = M^2 - 2 * S var t = m.redSqr().redISub(s).redISub(s); // X3 = T nx = t; // Y3 = M * (S - T) - 8 * YYYY var yyyy8 = yyyy.redIAdd(yyyy); yyyy8 = yyyy8.redIAdd(yyyy8); yyyy8 = yyyy8.redIAdd(yyyy8); ny = m.redMul(s.redISub(t)).redISub(yyyy8); // Z3 = 2 * Y1 nz = this.y.redAdd(this.y); } else { // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b // 3M + 5S // delta = Z1^2 var delta = this.z.redSqr(); // gamma = Y1^2 var gamma = this.y.redSqr(); // beta = X1 * gamma var beta = this.x.redMul(gamma); // alpha = 3 * (X1 - delta) * (X1 + delta) var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta)); alpha = alpha.redAdd(alpha).redIAdd(alpha); // X3 = alpha^2 - 8 * beta var beta4 = beta.redIAdd(beta); beta4 = beta4.redIAdd(beta4); var beta8 = beta4.redAdd(beta4); nx = alpha.redSqr().redISub(beta8); // Z3 = (Y1 + Z1)^2 - gamma - delta nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta); // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2 var ggamma8 = gamma.redSqr(); ggamma8 = ggamma8.redIAdd(ggamma8); ggamma8 = ggamma8.redIAdd(ggamma8); ggamma8 = ggamma8.redIAdd(ggamma8); ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8); } return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype._dbl = function _dbl() { var a = this.curve.a; // 4M + 6S + 10A var jx = this.x; var jy = this.y; var jz = this.z; var jz4 = jz.redSqr().redSqr(); var jx2 = jx.redSqr(); var jy2 = jy.redSqr(); var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)); var jxd4 = jx.redAdd(jx); jxd4 = jxd4.redIAdd(jxd4); var t1 = jxd4.redMul(jy2); var nx = c.redSqr().redISub(t1.redAdd(t1)); var t2 = t1.redISub(nx); var jyd8 = jy2.redSqr(); jyd8 = jyd8.redIAdd(jyd8); jyd8 = jyd8.redIAdd(jyd8); jyd8 = jyd8.redIAdd(jyd8); var ny = c.redMul(t2).redISub(jyd8); var nz = jy.redAdd(jy).redMul(jz); return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype.trpl = function trpl() { if (!this.curve.zeroA) return this.dbl().add(this); // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl // 5M + 10S + ... // XX = X1^2 var xx = this.x.redSqr(); // YY = Y1^2 var yy = this.y.redSqr(); // ZZ = Z1^2 var zz = this.z.redSqr(); // YYYY = YY^2 var yyyy = yy.redSqr(); // M = 3 * XX + a * ZZ2; a = 0 var m = xx.redAdd(xx).redIAdd(xx); // MM = M^2 var mm = m.redSqr(); // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy); e = e.redIAdd(e); e = e.redAdd(e).redIAdd(e); e = e.redISub(mm); // EE = E^2 var ee = e.redSqr(); // T = 16*YYYY var t = yyyy.redIAdd(yyyy); t = t.redIAdd(t); t = t.redIAdd(t); t = t.redIAdd(t); // U = (M + E)^2 - MM - EE - T var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t); // X3 = 4 * (X1 * EE - 4 * YY * U) var yyu4 = yy.redMul(u); yyu4 = yyu4.redIAdd(yyu4); yyu4 = yyu4.redIAdd(yyu4); var nx = this.x.redMul(ee).redISub(yyu4); nx = nx.redIAdd(nx); nx = nx.redIAdd(nx); // Y3 = 8 * Y1 * (U * (T - U) - E * EE) var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee))); ny = ny.redIAdd(ny); ny = ny.redIAdd(ny); ny = ny.redIAdd(ny); // Z3 = (Z1 + E)^2 - ZZ - EE var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee); return this.curve.jpoint(nx, ny, nz); }; JPoint.prototype.mul = function mul(k, kbase) { k = new BN(k, kbase); return this.curve._wnafMul(this, k); }; JPoint.prototype.eq = function eq(p) { if (p.type === 'affine') return this.eq(p.toJ()); if (this === p) return true; // x1 * z2^2 == x2 * z1^2 var z2 = this.z.redSqr(); var pz2 = p.z.redSqr(); if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0) return false; // y1 * z2^3 == y2 * z1^3 var z3 = z2.redMul(this.z); var pz3 = pz2.redMul(p.z); return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0; }; JPoint.prototype.eqXToP = function eqXToP(x) { var zs = this.z.redSqr(); var rx = x.toRed(this.curve.red).redMul(zs); if (this.x.cmp(rx) === 0) return true; var xc = x.clone(); var t = this.curve.redN.redMul(zs); for (;;) { xc.iadd(this.curve.n); if (xc.cmp(this.curve.p) >= 0) return false; rx.redIAdd(t); if (this.x.cmp(rx) === 0) return true; } }; JPoint.prototype.inspect = function inspect() { if (this.isInfinity()) return ''; return ''; }; JPoint.prototype.isInfinity = function isInfinity() { // XXX This code assumes that zero is always zero in red return this.z.cmpn(0) === 0; }; },{"../utils":364,"./base":351,"bn.js":365,"inherits":387}],356:[function(require,module,exports){ 'use strict'; var curves = exports; var hash = require('hash.js'); var curve = require('./curve'); var utils = require('./utils'); var assert = utils.assert; function PresetCurve(options) { if (options.type === 'short') this.curve = new curve.short(options);else if (options.type === 'edwards') this.curve = new curve.edwards(options);else this.curve = new curve.mont(options); this.g = this.curve.g; this.n = this.curve.n; this.hash = options.hash; assert(this.g.validate(), 'Invalid curve'); assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O'); } curves.PresetCurve = PresetCurve; function defineCurve(name, options) { Object.defineProperty(curves, name, { configurable: true, enumerable: true, get: function get() { var curve = new PresetCurve(options); Object.defineProperty(curves, name, { configurable: true, enumerable: true, value: curve }); return curve; } }); } defineCurve('p192', { type: 'short', prime: 'p192', p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff', a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc', b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1', n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831', hash: hash.sha256, gRed: false, g: ['188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012', '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811'] }); defineCurve('p224', { type: 'short', prime: 'p224', p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001', a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe', b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4', n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d', hash: hash.sha256, gRed: false, g: ['b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21', 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34'] }); defineCurve('p256', { type: 'short', prime: null, p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff', a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc', b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b', n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551', hash: hash.sha256, gRed: false, g: ['6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296', '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5'] }); defineCurve('p384', { type: 'short', prime: null, p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 ffffffff', a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'fffffffe ffffffff 00000000 00000000 fffffffc', b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' + '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef', n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' + 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973', hash: hash.sha384, gRed: false, g: ['aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' + '5502f25d bf55296c 3a545e38 72760ab7', '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' + '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'] }); defineCurve('p521', { type: 'short', prime: null, p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff', a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff ffffffff ffffffff fffffffc', b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' + '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' + '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00', n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' + 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' + 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409', hash: hash.sha512, gRed: false, g: ['000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' + '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' + 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66', '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' + '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' + '3fad0761 353c7086 a272c240 88be9476 9fd16650'] }); defineCurve('curve25519', { type: 'mont', prime: 'p25519', p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', a: '76d06', b: '1', n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', hash: hash.sha256, gRed: false, g: ['9'] }); defineCurve('ed25519', { type: 'edwards', prime: 'p25519', p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed', a: '-1', c: '1', // -121665 * (121666^(-1)) (mod P) d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3', n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed', hash: hash.sha256, gRed: false, g: ['216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a', // 4/5 '6666666666666666666666666666666666666666666666666666666666666658'] }); var pre; try { pre = require('./precomputed/secp256k1'); } catch (e) { pre = undefined; } defineCurve('secp256k1', { type: 'short', prime: 'k256', p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f', a: '0', b: '7', n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141', h: '1', hash: hash.sha256, // Precomputed endomorphism beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee', lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72', basis: [{ a: '3086d221a7d46bcde86c90e49284eb15', b: '-e4437ed6010e88286f547fa90abfe4c3' }, { a: '114ca50f7a8e2f3f657c1108d9d44cfd8', b: '3086d221a7d46bcde86c90e49284eb15' }], gRed: false, g: ['79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798', '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8', pre] }); },{"./curve":353,"./precomputed/secp256k1":363,"./utils":364,"hash.js":372}],357:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var BN = require('bn.js'); var HmacDRBG = require('hmac-drbg'); var utils = require('../utils'); var curves = require('../curves'); var rand = require('brorand'); var assert = utils.assert; var KeyPair = require('./key'); var Signature = require('./signature'); function EC(options) { if (!(this instanceof EC)) return new EC(options); // Shortcut `elliptic.ec(curve-name)` if (typeof options === 'string') { assert(curves.hasOwnProperty(options), 'Unknown curve ' + options); options = curves[options]; } // Shortcut for `elliptic.ec(elliptic.curves.curveName)` if (options instanceof curves.PresetCurve) options = { curve: options }; this.curve = options.curve.curve; this.n = this.curve.n; this.nh = this.n.ushrn(1); this.g = this.curve.g; // Point on curve this.g = options.curve.g; this.g.precompute(options.curve.n.bitLength() + 1); // Hash for function for DRBG this.hash = options.hash || options.curve.hash; } module.exports = EC; EC.prototype.keyPair = function keyPair(options) { return new KeyPair(this, options); }; EC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) { return KeyPair.fromPrivate(this, priv, enc); }; EC.prototype.keyFromPublic = function keyFromPublic(pub, enc) { return KeyPair.fromPublic(this, pub, enc); }; EC.prototype.genKeyPair = function genKeyPair(options) { if (!options) options = {}; // Instantiate Hmac_DRBG var drbg = new HmacDRBG({ hash: this.hash, pers: options.pers, persEnc: options.persEnc || 'utf8', entropy: options.entropy || rand(this.hash.hmacStrength), entropyEnc: options.entropy && options.entropyEnc || 'utf8', nonce: this.n.toArray() }); var bytes = this.n.byteLength(); var ns2 = this.n.sub(new BN(2)); do { var priv = new BN(drbg.generate(bytes)); if (priv.cmp(ns2) > 0) continue; priv.iaddn(1); return this.keyFromPrivate(priv); } while (true); }; EC.prototype._truncateToN = function truncateToN(msg, truncOnly) { var delta = msg.byteLength() * 8 - this.n.bitLength(); if (delta > 0) msg = msg.ushrn(delta); if (!truncOnly && msg.cmp(this.n) >= 0) return msg.sub(this.n);else return msg; }; EC.prototype.sign = function sign(msg, key, enc, options) { if (_typeof(enc) === 'object') { options = enc; enc = null; } if (!options) options = {}; key = this.keyFromPrivate(key, enc); msg = this._truncateToN(new BN(msg, 16)); // Zero-extend key to provide enough entropy var bytes = this.n.byteLength(); var bkey = key.getPrivate().toArray('be', bytes); // Zero-extend nonce to have the same byte size as N var nonce = msg.toArray('be', bytes); // Instantiate Hmac_DRBG var drbg = new HmacDRBG({ hash: this.hash, entropy: bkey, nonce: nonce, pers: options.pers, persEnc: options.persEnc || 'utf8' }); // Number of bytes to generate var ns1 = this.n.sub(new BN(1)); for (var iter = 0; true; iter++) { var k = options.k ? options.k(iter) : new BN(drbg.generate(this.n.byteLength())); k = this._truncateToN(k, true); if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0) continue; var kp = this.g.mul(k); if (kp.isInfinity()) continue; var kpX = kp.getX(); var r = kpX.umod(this.n); if (r.cmpn(0) === 0) continue; var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg)); s = s.umod(this.n); if (s.cmpn(0) === 0) continue; var recoveryParam = (kp.getY().isOdd() ? 1 : 0) | (kpX.cmp(r) !== 0 ? 2 : 0); // Use complement of `s`, if it is > `n / 2` if (options.canonical && s.cmp(this.nh) > 0) { s = this.n.sub(s); recoveryParam ^= 1; } return new Signature({ r: r, s: s, recoveryParam: recoveryParam }); } }; EC.prototype.verify = function verify(msg, signature, key, enc) { msg = this._truncateToN(new BN(msg, 16)); key = this.keyFromPublic(key, enc); signature = new Signature(signature, 'hex'); // Perform primitive values validation var r = signature.r; var s = signature.s; if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0) return false; if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0) return false; // Validate signature var sinv = s.invm(this.n); var u1 = sinv.mul(msg).umod(this.n); var u2 = sinv.mul(r).umod(this.n); if (!this.curve._maxwellTrick) { var p = this.g.mulAdd(u1, key.getPublic(), u2); if (p.isInfinity()) return false; return p.getX().umod(this.n).cmp(r) === 0; } // NOTE: Greg Maxwell's trick, inspired by: // https://git.io/vad3K var p = this.g.jmulAdd(u1, key.getPublic(), u2); if (p.isInfinity()) return false; // Compare `p.x` of Jacobian point with `r`, // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the // inverse of `p.z^2` return p.eqXToP(r); }; EC.prototype.recoverPubKey = function (msg, signature, j, enc) { assert((3 & j) === j, 'The recovery param is more than two bits'); signature = new Signature(signature, enc); var n = this.n; var e = new BN(msg); var r = signature.r; var s = signature.s; // A set LSB signifies that the y-coordinate is odd var isYOdd = j & 1; var isSecondKey = j >> 1; if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey) throw new Error('Unable to find sencond key candinate'); // 1.1. Let x = r + jn. if (isSecondKey) r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);else r = this.curve.pointFromX(r, isYOdd); var rInv = signature.r.invm(n); var s1 = n.sub(e).mul(rInv).umod(n); var s2 = s.mul(rInv).umod(n); // 1.6.1 Compute Q = r^-1 (sR - eG) // Q = r^-1 (sR + -eG) return this.g.mulAdd(s1, r, s2); }; EC.prototype.getKeyRecoveryParam = function (e, signature, Q, enc) { signature = new Signature(signature, enc); if (signature.recoveryParam !== null) return signature.recoveryParam; for (var i = 0; i < 4; i++) { var Qprime; try { Qprime = this.recoverPubKey(e, signature, i); } catch (e) { continue; } if (Qprime.eq(Q)) return i; } throw new Error('Unable to find valid recovery factor'); }; },{"../curves":356,"../utils":364,"./key":358,"./signature":359,"bn.js":365,"brorand":184,"hmac-drbg":384}],358:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); var utils = require('../utils'); var assert = utils.assert; function KeyPair(ec, options) { this.ec = ec; this.priv = null; this.pub = null; // KeyPair(ec, { priv: ..., pub: ... }) if (options.priv) this._importPrivate(options.priv, options.privEnc); if (options.pub) this._importPublic(options.pub, options.pubEnc); } module.exports = KeyPair; KeyPair.fromPublic = function fromPublic(ec, pub, enc) { if (pub instanceof KeyPair) return pub; return new KeyPair(ec, { pub: pub, pubEnc: enc }); }; KeyPair.fromPrivate = function fromPrivate(ec, priv, enc) { if (priv instanceof KeyPair) return priv; return new KeyPair(ec, { priv: priv, privEnc: enc }); }; KeyPair.prototype.validate = function validate() { var pub = this.getPublic(); if (pub.isInfinity()) return { result: false, reason: 'Invalid public key' }; if (!pub.validate()) return { result: false, reason: 'Public key is not a point' }; if (!pub.mul(this.ec.curve.n).isInfinity()) return { result: false, reason: 'Public key * N != O' }; return { result: true, reason: null }; }; KeyPair.prototype.getPublic = function getPublic(compact, enc) { // compact is optional argument if (typeof compact === 'string') { enc = compact; compact = null; } if (!this.pub) this.pub = this.ec.g.mul(this.priv); if (!enc) return this.pub; return this.pub.encode(enc, compact); }; KeyPair.prototype.getPrivate = function getPrivate(enc) { if (enc === 'hex') return this.priv.toString(16, 2);else return this.priv; }; KeyPair.prototype._importPrivate = function _importPrivate(key, enc) { this.priv = new BN(key, enc || 16); // Ensure that the priv won't be bigger than n, otherwise we may fail // in fixed multiplication method this.priv = this.priv.umod(this.ec.curve.n); }; KeyPair.prototype._importPublic = function _importPublic(key, enc) { if (key.x || key.y) { // Montgomery points only have an `x` coordinate. // Weierstrass/Edwards points on the other hand have both `x` and // `y` coordinates. if (this.ec.curve.type === 'mont') { assert(key.x, 'Need x coordinate'); } else if (this.ec.curve.type === 'short' || this.ec.curve.type === 'edwards') { assert(key.x && key.y, 'Need both x and y coordinate'); } this.pub = this.ec.curve.point(key.x, key.y); return; } this.pub = this.ec.curve.decodePoint(key, enc); }; // ECDH KeyPair.prototype.derive = function derive(pub) { return pub.mul(this.priv).getX(); }; // ECDSA KeyPair.prototype.sign = function sign(msg, enc, options) { return this.ec.sign(msg, this, enc, options); }; KeyPair.prototype.verify = function verify(msg, signature) { return this.ec.verify(msg, signature, this); }; KeyPair.prototype.inspect = function inspect() { return ''; }; },{"../utils":364,"bn.js":365}],359:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); var utils = require('../utils'); var assert = utils.assert; function Signature(options, enc) { if (options instanceof Signature) return options; if (this._importDER(options, enc)) return; assert(options.r && options.s, 'Signature without r or s'); this.r = new BN(options.r, 16); this.s = new BN(options.s, 16); if (options.recoveryParam === undefined) this.recoveryParam = null;else this.recoveryParam = options.recoveryParam; } module.exports = Signature; function Position() { this.place = 0; } function getLength(buf, p) { var initial = buf[p.place++]; if (!(initial & 0x80)) { return initial; } var octetLen = initial & 0xf; // Indefinite length or overflow if (octetLen === 0 || octetLen > 4) { return false; } var val = 0; for (var i = 0, off = p.place; i < octetLen; i++, off++) { val <<= 8; val |= buf[off]; val >>>= 0; } // Leading zeroes if (val <= 0x7f) { return false; } p.place = off; return val; } function rmPadding(buf) { var i = 0; var len = buf.length - 1; while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) { i++; } if (i === 0) { return buf; } return buf.slice(i); } Signature.prototype._importDER = function _importDER(data, enc) { data = utils.toArray(data, enc); var p = new Position(); if (data[p.place++] !== 0x30) { return false; } var len = getLength(data, p); if (len === false) { return false; } if (len + p.place !== data.length) { return false; } if (data[p.place++] !== 0x02) { return false; } var rlen = getLength(data, p); if (rlen === false) { return false; } var r = data.slice(p.place, rlen + p.place); p.place += rlen; if (data[p.place++] !== 0x02) { return false; } var slen = getLength(data, p); if (slen === false) { return false; } if (data.length !== slen + p.place) { return false; } var s = data.slice(p.place, slen + p.place); if (r[0] === 0) { if (r[1] & 0x80) { r = r.slice(1); } else { // Leading zeroes return false; } } if (s[0] === 0) { if (s[1] & 0x80) { s = s.slice(1); } else { // Leading zeroes return false; } } this.r = new BN(r); this.s = new BN(s); this.recoveryParam = null; return true; }; function constructLength(arr, len) { if (len < 0x80) { arr.push(len); return; } var octets = 1 + (Math.log(len) / Math.LN2 >>> 3); arr.push(octets | 0x80); while (--octets) { arr.push(len >>> (octets << 3) & 0xff); } arr.push(len); } Signature.prototype.toDER = function toDER(enc) { var r = this.r.toArray(); var s = this.s.toArray(); // Pad values if (r[0] & 0x80) r = [0].concat(r); // Pad values if (s[0] & 0x80) s = [0].concat(s); r = rmPadding(r); s = rmPadding(s); while (!s[0] && !(s[1] & 0x80)) { s = s.slice(1); } var arr = [0x02]; constructLength(arr, r.length); arr = arr.concat(r); arr.push(0x02); constructLength(arr, s.length); var backHalf = arr.concat(s); var res = [0x30]; constructLength(res, backHalf.length); res = res.concat(backHalf); return utils.encode(res, enc); }; },{"../utils":364,"bn.js":365}],360:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); var curves = require('../curves'); var utils = require('../utils'); var assert = utils.assert; var parseBytes = utils.parseBytes; var KeyPair = require('./key'); var Signature = require('./signature'); function EDDSA(curve) { assert(curve === 'ed25519', 'only tested with ed25519 so far'); if (!(this instanceof EDDSA)) return new EDDSA(curve); var curve = curves[curve].curve; this.curve = curve; this.g = curve.g; this.g.precompute(curve.n.bitLength() + 1); this.pointClass = curve.point().constructor; this.encodingLength = Math.ceil(curve.n.bitLength() / 8); this.hash = hash.sha512; } module.exports = EDDSA; /** * @param {Array|String} message - message bytes * @param {Array|String|KeyPair} secret - secret bytes or a keypair * @returns {Signature} - signature */ EDDSA.prototype.sign = function sign(message, secret) { message = parseBytes(message); var key = this.keyFromSecret(secret); var r = this.hashInt(key.messagePrefix(), message); var R = this.g.mul(r); var Rencoded = this.encodePoint(R); var s_ = this.hashInt(Rencoded, key.pubBytes(), message).mul(key.priv()); var S = r.add(s_).umod(this.curve.n); return this.makeSignature({ R: R, S: S, Rencoded: Rencoded }); }; /** * @param {Array} message - message bytes * @param {Array|String|Signature} sig - sig bytes * @param {Array|String|Point|KeyPair} pub - public key * @returns {Boolean} - true if public key matches sig of message */ EDDSA.prototype.verify = function verify(message, sig, pub) { message = parseBytes(message); sig = this.makeSignature(sig); var key = this.keyFromPublic(pub); var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message); var SG = this.g.mul(sig.S()); var RplusAh = sig.R().add(key.pub().mul(h)); return RplusAh.eq(SG); }; EDDSA.prototype.hashInt = function hashInt() { var hash = this.hash(); for (var i = 0; i < arguments.length; i++) { hash.update(arguments[i]); } return utils.intFromLE(hash.digest()).umod(this.curve.n); }; EDDSA.prototype.keyFromPublic = function keyFromPublic(pub) { return KeyPair.fromPublic(this, pub); }; EDDSA.prototype.keyFromSecret = function keyFromSecret(secret) { return KeyPair.fromSecret(this, secret); }; EDDSA.prototype.makeSignature = function makeSignature(sig) { if (sig instanceof Signature) return sig; return new Signature(this, sig); }; /** * * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2 * * EDDSA defines methods for encoding and decoding points and integers. These are * helper convenience methods, that pass along to utility functions implied * parameters. * */ EDDSA.prototype.encodePoint = function encodePoint(point) { var enc = point.getY().toArray('le', this.encodingLength); enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0; return enc; }; EDDSA.prototype.decodePoint = function decodePoint(bytes) { bytes = utils.parseBytes(bytes); var lastIx = bytes.length - 1; var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80); var xIsOdd = (bytes[lastIx] & 0x80) !== 0; var y = utils.intFromLE(normed); return this.curve.pointFromY(y, xIsOdd); }; EDDSA.prototype.encodeInt = function encodeInt(num) { return num.toArray('le', this.encodingLength); }; EDDSA.prototype.decodeInt = function decodeInt(bytes) { return utils.intFromLE(bytes); }; EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; },{"../curves":356,"../utils":364,"./key":361,"./signature":362,"hash.js":372}],361:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var assert = utils.assert; var parseBytes = utils.parseBytes; var cachedProperty = utils.cachedProperty; /** * @param {EDDSA} eddsa - instance * @param {Object} params - public/private key parameters * * @param {Array} [params.secret] - secret seed bytes * @param {Point} [params.pub] - public key point (aka `A` in eddsa terms) * @param {Array} [params.pub] - public key point encoded as bytes * */ function KeyPair(eddsa, params) { this.eddsa = eddsa; this._secret = parseBytes(params.secret); if (eddsa.isPoint(params.pub)) this._pub = params.pub;else this._pubBytes = parseBytes(params.pub); } KeyPair.fromPublic = function fromPublic(eddsa, pub) { if (pub instanceof KeyPair) return pub; return new KeyPair(eddsa, { pub: pub }); }; KeyPair.fromSecret = function fromSecret(eddsa, secret) { if (secret instanceof KeyPair) return secret; return new KeyPair(eddsa, { secret: secret }); }; KeyPair.prototype.secret = function secret() { return this._secret; }; cachedProperty(KeyPair, 'pubBytes', function pubBytes() { return this.eddsa.encodePoint(this.pub()); }); cachedProperty(KeyPair, 'pub', function pub() { if (this._pubBytes) return this.eddsa.decodePoint(this._pubBytes); return this.eddsa.g.mul(this.priv()); }); cachedProperty(KeyPair, 'privBytes', function privBytes() { var eddsa = this.eddsa; var hash = this.hash(); var lastIx = eddsa.encodingLength - 1; var a = hash.slice(0, eddsa.encodingLength); a[0] &= 248; a[lastIx] &= 127; a[lastIx] |= 64; return a; }); cachedProperty(KeyPair, 'priv', function priv() { return this.eddsa.decodeInt(this.privBytes()); }); cachedProperty(KeyPair, 'hash', function hash() { return this.eddsa.hash().update(this.secret()).digest(); }); cachedProperty(KeyPair, 'messagePrefix', function messagePrefix() { return this.hash().slice(this.eddsa.encodingLength); }); KeyPair.prototype.sign = function sign(message) { assert(this._secret, 'KeyPair can only verify'); return this.eddsa.sign(message, this); }; KeyPair.prototype.verify = function verify(message, sig) { return this.eddsa.verify(message, sig, this); }; KeyPair.prototype.getSecret = function getSecret(enc) { assert(this._secret, 'KeyPair is public only'); return utils.encode(this.secret(), enc); }; KeyPair.prototype.getPublic = function getPublic(enc) { return utils.encode(this.pubBytes(), enc); }; module.exports = KeyPair; },{"../utils":364}],362:[function(require,module,exports){ 'use strict'; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var BN = require('bn.js'); var utils = require('../utils'); var assert = utils.assert; var cachedProperty = utils.cachedProperty; var parseBytes = utils.parseBytes; /** * @param {EDDSA} eddsa - eddsa instance * @param {Array|Object} sig - * @param {Array|Point} [sig.R] - R point as Point or bytes * @param {Array|bn} [sig.S] - S scalar as bn or bytes * @param {Array} [sig.Rencoded] - R point encoded * @param {Array} [sig.Sencoded] - S scalar encoded */ function Signature(eddsa, sig) { this.eddsa = eddsa; if (_typeof(sig) !== 'object') sig = parseBytes(sig); if (Array.isArray(sig)) { sig = { R: sig.slice(0, eddsa.encodingLength), S: sig.slice(eddsa.encodingLength) }; } assert(sig.R && sig.S, 'Signature without R or S'); if (eddsa.isPoint(sig.R)) this._R = sig.R; if (sig.S instanceof BN) this._S = sig.S; this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded; this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded; } cachedProperty(Signature, 'S', function S() { return this.eddsa.decodeInt(this.Sencoded()); }); cachedProperty(Signature, 'R', function R() { return this.eddsa.decodePoint(this.Rencoded()); }); cachedProperty(Signature, 'Rencoded', function Rencoded() { return this.eddsa.encodePoint(this.R()); }); cachedProperty(Signature, 'Sencoded', function Sencoded() { return this.eddsa.encodeInt(this.S()); }); Signature.prototype.toBytes = function toBytes() { return this.Rencoded().concat(this.Sencoded()); }; Signature.prototype.toHex = function toHex() { return utils.encode(this.toBytes(), 'hex').toUpperCase(); }; module.exports = Signature; },{"../utils":364,"bn.js":365}],363:[function(require,module,exports){ "use strict"; module.exports = { doubles: { step: 4, points: [['e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a', 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821'], ['8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508', '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf'], ['175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739', 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695'], ['363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640', '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9'], ['8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c', '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36'], ['723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda', '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f'], ['eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa', '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999'], ['100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0', 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09'], ['e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d', '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d'], ['feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d', 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088'], ['da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1', '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d'], ['53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0', '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8'], ['8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047', '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a'], ['385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862', '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453'], ['6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7', '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160'], ['3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd', '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0'], ['85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83', '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6'], ['948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a', '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589'], ['6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8', 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17'], ['e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d', '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda'], ['e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725', '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd'], ['213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754', '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2'], ['4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c', '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6'], ['fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6', '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f'], ['76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39', 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01'], ['c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891', '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3'], ['d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b', 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f'], ['b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03', '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7'], ['e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d', 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78'], ['a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070', '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1'], ['90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4', 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150'], ['8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da', '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82'], ['e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11', '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc'], ['8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e', 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b'], ['e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41', '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51'], ['b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef', '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45'], ['d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8', 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120'], ['324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d', '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84'], ['4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96', '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d'], ['9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd', 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d'], ['6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5', '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8'], ['a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266', '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8'], ['7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71', '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac'], ['928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac', 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f'], ['85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751', '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962'], ['ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e', '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907'], ['827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241', 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec'], ['eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3', 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d'], ['e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f', '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414'], ['1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19', 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd'], ['146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be', 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0'], ['fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9', '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811'], ['da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2', '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1'], ['a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13', '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c'], ['174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c', 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73'], ['959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba', '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd'], ['d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151', 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405'], ['64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073', 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589'], ['8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458', '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e'], ['13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b', '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27'], ['bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366', 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1'], ['8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa', '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482'], ['8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0', '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945'], ['dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787', '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573'], ['f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e', 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82']] }, naf: { wnd: 7, points: [['f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9', '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672'], ['2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4', 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6'], ['5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc', '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da'], ['acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe', 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37'], ['774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb', 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b'], ['f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8', 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81'], ['d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e', '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58'], ['defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34', '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77'], ['2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c', '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a'], ['352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5', '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c'], ['2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f', '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67'], ['9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714', '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402'], ['daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729', 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55'], ['c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db', '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482'], ['6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4', 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82'], ['1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5', 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396'], ['605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479', '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49'], ['62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d', '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf'], ['80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f', '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a'], ['7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb', 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7'], ['d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9', 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933'], ['49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963', '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a'], ['77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74', '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6'], ['f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530', 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37'], ['463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b', '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e'], ['f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247', 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6'], ['caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1', 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476'], ['2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120', '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40'], ['7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435', '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61'], ['754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18', '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683'], ['e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8', '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5'], ['186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb', '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b'], ['df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f', '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417'], ['5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143', 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868'], ['290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba', 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a'], ['af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45', 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6'], ['766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a', '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996'], ['59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e', 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e'], ['f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8', 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d'], ['7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c', '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2'], ['948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519', 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e'], ['7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab', '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437'], ['3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca', 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311'], ['d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf', '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4'], ['1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610', '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575'], ['733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4', 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d'], ['15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c', 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d'], ['a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940', 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629'], ['e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980', 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06'], ['311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3', '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374'], ['34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf', '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee'], ['f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63', '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1'], ['d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448', 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b'], ['32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf', '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661'], ['7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5', '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6'], ['ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6', '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e'], ['16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5', '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d'], ['eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99', 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc'], ['78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51', 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4'], ['494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5', '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c'], ['a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5', '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b'], ['c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997', '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913'], ['841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881', '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154'], ['5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5', '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865'], ['36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66', 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc'], ['336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726', 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224'], ['8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede', '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e'], ['1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94', '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6'], ['85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31', '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511'], ['29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51', 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b'], ['a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252', 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2'], ['4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5', 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c'], ['d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b', '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3'], ['ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4', '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d'], ['af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f', '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700'], ['e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889', '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4'], ['591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246', 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196'], ['11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984', '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4'], ['3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a', 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257'], ['cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030', 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13'], ['c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197', '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096'], ['c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593', 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38'], ['a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef', '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f'], ['347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38', '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448'], ['da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a', '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a'], ['c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111', '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4'], ['4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502', '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437'], ['3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea', 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7'], ['cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26', '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d'], ['b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986', '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a'], ['d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e', '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54'], ['48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4', '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77'], ['dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda', 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517'], ['6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859', 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10'], ['e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f', 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125'], ['eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c', '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e'], ['13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942', 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1'], ['ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a', '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2'], ['b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80', '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423'], ['ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d', '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8'], ['8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1', 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758'], ['52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63', 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375'], ['e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352', '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d'], ['7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193', 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec'], ['5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00', '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0'], ['32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58', 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c'], ['e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7', 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4'], ['8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8', 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f'], ['4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e', '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649'], ['3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d', 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826'], ['674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b', '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5'], ['d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f', 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87'], ['30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6', '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b'], ['be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297', '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc'], ['93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a', '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c'], ['b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c', 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f'], ['d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52', '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a'], ['d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb', 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46'], ['463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065', 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f'], ['7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917', '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03'], ['74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9', 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08'], ['30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3', '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8'], ['9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57', '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373'], ['176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66', 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3'], ['75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8', '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8'], ['809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721', '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1'], ['1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180', '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9']] } }; },{}],364:[function(require,module,exports){ 'use strict'; var utils = exports; var BN = require('bn.js'); var minAssert = require('minimalistic-assert'); var minUtils = require('minimalistic-crypto-utils'); utils.assert = minAssert; utils.toArray = minUtils.toArray; utils.zero2 = minUtils.zero2; utils.toHex = minUtils.toHex; utils.encode = minUtils.encode; // Represent num in a w-NAF form function getNAF(num, w, bits) { var naf = new Array(Math.max(num.bitLength(), bits) + 1); naf.fill(0); var ws = 1 << w + 1; var k = num.clone(); for (var i = 0; i < naf.length; i++) { var z; var mod = k.andln(ws - 1); if (k.isOdd()) { if (mod > (ws >> 1) - 1) z = (ws >> 1) - mod;else z = mod; k.isubn(z); } else { z = 0; } naf[i] = z; k.iushrn(1); } return naf; } utils.getNAF = getNAF; // Represent k1, k2 in a Joint Sparse Form function getJSF(k1, k2) { var jsf = [[], []]; k1 = k1.clone(); k2 = k2.clone(); var d1 = 0; var d2 = 0; while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) { // First phase var m14 = k1.andln(3) + d1 & 3; var m24 = k2.andln(3) + d2 & 3; if (m14 === 3) m14 = -1; if (m24 === 3) m24 = -1; var u1; if ((m14 & 1) === 0) { u1 = 0; } else { var m8 = k1.andln(7) + d1 & 7; if ((m8 === 3 || m8 === 5) && m24 === 2) u1 = -m14;else u1 = m14; } jsf[0].push(u1); var u2; if ((m24 & 1) === 0) { u2 = 0; } else { var m8 = k2.andln(7) + d2 & 7; if ((m8 === 3 || m8 === 5) && m14 === 2) u2 = -m24;else u2 = m24; } jsf[1].push(u2); // Second phase if (2 * d1 === u1 + 1) d1 = 1 - d1; if (2 * d2 === u2 + 1) d2 = 1 - d2; k1.iushrn(1); k2.iushrn(1); } return jsf; } utils.getJSF = getJSF; function cachedProperty(obj, name, computer) { var key = '_' + name; obj.prototype[name] = function cachedProperty() { return this[key] !== undefined ? this[key] : this[key] = computer.call(this); }; } utils.cachedProperty = cachedProperty; function parseBytes(bytes) { return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') : bytes; } utils.parseBytes = parseBytes; function intFromLE(bytes) { return new BN(bytes, 'hex', 'le'); } utils.intFromLE = intFromLE; },{"bn.js":365,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],365:[function(require,module,exports){ arguments[4][181][0].apply(exports,arguments) },{"buffer":185,"dup":181}],366:[function(require,module,exports){ module.exports={ "_from": "elliptic@^6.5.3", "_id": "elliptic@6.5.3", "_inBundle": false, "_integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "_location": "/elliptic", "_phantomChildren": {}, "_requested": { "type": "range", "registry": true, "raw": "elliptic@^6.5.3", "name": "elliptic", "escapedName": "elliptic", "rawSpec": "^6.5.3", "saveSpec": null, "fetchSpec": "^6.5.3" }, "_requiredBy": [ "/browserify-sign", "/create-ecdh" ], "_resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", "_shasum": "cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6", "_spec": "elliptic@^6.5.3", "_where": "/mnt/d/dev/git/exceljs/node_modules/browserify-sign", "author": { "name": "Fedor Indutny", "email": "fedor@indutny.com" }, "bugs": { "url": "https://github.com/indutny/elliptic/issues" }, "bundleDependencies": false, "dependencies": { "bn.js": "^4.4.0", "brorand": "^1.0.1", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" }, "deprecated": false, "description": "EC cryptography", "devDependencies": { "brfs": "^1.4.3", "coveralls": "^3.0.8", "grunt": "^1.0.4", "grunt-browserify": "^5.0.0", "grunt-cli": "^1.2.0", "grunt-contrib-connect": "^1.0.0", "grunt-contrib-copy": "^1.0.0", "grunt-contrib-uglify": "^1.0.1", "grunt-mocha-istanbul": "^3.0.1", "grunt-saucelabs": "^9.0.1", "istanbul": "^0.4.2", "jscs": "^3.0.7", "jshint": "^2.10.3", "mocha": "^6.2.2" }, "files": [ "lib" ], "homepage": "https://github.com/indutny/elliptic", "keywords": [ "EC", "Elliptic", "curve", "Cryptography" ], "license": "MIT", "main": "lib/elliptic.js", "name": "elliptic", "repository": { "type": "git", "url": "git+ssh://git@github.com/indutny/elliptic.git" }, "scripts": { "jscs": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", "jshint": "jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js", "lint": "npm run jscs && npm run jshint", "test": "npm run lint && npm run unit", "unit": "istanbul test _mocha --reporter=spec test/index.js", "version": "grunt dist && git add dist/" }, "version": "6.5.3" } },{}],367:[function(require,module,exports){ "use strict"; function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. var objectCreate = Object.create || objectCreatePolyfill; var objectKeys = Object.keys || objectKeysPolyfill; var bind = Function.prototype.bind || functionBindPolyfill; function EventEmitter() { if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { this._events = objectCreate(null); this._eventsCount = 0; } this._maxListeners = this._maxListeners || undefined; } module.exports = EventEmitter; // Backwards-compat with node 0.10.x EventEmitter.EventEmitter = EventEmitter; EventEmitter.prototype._events = undefined; EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are // added to it. This is a useful default which helps finding memory leaks. var defaultMaxListeners = 10; var hasDefineProperty; try { var o = {}; if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); hasDefineProperty = o.x === 0; } catch (err) { hasDefineProperty = false; } if (hasDefineProperty) { Object.defineProperty(EventEmitter, 'defaultMaxListeners', { enumerable: true, get: function get() { return defaultMaxListeners; }, set: function set(arg) { // check whether the input is a positive number (whose value is zero or // greater and not a NaN). if (typeof arg !== 'number' || arg < 0 || arg !== arg) throw new TypeError('"defaultMaxListeners" must be a positive number'); defaultMaxListeners = arg; } }); } else { EventEmitter.defaultMaxListeners = defaultMaxListeners; } // Obviously not all Emitters should be limited to 10. This function allows // that to be increased. Set to zero for unlimited. EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { if (typeof n !== 'number' || n < 0 || isNaN(n)) throw new TypeError('"n" argument must be a positive number'); this._maxListeners = n; return this; }; function $getMaxListeners(that) { if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; return that._maxListeners; } EventEmitter.prototype.getMaxListeners = function getMaxListeners() { return $getMaxListeners(this); }; // These standalone emit* functions are used to optimize calling of event // handlers for fast cases because emit() itself often has a variable number of // arguments and can be deoptimized because of that. These functions always have // the same number of arguments and thus do not get deoptimized, so the code // inside them can execute faster. function emitNone(handler, isFn, self) { if (isFn) handler.call(self);else { var len = handler.length; var listeners = arrayClone(handler, len); for (var i = 0; i < len; ++i) { listeners[i].call(self); } } } function emitOne(handler, isFn, self, arg1) { if (isFn) handler.call(self, arg1);else { var len = handler.length; var listeners = arrayClone(handler, len); for (var i = 0; i < len; ++i) { listeners[i].call(self, arg1); } } } function emitTwo(handler, isFn, self, arg1, arg2) { if (isFn) handler.call(self, arg1, arg2);else { var len = handler.length; var listeners = arrayClone(handler, len); for (var i = 0; i < len; ++i) { listeners[i].call(self, arg1, arg2); } } } function emitThree(handler, isFn, self, arg1, arg2, arg3) { if (isFn) handler.call(self, arg1, arg2, arg3);else { var len = handler.length; var listeners = arrayClone(handler, len); for (var i = 0; i < len; ++i) { listeners[i].call(self, arg1, arg2, arg3); } } } function emitMany(handler, isFn, self, args) { if (isFn) handler.apply(self, args);else { var len = handler.length; var listeners = arrayClone(handler, len); for (var i = 0; i < len; ++i) { listeners[i].apply(self, args); } } } EventEmitter.prototype.emit = function emit(type) { var er, handler, len, args, i, events; var doError = type === 'error'; events = this._events; if (events) doError = doError && events.error == null;else if (!doError) return false; // If there is no 'error' event listener then throw. if (doError) { if (arguments.length > 1) er = arguments[1]; if (er instanceof Error) { throw er; // Unhandled 'error' event } else { // At least give some kind of context to the user var err = new Error('Unhandled "error" event. (' + er + ')'); err.context = er; throw err; } return false; } handler = events[type]; if (!handler) return false; var isFn = typeof handler === 'function'; len = arguments.length; switch (len) { // fast cases case 1: emitNone(handler, isFn, this); break; case 2: emitOne(handler, isFn, this, arguments[1]); break; case 3: emitTwo(handler, isFn, this, arguments[1], arguments[2]); break; case 4: emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); break; // slower default: args = new Array(len - 1); for (i = 1; i < len; i++) { args[i - 1] = arguments[i]; } emitMany(handler, isFn, this, args); } return true; }; function _addListener(target, type, listener, prepend) { var m; var events; var existing; if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); events = target._events; if (!events) { events = target._events = objectCreate(null); target._eventsCount = 0; } else { // To avoid recursion in the case that type === "newListener"! Before // adding it to the listeners, first emit "newListener". if (events.newListener) { target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the // this._events to be assigned to a new object events = target._events; } existing = events[type]; } if (!existing) { // Optimize the case of one listener. Don't need the extra array object. existing = events[type] = listener; ++target._eventsCount; } else { if (typeof existing === 'function') { // Adding the second element, need to change to array. existing = events[type] = prepend ? [listener, existing] : [existing, listener]; } else { // If we've already got an array, just append. if (prepend) { existing.unshift(listener); } else { existing.push(listener); } } // Check for listener leak if (!existing.warned) { m = $getMaxListeners(target); if (m && m > 0 && existing.length > m) { existing.warned = true; var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' "' + String(type) + '" listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit.'); w.name = 'MaxListenersExceededWarning'; w.emitter = target; w.type = type; w.count = existing.length; if ((typeof console === "undefined" ? "undefined" : _typeof(console)) === 'object' && console.warn) { console.warn('%s: %s', w.name, w.message); } } } } return target; } EventEmitter.prototype.addListener = function addListener(type, listener) { return _addListener(this, type, listener, false); }; EventEmitter.prototype.on = EventEmitter.prototype.addListener; EventEmitter.prototype.prependListener = function prependListener(type, listener) { return _addListener(this, type, listener, true); }; function onceWrapper() { if (!this.fired) { this.target.removeListener(this.type, this.wrapFn); this.fired = true; switch (arguments.length) { case 0: return this.listener.call(this.target); case 1: return this.listener.call(this.target, arguments[0]); case 2: return this.listener.call(this.target, arguments[0], arguments[1]); case 3: return this.listener.call(this.target, arguments[0], arguments[1], arguments[2]); default: var args = new Array(arguments.length); for (var i = 0; i < args.length; ++i) { args[i] = arguments[i]; } this.listener.apply(this.target, args); } } } function _onceWrap(target, type, listener) { var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; var wrapped = bind.call(onceWrapper, state); wrapped.listener = listener; state.wrapFn = wrapped; return wrapped; } EventEmitter.prototype.once = function once(type, listener) { if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); this.on(type, _onceWrap(this, type, listener)); return this; }; EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); this.prependListener(type, _onceWrap(this, type, listener)); return this; }; // Emits a 'removeListener' event if and only if the listener was removed. EventEmitter.prototype.removeListener = function removeListener(type, listener) { var list, events, position, i, originalListener; if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); events = this._events; if (!events) return this; list = events[type]; if (!list) return this; if (list === listener || list.listener === listener) { if (--this._eventsCount === 0) this._events = objectCreate(null);else { delete events[type]; if (events.removeListener) this.emit('removeListener', type, list.listener || listener); } } else if (typeof list !== 'function') { position = -1; for (i = list.length - 1; i >= 0; i--) { if (list[i] === listener || list[i].listener === listener) { originalListener = list[i].listener; position = i; break; } } if (position < 0) return this; if (position === 0) list.shift();else spliceOne(list, position); if (list.length === 1) events[type] = list[0]; if (events.removeListener) this.emit('removeListener', type, originalListener || listener); } return this; }; EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { var listeners, events, i; events = this._events; if (!events) return this; // not listening for removeListener, no need to emit if (!events.removeListener) { if (arguments.length === 0) { this._events = objectCreate(null); this._eventsCount = 0; } else if (events[type]) { if (--this._eventsCount === 0) this._events = objectCreate(null);else delete events[type]; } return this; } // emit removeListener for all listeners on all events if (arguments.length === 0) { var keys = objectKeys(events); var key; for (i = 0; i < keys.length; ++i) { key = keys[i]; if (key === 'removeListener') continue; this.removeAllListeners(key); } this.removeAllListeners('removeListener'); this._events = objectCreate(null); this._eventsCount = 0; return this; } listeners = events[type]; if (typeof listeners === 'function') { this.removeListener(type, listeners); } else if (listeners) { // LIFO order for (i = listeners.length - 1; i >= 0; i--) { this.removeListener(type, listeners[i]); } } return this; }; function _listeners(target, type, unwrap) { var events = target._events; if (!events) return []; var evlistener = events[type]; if (!evlistener) return []; if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); } EventEmitter.prototype.listeners = function listeners(type) { return _listeners(this, type, true); }; EventEmitter.prototype.rawListeners = function rawListeners(type) { return _listeners(this, type, false); }; EventEmitter.listenerCount = function (emitter, type) { if (typeof emitter.listenerCount === 'function') { return emitter.listenerCount(type); } else { return listenerCount.call(emitter, type); } }; EventEmitter.prototype.listenerCount = listenerCount; function listenerCount(type) { var events = this._events; if (events) { var evlistener = events[type]; if (typeof evlistener === 'function') { return 1; } else if (evlistener) { return evlistener.length; } } return 0; } EventEmitter.prototype.eventNames = function eventNames() { return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; }; // About 1.5x faster than the two-arg version of Array#splice(). function spliceOne(list, index) { for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { list[i] = list[k]; } list.pop(); } function arrayClone(arr, n) { var copy = new Array(n); for (var i = 0; i < n; ++i) { copy[i] = arr[i]; } return copy; } function unwrapListeners(arr) { var ret = new Array(arr.length); for (var i = 0; i < ret.length; ++i) { ret[i] = arr[i].listener || arr[i]; } return ret; } function objectCreatePolyfill(proto) { var F = function F() {}; F.prototype = proto; return new F(); } function objectKeysPolyfill(obj) { var keys = []; for (var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) { keys.push(k); } } return k; } function functionBindPolyfill(context) { var fn = this; return function () { return fn.apply(context, arguments); }; } },{}],368:[function(require,module,exports){ "use strict"; var Buffer = require('safe-buffer').Buffer; var MD5 = require('md5.js'); /* eslint-disable camelcase */ function EVP_BytesToKey(password, salt, keyBits, ivLen) { if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary'); if (salt) { if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary'); if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length'); } var keyLen = keyBits / 8; var key = Buffer.alloc(keyLen); var iv = Buffer.alloc(ivLen || 0); var tmp = Buffer.alloc(0); while (keyLen > 0 || ivLen > 0) { var hash = new MD5(); hash.update(tmp); hash.update(password); if (salt) hash.update(salt); tmp = hash.digest(); var used = 0; if (keyLen > 0) { var keyStart = key.length - keyLen; used = Math.min(keyLen, tmp.length); tmp.copy(key, keyStart, 0, used); keyLen -= used; } if (used < tmp.length && ivLen > 0) { var ivStart = iv.length - ivLen; var length = Math.min(ivLen, tmp.length - used); tmp.copy(iv, ivStart, used, used + length); ivLen -= length; } } tmp.fill(0); return { key: key, iv: iv }; } module.exports = EVP_BytesToKey; },{"md5.js":434,"safe-buffer":494}],369:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var format_1 = require("@fast-csv/format"); Object.defineProperty(exports, "format", { enumerable: true, get: function get() { return format_1.format; } }); Object.defineProperty(exports, "write", { enumerable: true, get: function get() { return format_1.write; } }); Object.defineProperty(exports, "writeToStream", { enumerable: true, get: function get() { return format_1.writeToStream; } }); Object.defineProperty(exports, "writeToBuffer", { enumerable: true, get: function get() { return format_1.writeToBuffer; } }); Object.defineProperty(exports, "writeToString", { enumerable: true, get: function get() { return format_1.writeToString; } }); Object.defineProperty(exports, "writeToPath", { enumerable: true, get: function get() { return format_1.writeToPath; } }); Object.defineProperty(exports, "CsvFormatterStream", { enumerable: true, get: function get() { return format_1.CsvFormatterStream; } }); Object.defineProperty(exports, "FormatterOptions", { enumerable: true, get: function get() { return format_1.FormatterOptions; } }); var parse_1 = require("@fast-csv/parse"); Object.defineProperty(exports, "parse", { enumerable: true, get: function get() { return parse_1.parse; } }); Object.defineProperty(exports, "parseString", { enumerable: true, get: function get() { return parse_1.parseString; } }); Object.defineProperty(exports, "parseStream", { enumerable: true, get: function get() { return parse_1.parseStream; } }); Object.defineProperty(exports, "parseFile", { enumerable: true, get: function get() { return parse_1.parseFile; } }); Object.defineProperty(exports, "ParserOptions", { enumerable: true, get: function get() { return parse_1.ParserOptions; } }); Object.defineProperty(exports, "CsvParserStream", { enumerable: true, get: function get() { return parse_1.CsvParserStream; } }); },{"@fast-csv/format":148,"@fast-csv/parse":152}],370:[function(require,module,exports){ 'use strict'; var Buffer = require('safe-buffer').Buffer; var Transform = require('readable-stream').Transform; var inherits = require('inherits'); function throwIfNotStringOrBuffer(val, prefix) { if (!Buffer.isBuffer(val) && typeof val !== 'string') { throw new TypeError(prefix + ' must be a string or a buffer'); } } function HashBase(blockSize) { Transform.call(this); this._block = Buffer.allocUnsafe(blockSize); this._blockSize = blockSize; this._blockOffset = 0; this._length = [0, 0, 0, 0]; this._finalized = false; } inherits(HashBase, Transform); HashBase.prototype._transform = function (chunk, encoding, callback) { var error = null; try { this.update(chunk, encoding); } catch (err) { error = err; } callback(error); }; HashBase.prototype._flush = function (callback) { var error = null; try { this.push(this.digest()); } catch (err) { error = err; } callback(error); }; HashBase.prototype.update = function (data, encoding) { throwIfNotStringOrBuffer(data, 'Data'); if (this._finalized) throw new Error('Digest already called'); if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding); // consume data var block = this._block; var offset = 0; while (this._blockOffset + data.length - offset >= this._blockSize) { for (var i = this._blockOffset; i < this._blockSize;) { block[i++] = data[offset++]; } this._update(); this._blockOffset = 0; } while (offset < data.length) { block[this._blockOffset++] = data[offset++]; } // update length for (var j = 0, carry = data.length * 8; carry > 0; ++j) { this._length[j] += carry; carry = this._length[j] / 0x0100000000 | 0; if (carry > 0) this._length[j] -= 0x0100000000 * carry; } return this; }; HashBase.prototype._update = function () { throw new Error('_update is not implemented'); }; HashBase.prototype.digest = function (encoding) { if (this._finalized) throw new Error('Digest already called'); this._finalized = true; var digest = this._digest(); if (encoding !== undefined) digest = digest.toString(encoding); // reset state this._block.fill(0); this._blockOffset = 0; for (var i = 0; i < 4; ++i) { this._length[i] = 0; } return digest; }; HashBase.prototype._digest = function () { throw new Error('_digest is not implemented'); }; module.exports = HashBase; },{"inherits":387,"readable-stream":491,"safe-buffer":371}],371:[function(require,module,exports){ arguments[4][214][0].apply(exports,arguments) },{"buffer":216,"dup":214}],372:[function(require,module,exports){ "use strict"; var hash = exports; hash.utils = require('./hash/utils'); hash.common = require('./hash/common'); hash.sha = require('./hash/sha'); hash.ripemd = require('./hash/ripemd'); hash.hmac = require('./hash/hmac'); // Proxy hash functions to the main object hash.sha1 = hash.sha.sha1; hash.sha256 = hash.sha.sha256; hash.sha224 = hash.sha.sha224; hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; },{"./hash/common":373,"./hash/hmac":374,"./hash/ripemd":375,"./hash/sha":376,"./hash/utils":383}],373:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); var assert = require('minimalistic-assert'); function BlockHash() { this.pending = null; this.pendingTotal = 0; this.blockSize = this.constructor.blockSize; this.outSize = this.constructor.outSize; this.hmacStrength = this.constructor.hmacStrength; this.padLength = this.constructor.padLength / 8; this.endian = 'big'; this._delta8 = this.blockSize / 8; this._delta32 = this.blockSize / 32; } exports.BlockHash = BlockHash; BlockHash.prototype.update = function update(msg, enc) { // Convert message to array, pad it, and join into 32bit blocks msg = utils.toArray(msg, enc); if (!this.pending) this.pending = msg;else this.pending = this.pending.concat(msg); this.pendingTotal += msg.length; // Enough data, try updating if (this.pending.length >= this._delta8) { msg = this.pending; // Process pending data in blocks var r = msg.length % this._delta8; this.pending = msg.slice(msg.length - r, msg.length); if (this.pending.length === 0) this.pending = null; msg = utils.join32(msg, 0, msg.length - r, this.endian); for (var i = 0; i < msg.length; i += this._delta32) { this._update(msg, i, i + this._delta32); } } return this; }; BlockHash.prototype.digest = function digest(enc) { this.update(this._pad()); assert(this.pending === null); return this._digest(enc); }; BlockHash.prototype._pad = function pad() { var len = this.pendingTotal; var bytes = this._delta8; var k = bytes - (len + this.padLength) % bytes; var res = new Array(k + this.padLength); res[0] = 0x80; for (var i = 1; i < k; i++) { res[i] = 0; } // Append length len <<= 3; if (this.endian === 'big') { for (var t = 8; t < this.padLength; t++) { res[i++] = 0; } res[i++] = 0; res[i++] = 0; res[i++] = 0; res[i++] = 0; res[i++] = len >>> 24 & 0xff; res[i++] = len >>> 16 & 0xff; res[i++] = len >>> 8 & 0xff; res[i++] = len & 0xff; } else { res[i++] = len & 0xff; res[i++] = len >>> 8 & 0xff; res[i++] = len >>> 16 & 0xff; res[i++] = len >>> 24 & 0xff; res[i++] = 0; res[i++] = 0; res[i++] = 0; res[i++] = 0; for (t = 8; t < this.padLength; t++) { res[i++] = 0; } } return res; }; },{"./utils":383,"minimalistic-assert":437}],374:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); var assert = require('minimalistic-assert'); function Hmac(hash, key, enc) { if (!(this instanceof Hmac)) return new Hmac(hash, key, enc); this.Hash = hash; this.blockSize = hash.blockSize / 8; this.outSize = hash.outSize / 8; this.inner = null; this.outer = null; this._init(utils.toArray(key, enc)); } module.exports = Hmac; Hmac.prototype._init = function init(key) { // Shorten key, if needed if (key.length > this.blockSize) key = new this.Hash().update(key).digest(); assert(key.length <= this.blockSize); // Add padding to key for (var i = key.length; i < this.blockSize; i++) { key.push(0); } for (i = 0; i < key.length; i++) { key[i] ^= 0x36; } this.inner = new this.Hash().update(key); // 0x36 ^ 0x5c = 0x6a for (i = 0; i < key.length; i++) { key[i] ^= 0x6a; } this.outer = new this.Hash().update(key); }; Hmac.prototype.update = function update(msg, enc) { this.inner.update(msg, enc); return this; }; Hmac.prototype.digest = function digest(enc) { this.outer.update(this.inner.digest()); return this.outer.digest(enc); }; },{"./utils":383,"minimalistic-assert":437}],375:[function(require,module,exports){ 'use strict'; var utils = require('./utils'); var common = require('./common'); var rotl32 = utils.rotl32; var sum32 = utils.sum32; var sum32_3 = utils.sum32_3; var sum32_4 = utils.sum32_4; var BlockHash = common.BlockHash; function RIPEMD160() { if (!(this instanceof RIPEMD160)) return new RIPEMD160(); BlockHash.call(this); this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; this.endian = 'little'; } utils.inherits(RIPEMD160, BlockHash); exports.ripemd160 = RIPEMD160; RIPEMD160.blockSize = 512; RIPEMD160.outSize = 160; RIPEMD160.hmacStrength = 192; RIPEMD160.padLength = 64; RIPEMD160.prototype._update = function update(msg, start) { var A = this.h[0]; var B = this.h[1]; var C = this.h[2]; var D = this.h[3]; var E = this.h[4]; var Ah = A; var Bh = B; var Ch = C; var Dh = D; var Eh = E; for (var j = 0; j < 80; j++) { var T = sum32(rotl32(sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)), s[j]), E); A = E; E = D; D = rotl32(C, 10); C = B; B = T; T = sum32(rotl32(sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)), sh[j]), Eh); Ah = Eh; Eh = Dh; Dh = rotl32(Ch, 10); Ch = Bh; Bh = T; } T = sum32_3(this.h[1], C, Dh); this.h[1] = sum32_3(this.h[2], D, Eh); this.h[2] = sum32_3(this.h[3], E, Ah); this.h[3] = sum32_3(this.h[4], A, Bh); this.h[4] = sum32_3(this.h[0], B, Ch); this.h[0] = T; }; RIPEMD160.prototype._digest = function digest(enc) { if (enc === 'hex') return utils.toHex32(this.h, 'little');else return utils.split32(this.h, 'little'); }; function f(j, x, y, z) { if (j <= 15) return x ^ y ^ z;else if (j <= 31) return x & y | ~x & z;else if (j <= 47) return (x | ~y) ^ z;else if (j <= 63) return x & z | y & ~z;else return x ^ (y | ~z); } function K(j) { if (j <= 15) return 0x00000000;else if (j <= 31) return 0x5a827999;else if (j <= 47) return 0x6ed9eba1;else if (j <= 63) return 0x8f1bbcdc;else return 0xa953fd4e; } function Kh(j) { if (j <= 15) return 0x50a28be6;else if (j <= 31) return 0x5c4dd124;else if (j <= 47) return 0x6d703ef3;else if (j <= 63) return 0x7a6d76e9;else return 0x00000000; } var r = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]; var rh = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]; var s = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]; var sh = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]; },{"./common":373,"./utils":383}],376:[function(require,module,exports){ 'use strict'; exports.sha1 = require('./sha/1'); exports.sha224 = require('./sha/224'); exports.sha256 = require('./sha/256'); exports.sha384 = require('./sha/384'); exports.sha512 = require('./sha/512'); },{"./sha/1":377,"./sha/224":378,"./sha/256":379,"./sha/384":380,"./sha/512":381}],377:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var common = require('../common'); var shaCommon = require('./common'); var rotl32 = utils.rotl32; var sum32 = utils.sum32; var sum32_5 = utils.sum32_5; var ft_1 = shaCommon.ft_1; var BlockHash = common.BlockHash; var sha1_K = [0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xCA62C1D6]; function SHA1() { if (!(this instanceof SHA1)) return new SHA1(); BlockHash.call(this); this.h = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0]; this.W = new Array(80); } utils.inherits(SHA1, BlockHash); module.exports = SHA1; SHA1.blockSize = 512; SHA1.outSize = 160; SHA1.hmacStrength = 80; SHA1.padLength = 64; SHA1.prototype._update = function _update(msg, start) { var W = this.W; for (var i = 0; i < 16; i++) { W[i] = msg[start + i]; } for (; i < W.length; i++) { W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1); } var a = this.h[0]; var b = this.h[1]; var c = this.h[2]; var d = this.h[3]; var e = this.h[4]; for (i = 0; i < W.length; i++) { var s = ~~(i / 20); var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]); e = d; d = c; c = rotl32(b, 30); b = a; a = t; } this.h[0] = sum32(this.h[0], a); this.h[1] = sum32(this.h[1], b); this.h[2] = sum32(this.h[2], c); this.h[3] = sum32(this.h[3], d); this.h[4] = sum32(this.h[4], e); }; SHA1.prototype._digest = function digest(enc) { if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); }; },{"../common":373,"../utils":383,"./common":382}],378:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var SHA256 = require('./256'); function SHA224() { if (!(this instanceof SHA224)) return new SHA224(); SHA256.call(this); this.h = [0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4]; } utils.inherits(SHA224, SHA256); module.exports = SHA224; SHA224.blockSize = 512; SHA224.outSize = 224; SHA224.hmacStrength = 192; SHA224.padLength = 64; SHA224.prototype._digest = function digest(enc) { // Just truncate output if (enc === 'hex') return utils.toHex32(this.h.slice(0, 7), 'big');else return utils.split32(this.h.slice(0, 7), 'big'); }; },{"../utils":383,"./256":379}],379:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var common = require('../common'); var shaCommon = require('./common'); var assert = require('minimalistic-assert'); var sum32 = utils.sum32; var sum32_4 = utils.sum32_4; var sum32_5 = utils.sum32_5; var ch32 = shaCommon.ch32; var maj32 = shaCommon.maj32; var s0_256 = shaCommon.s0_256; var s1_256 = shaCommon.s1_256; var g0_256 = shaCommon.g0_256; var g1_256 = shaCommon.g1_256; var BlockHash = common.BlockHash; var sha256_K = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; function SHA256() { if (!(this instanceof SHA256)) return new SHA256(); BlockHash.call(this); this.h = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]; this.k = sha256_K; this.W = new Array(64); } utils.inherits(SHA256, BlockHash); module.exports = SHA256; SHA256.blockSize = 512; SHA256.outSize = 256; SHA256.hmacStrength = 192; SHA256.padLength = 64; SHA256.prototype._update = function _update(msg, start) { var W = this.W; for (var i = 0; i < 16; i++) { W[i] = msg[start + i]; } for (; i < W.length; i++) { W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); } var a = this.h[0]; var b = this.h[1]; var c = this.h[2]; var d = this.h[3]; var e = this.h[4]; var f = this.h[5]; var g = this.h[6]; var h = this.h[7]; assert(this.k.length === W.length); for (i = 0; i < W.length; i++) { var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); var T2 = sum32(s0_256(a), maj32(a, b, c)); h = g; g = f; f = e; e = sum32(d, T1); d = c; c = b; b = a; a = sum32(T1, T2); } this.h[0] = sum32(this.h[0], a); this.h[1] = sum32(this.h[1], b); this.h[2] = sum32(this.h[2], c); this.h[3] = sum32(this.h[3], d); this.h[4] = sum32(this.h[4], e); this.h[5] = sum32(this.h[5], f); this.h[6] = sum32(this.h[6], g); this.h[7] = sum32(this.h[7], h); }; SHA256.prototype._digest = function digest(enc) { if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); }; },{"../common":373,"../utils":383,"./common":382,"minimalistic-assert":437}],380:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var SHA512 = require('./512'); function SHA384() { if (!(this instanceof SHA384)) return new SHA384(); SHA512.call(this); this.h = [0xcbbb9d5d, 0xc1059ed8, 0x629a292a, 0x367cd507, 0x9159015a, 0x3070dd17, 0x152fecd8, 0xf70e5939, 0x67332667, 0xffc00b31, 0x8eb44a87, 0x68581511, 0xdb0c2e0d, 0x64f98fa7, 0x47b5481d, 0xbefa4fa4]; } utils.inherits(SHA384, SHA512); module.exports = SHA384; SHA384.blockSize = 1024; SHA384.outSize = 384; SHA384.hmacStrength = 192; SHA384.padLength = 128; SHA384.prototype._digest = function digest(enc) { if (enc === 'hex') return utils.toHex32(this.h.slice(0, 12), 'big');else return utils.split32(this.h.slice(0, 12), 'big'); }; },{"../utils":383,"./512":381}],381:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var common = require('../common'); var assert = require('minimalistic-assert'); var rotr64_hi = utils.rotr64_hi; var rotr64_lo = utils.rotr64_lo; var shr64_hi = utils.shr64_hi; var shr64_lo = utils.shr64_lo; var sum64 = utils.sum64; var sum64_hi = utils.sum64_hi; var sum64_lo = utils.sum64_lo; var sum64_4_hi = utils.sum64_4_hi; var sum64_4_lo = utils.sum64_4_lo; var sum64_5_hi = utils.sum64_5_hi; var sum64_5_lo = utils.sum64_5_lo; var BlockHash = common.BlockHash; var sha512_K = [0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817]; function SHA512() { if (!(this instanceof SHA512)) return new SHA512(); BlockHash.call(this); this.h = [0x6a09e667, 0xf3bcc908, 0xbb67ae85, 0x84caa73b, 0x3c6ef372, 0xfe94f82b, 0xa54ff53a, 0x5f1d36f1, 0x510e527f, 0xade682d1, 0x9b05688c, 0x2b3e6c1f, 0x1f83d9ab, 0xfb41bd6b, 0x5be0cd19, 0x137e2179]; this.k = sha512_K; this.W = new Array(160); } utils.inherits(SHA512, BlockHash); module.exports = SHA512; SHA512.blockSize = 1024; SHA512.outSize = 512; SHA512.hmacStrength = 192; SHA512.padLength = 128; SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { var W = this.W; // 32 x 32bit words for (var i = 0; i < 32; i++) { W[i] = msg[start + i]; } for (; i < W.length; i += 2) { var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); var c1_hi = W[i - 14]; // i - 7 var c1_lo = W[i - 13]; var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); var c3_hi = W[i - 32]; // i - 16 var c3_lo = W[i - 31]; W[i] = sum64_4_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo); W[i + 1] = sum64_4_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo); } }; SHA512.prototype._update = function _update(msg, start) { this._prepareBlock(msg, start); var W = this.W; var ah = this.h[0]; var al = this.h[1]; var bh = this.h[2]; var bl = this.h[3]; var ch = this.h[4]; var cl = this.h[5]; var dh = this.h[6]; var dl = this.h[7]; var eh = this.h[8]; var el = this.h[9]; var fh = this.h[10]; var fl = this.h[11]; var gh = this.h[12]; var gl = this.h[13]; var hh = this.h[14]; var hl = this.h[15]; assert(this.k.length === W.length); for (var i = 0; i < W.length; i += 2) { var c0_hi = hh; var c0_lo = hl; var c1_hi = s1_512_hi(eh, el); var c1_lo = s1_512_lo(eh, el); var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); var c3_hi = this.k[i]; var c3_lo = this.k[i + 1]; var c4_hi = W[i]; var c4_lo = W[i + 1]; var T1_hi = sum64_5_hi(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo); var T1_lo = sum64_5_lo(c0_hi, c0_lo, c1_hi, c1_lo, c2_hi, c2_lo, c3_hi, c3_lo, c4_hi, c4_lo); c0_hi = s0_512_hi(ah, al); c0_lo = s0_512_lo(ah, al); c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); hh = gh; hl = gl; gh = fh; gl = fl; fh = eh; fl = el; eh = sum64_hi(dh, dl, T1_hi, T1_lo); el = sum64_lo(dl, dl, T1_hi, T1_lo); dh = ch; dl = cl; ch = bh; cl = bl; bh = ah; bl = al; ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); } sum64(this.h, 0, ah, al); sum64(this.h, 2, bh, bl); sum64(this.h, 4, ch, cl); sum64(this.h, 6, dh, dl); sum64(this.h, 8, eh, el); sum64(this.h, 10, fh, fl); sum64(this.h, 12, gh, gl); sum64(this.h, 14, hh, hl); }; SHA512.prototype._digest = function digest(enc) { if (enc === 'hex') return utils.toHex32(this.h, 'big');else return utils.split32(this.h, 'big'); }; function ch64_hi(xh, xl, yh, yl, zh) { var r = xh & yh ^ ~xh & zh; if (r < 0) r += 0x100000000; return r; } function ch64_lo(xh, xl, yh, yl, zh, zl) { var r = xl & yl ^ ~xl & zl; if (r < 0) r += 0x100000000; return r; } function maj64_hi(xh, xl, yh, yl, zh) { var r = xh & yh ^ xh & zh ^ yh & zh; if (r < 0) r += 0x100000000; return r; } function maj64_lo(xh, xl, yh, yl, zh, zl) { var r = xl & yl ^ xl & zl ^ yl & zl; if (r < 0) r += 0x100000000; return r; } function s0_512_hi(xh, xl) { var c0_hi = rotr64_hi(xh, xl, 28); var c1_hi = rotr64_hi(xl, xh, 2); // 34 var c2_hi = rotr64_hi(xl, xh, 7); // 39 var r = c0_hi ^ c1_hi ^ c2_hi; if (r < 0) r += 0x100000000; return r; } function s0_512_lo(xh, xl) { var c0_lo = rotr64_lo(xh, xl, 28); var c1_lo = rotr64_lo(xl, xh, 2); // 34 var c2_lo = rotr64_lo(xl, xh, 7); // 39 var r = c0_lo ^ c1_lo ^ c2_lo; if (r < 0) r += 0x100000000; return r; } function s1_512_hi(xh, xl) { var c0_hi = rotr64_hi(xh, xl, 14); var c1_hi = rotr64_hi(xh, xl, 18); var c2_hi = rotr64_hi(xl, xh, 9); // 41 var r = c0_hi ^ c1_hi ^ c2_hi; if (r < 0) r += 0x100000000; return r; } function s1_512_lo(xh, xl) { var c0_lo = rotr64_lo(xh, xl, 14); var c1_lo = rotr64_lo(xh, xl, 18); var c2_lo = rotr64_lo(xl, xh, 9); // 41 var r = c0_lo ^ c1_lo ^ c2_lo; if (r < 0) r += 0x100000000; return r; } function g0_512_hi(xh, xl) { var c0_hi = rotr64_hi(xh, xl, 1); var c1_hi = rotr64_hi(xh, xl, 8); var c2_hi = shr64_hi(xh, xl, 7); var r = c0_hi ^ c1_hi ^ c2_hi; if (r < 0) r += 0x100000000; return r; } function g0_512_lo(xh, xl) { var c0_lo = rotr64_lo(xh, xl, 1); var c1_lo = rotr64_lo(xh, xl, 8); var c2_lo = shr64_lo(xh, xl, 7); var r = c0_lo ^ c1_lo ^ c2_lo; if (r < 0) r += 0x100000000; return r; } function g1_512_hi(xh, xl) { var c0_hi = rotr64_hi(xh, xl, 19); var c1_hi = rotr64_hi(xl, xh, 29); // 61 var c2_hi = shr64_hi(xh, xl, 6); var r = c0_hi ^ c1_hi ^ c2_hi; if (r < 0) r += 0x100000000; return r; } function g1_512_lo(xh, xl) { var c0_lo = rotr64_lo(xh, xl, 19); var c1_lo = rotr64_lo(xl, xh, 29); // 61 var c2_lo = shr64_lo(xh, xl, 6); var r = c0_lo ^ c1_lo ^ c2_lo; if (r < 0) r += 0x100000000; return r; } },{"../common":373,"../utils":383,"minimalistic-assert":437}],382:[function(require,module,exports){ 'use strict'; var utils = require('../utils'); var rotr32 = utils.rotr32; function ft_1(s, x, y, z) { if (s === 0) return ch32(x, y, z); if (s === 1 || s === 3) return p32(x, y, z); if (s === 2) return maj32(x, y, z); } exports.ft_1 = ft_1; function ch32(x, y, z) { return x & y ^ ~x & z; } exports.ch32 = ch32; function maj32(x, y, z) { return x & y ^ x & z ^ y & z; } exports.maj32 = maj32; function p32(x, y, z) { return x ^ y ^ z; } exports.p32 = p32; function s0_256(x) { return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); } exports.s0_256 = s0_256; function s1_256(x) { return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); } exports.s1_256 = s1_256; function g0_256(x) { return rotr32(x, 7) ^ rotr32(x, 18) ^ x >>> 3; } exports.g0_256 = g0_256; function g1_256(x) { return rotr32(x, 17) ^ rotr32(x, 19) ^ x >>> 10; } exports.g1_256 = g1_256; },{"../utils":383}],383:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); var inherits = require('inherits'); exports.inherits = inherits; function isSurrogatePair(msg, i) { if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) { return false; } if (i < 0 || i + 1 >= msg.length) { return false; } return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00; } function toArray(msg, enc) { if (Array.isArray(msg)) return msg.slice(); if (!msg) return []; var res = []; if (typeof msg === 'string') { if (!enc) { // Inspired by stringToUtf8ByteArray() in closure-library by Google // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143 // Apache License 2.0 // https://github.com/google/closure-library/blob/master/LICENSE var p = 0; for (var i = 0; i < msg.length; i++) { var c = msg.charCodeAt(i); if (c < 128) { res[p++] = c; } else if (c < 2048) { res[p++] = c >> 6 | 192; res[p++] = c & 63 | 128; } else if (isSurrogatePair(msg, i)) { c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF); res[p++] = c >> 18 | 240; res[p++] = c >> 12 & 63 | 128; res[p++] = c >> 6 & 63 | 128; res[p++] = c & 63 | 128; } else { res[p++] = c >> 12 | 224; res[p++] = c >> 6 & 63 | 128; res[p++] = c & 63 | 128; } } } else if (enc === 'hex') { msg = msg.replace(/[^a-z0-9]+/ig, ''); if (msg.length % 2 !== 0) msg = '0' + msg; for (i = 0; i < msg.length; i += 2) { res.push(parseInt(msg[i] + msg[i + 1], 16)); } } } else { for (i = 0; i < msg.length; i++) { res[i] = msg[i] | 0; } } return res; } exports.toArray = toArray; function toHex(msg) { var res = ''; for (var i = 0; i < msg.length; i++) { res += zero2(msg[i].toString(16)); } return res; } exports.toHex = toHex; function htonl(w) { var res = w >>> 24 | w >>> 8 & 0xff00 | w << 8 & 0xff0000 | (w & 0xff) << 24; return res >>> 0; } exports.htonl = htonl; function toHex32(msg, endian) { var res = ''; for (var i = 0; i < msg.length; i++) { var w = msg[i]; if (endian === 'little') w = htonl(w); res += zero8(w.toString(16)); } return res; } exports.toHex32 = toHex32; function zero2(word) { if (word.length === 1) return '0' + word;else return word; } exports.zero2 = zero2; function zero8(word) { if (word.length === 7) return '0' + word;else if (word.length === 6) return '00' + word;else if (word.length === 5) return '000' + word;else if (word.length === 4) return '0000' + word;else if (word.length === 3) return '00000' + word;else if (word.length === 2) return '000000' + word;else if (word.length === 1) return '0000000' + word;else return word; } exports.zero8 = zero8; function join32(msg, start, end, endian) { var len = end - start; assert(len % 4 === 0); var res = new Array(len / 4); for (var i = 0, k = start; i < res.length; i++, k += 4) { var w; if (endian === 'big') w = msg[k] << 24 | msg[k + 1] << 16 | msg[k + 2] << 8 | msg[k + 3];else w = msg[k + 3] << 24 | msg[k + 2] << 16 | msg[k + 1] << 8 | msg[k]; res[i] = w >>> 0; } return res; } exports.join32 = join32; function split32(msg, endian) { var res = new Array(msg.length * 4); for (var i = 0, k = 0; i < msg.length; i++, k += 4) { var m = msg[i]; if (endian === 'big') { res[k] = m >>> 24; res[k + 1] = m >>> 16 & 0xff; res[k + 2] = m >>> 8 & 0xff; res[k + 3] = m & 0xff; } else { res[k + 3] = m >>> 24; res[k + 2] = m >>> 16 & 0xff; res[k + 1] = m >>> 8 & 0xff; res[k] = m & 0xff; } } return res; } exports.split32 = split32; function rotr32(w, b) { return w >>> b | w << 32 - b; } exports.rotr32 = rotr32; function rotl32(w, b) { return w << b | w >>> 32 - b; } exports.rotl32 = rotl32; function sum32(a, b) { return a + b >>> 0; } exports.sum32 = sum32; function sum32_3(a, b, c) { return a + b + c >>> 0; } exports.sum32_3 = sum32_3; function sum32_4(a, b, c, d) { return a + b + c + d >>> 0; } exports.sum32_4 = sum32_4; function sum32_5(a, b, c, d, e) { return a + b + c + d + e >>> 0; } exports.sum32_5 = sum32_5; function sum64(buf, pos, ah, al) { var bh = buf[pos]; var bl = buf[pos + 1]; var lo = al + bl >>> 0; var hi = (lo < al ? 1 : 0) + ah + bh; buf[pos] = hi >>> 0; buf[pos + 1] = lo; } exports.sum64 = sum64; function sum64_hi(ah, al, bh, bl) { var lo = al + bl >>> 0; var hi = (lo < al ? 1 : 0) + ah + bh; return hi >>> 0; } exports.sum64_hi = sum64_hi; function sum64_lo(ah, al, bh, bl) { var lo = al + bl; return lo >>> 0; } exports.sum64_lo = sum64_lo; function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { var carry = 0; var lo = al; lo = lo + bl >>> 0; carry += lo < al ? 1 : 0; lo = lo + cl >>> 0; carry += lo < cl ? 1 : 0; lo = lo + dl >>> 0; carry += lo < dl ? 1 : 0; var hi = ah + bh + ch + dh + carry; return hi >>> 0; } exports.sum64_4_hi = sum64_4_hi; function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { var lo = al + bl + cl + dl; return lo >>> 0; } exports.sum64_4_lo = sum64_4_lo; function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { var carry = 0; var lo = al; lo = lo + bl >>> 0; carry += lo < al ? 1 : 0; lo = lo + cl >>> 0; carry += lo < cl ? 1 : 0; lo = lo + dl >>> 0; carry += lo < dl ? 1 : 0; lo = lo + el >>> 0; carry += lo < el ? 1 : 0; var hi = ah + bh + ch + dh + eh + carry; return hi >>> 0; } exports.sum64_5_hi = sum64_5_hi; function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { var lo = al + bl + cl + dl + el; return lo >>> 0; } exports.sum64_5_lo = sum64_5_lo; function rotr64_hi(ah, al, num) { var r = al << 32 - num | ah >>> num; return r >>> 0; } exports.rotr64_hi = rotr64_hi; function rotr64_lo(ah, al, num) { var r = ah << 32 - num | al >>> num; return r >>> 0; } exports.rotr64_lo = rotr64_lo; function shr64_hi(ah, al, num) { return ah >>> num; } exports.shr64_hi = shr64_hi; function shr64_lo(ah, al, num) { var r = ah << 32 - num | al >>> num; return r >>> 0; } exports.shr64_lo = shr64_lo; },{"inherits":387,"minimalistic-assert":437}],384:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); var utils = require('minimalistic-crypto-utils'); var assert = require('minimalistic-assert'); function HmacDRBG(options) { if (!(this instanceof HmacDRBG)) return new HmacDRBG(options); this.hash = options.hash; this.predResist = !!options.predResist; this.outLen = this.hash.outSize; this.minEntropy = options.minEntropy || this.hash.hmacStrength; this._reseed = null; this.reseedInterval = null; this.K = null; this.V = null; var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex'); var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex'); var pers = utils.toArray(options.pers, options.persEnc || 'hex'); assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); this._init(entropy, nonce, pers); } module.exports = HmacDRBG; HmacDRBG.prototype._init = function init(entropy, nonce, pers) { var seed = entropy.concat(nonce).concat(pers); this.K = new Array(this.outLen / 8); this.V = new Array(this.outLen / 8); for (var i = 0; i < this.V.length; i++) { this.K[i] = 0x00; this.V[i] = 0x01; } this._update(seed); this._reseed = 1; this.reseedInterval = 0x1000000000000; // 2^48 }; HmacDRBG.prototype._hmac = function hmac() { return new hash.hmac(this.hash, this.K); }; HmacDRBG.prototype._update = function update(seed) { var kmac = this._hmac().update(this.V).update([0x00]); if (seed) kmac = kmac.update(seed); this.K = kmac.digest(); this.V = this._hmac().update(this.V).digest(); if (!seed) return; this.K = this._hmac().update(this.V).update([0x01]).update(seed).digest(); this.V = this._hmac().update(this.V).digest(); }; HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { // Optional entropy enc if (typeof entropyEnc !== 'string') { addEnc = add; add = entropyEnc; entropyEnc = null; } entropy = utils.toArray(entropy, entropyEnc); add = utils.toArray(add, addEnc); assert(entropy.length >= this.minEntropy / 8, 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); this._update(entropy.concat(add || [])); this._reseed = 1; }; HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding if (typeof enc !== 'string') { addEnc = add; add = enc; enc = null; } // Optional additional data if (add) { add = utils.toArray(add, addEnc || 'hex'); this._update(add); } var temp = []; while (temp.length < len) { this.V = this._hmac().update(this.V).digest(); temp = temp.concat(this.V); } var res = temp.slice(0, len); this._update(add); this._reseed++; return utils.encode(res, enc); }; },{"hash.js":372,"minimalistic-assert":437,"minimalistic-crypto-utils":438}],385:[function(require,module,exports){ "use strict"; exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; var eBias = eMax >> 1; var nBits = -7; var i = isLE ? nBytes - 1 : 0; var d = isLE ? -1 : 1; var s = buffer[offset + i]; i += d; e = s & (1 << -nBits) - 1; s >>= -nBits; nBits += eLen; for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} m = e & (1 << -nBits) - 1; e >>= -nBits; nBits += mLen; for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} if (e === 0) { e = 1 - eBias; } else if (e === eMax) { return m ? NaN : (s ? -1 : 1) * Infinity; } else { m = m + Math.pow(2, mLen); e = e - eBias; } return (s ? -1 : 1) * m * Math.pow(2, e - mLen); }; exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { var e, m, c; var eLen = nBytes * 8 - mLen - 1; var eMax = (1 << eLen) - 1; var eBias = eMax >> 1; var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; var i = isLE ? 0 : nBytes - 1; var d = isLE ? 1 : -1; var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; value = Math.abs(value); if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0; e = eMax; } else { e = Math.floor(Math.log(value) / Math.LN2); if (value * (c = Math.pow(2, -e)) < 1) { e--; c *= 2; } if (e + eBias >= 1) { value += rt / c; } else { value += rt * Math.pow(2, 1 - eBias); } if (value * c >= 2) { e++; c /= 2; } if (e + eBias >= eMax) { m = 0; e = eMax; } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen); e = e + eBias; } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); e = 0; } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} e = e << mLen | m; eLen += mLen; for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} buffer[offset + i - d] |= s * 128; }; },{}],386:[function(require,module,exports){ (function (global){ 'use strict'; var Mutation = global.MutationObserver || global.WebKitMutationObserver; var scheduleDrain; { if (Mutation) { var called = 0; var observer = new Mutation(nextTick); var element = global.document.createTextNode(''); observer.observe(element, { characterData: true }); scheduleDrain = function scheduleDrain() { element.data = called = ++called % 2; }; } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') { var channel = new global.MessageChannel(); channel.port1.onmessage = nextTick; scheduleDrain = function scheduleDrain() { channel.port2.postMessage(0); }; } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) { scheduleDrain = function scheduleDrain() { // Create a