From 43b54cc14c0be1e3ed833bc4ed314fb05dbb0334 Mon Sep 17 00:00:00 2001 From: Andrii Bodnar Date: Sun, 13 Nov 2022 21:25:32 +0200 Subject: [PATCH] Final preparing --- .github/workflows/e2eTest.yml | 12 +- README.md | 14 +- __tests__/files/contributors.md | 2 +- demo.png | Bin 0 -> 101999 bytes dist/index.js | 6777 ++++++++++++++++++++++++++++++- dist/index.js.map | 2 +- dist/licenses.txt | 188 + package-lock.json | 421 +- package.json | 4 +- src/contributors.ts | 7 +- src/main.ts | 6 +- src/writer.ts | 3 +- 12 files changed, 7243 insertions(+), 193 deletions(-) create mode 100644 demo.png diff --git a/.github/workflows/e2eTest.yml b/.github/workflows/e2eTest.yml index 13a2cbb..92d281b 100644 --- a/.github/workflows/e2eTest.yml +++ b/.github/workflows/e2eTest.yml @@ -13,15 +13,25 @@ jobs: - uses: ./ with: max_contributors: 10 - min_words_contributed: 0 + min_words_contributed: 1 placeholder_start: '' placeholder_end: '' files: ./__tests__/files/contributors.md env: CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} + CROWDIN_ORGANIZATION: ${{ secrets.CROWDIN_ORGANIZATION }} - name: Test the Readme run: | cat ./__tests__/files/contributors.md git diff + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v4 + with: + title: Update Crowdin Contributors table + body: By [action-crowdin-contributors](https://github.com/andrii-bodnar/action-crowdin-contributors) GitHub action + commit-message: Update Crowdin Contributors table + committer: Crowdin Bot + branch: crowdin-contributors/patch diff --git a/README.md b/README.md index ae27993..4908311 100644 --- a/README.md +++ b/README.md @@ -79,9 +79,9 @@ jobs: uses: peter-evans/create-pull-request@v4 with: title: Update Crowdin Contributors table - body: By [action-crowdin-contributors](andrii-bodnar/action-crowdin-contributors) GitHub action + body: By [action-crowdin-contributors](https://github.com/andrii-bodnar/action-crowdin-contributors) GitHub action commit-message: Update Crowdin Contributors table - committer: Crowdin Bot + committer: Crowdin Bot branch: crowdin-contributors/patch ``` @@ -97,6 +97,16 @@ jobs: | `placeholder_start` | `` | Placeholder that marks the start of the contributors table | | `placeholder_end` | `` | Placeholder that marks the end of the contributors table | +## Demo + +The resulting table will look like this: + +[![Check dist](./demo.png)](https://github.com/andrii-bodnar/action-crowdin-contributors/pull/6) + +**Note:** it's just a test, in real use, it will display actual user's avatars. + +Example PR - [#6](https://github.com/andrii-bodnar/action-crowdin-contributors/pull/6) + ## Contributing If you want to contribute please read the [Contributing](/CONTRIBUTING.md) guidelines. diff --git a/__tests__/files/contributors.md b/__tests__/files/contributors.md index 199db41..3930344 100644 --- a/__tests__/files/contributors.md +++ b/__tests__/files/contributors.md @@ -1,6 +1,6 @@ ### Contributors file for tests -Thanks to these people this project exists: +Thanks to these translators and proofreaders this project exists: diff --git a/demo.png b/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..fb127adabe21df4279632f773d6d256493d13338 GIT binary patch literal 101999 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 RIs*LY-7~z4(tQ5re*k { @@ -9625,6 +9627,74 @@ CombinedStream.prototype._emitError = function(err) { }; +/***/ }), + +/***/ 473: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*! + * condense-newlines + * + * Copyright (c) 2014 Jon Schlinkert, contributors. + * Licensed under the MIT License + */ + + + +var isWhitespace = __nccwpck_require__(7273); +var extend = __nccwpck_require__(7512); +var typeOf = __nccwpck_require__(6961); + +module.exports = function(str, options) { + var opts = extend({}, options); + var sep = opts.sep || '\n\n'; + var min = opts.min; + var re; + + if (typeof min === 'number' && min !== 2) { + re = new RegExp('(\\r\\n|\\n|\\u2424) {' + min + ',}'); + } + if (typeof re === 'undefined') { + re = opts.regex || /(\r\n|\n|\u2424){2,}/g; + } + + // if a line is 100% whitespace it will be trimmed, so that + // later we can condense newlines correctly + if (opts.keepWhitespace !== true) { + str = str.split('\n').map(function(line) { + return isWhitespace(line) ? line.trim() : line; + }).join('\n'); + } + + str = trailingNewline(str, opts); + return str.replace(re, sep); +}; + +function trailingNewline(str, options) { + var val = options.trailingNewline; + if (val === false) { + return str; + } + + switch (typeOf(val)) { + case 'string': + str = str.replace(/\s+$/, options.trailingNewline); + break; + case 'function': + str = options.trailingNewline(str); + break; + case 'undefined': + case 'boolean': + default: { + str = str.replace(/\s+$/, '\n'); + break; + } + } + return str; +} + + /***/ }), /***/ 8222: @@ -10702,6 +10772,47 @@ module.exports.parse = DotenvModule.parse module.exports = DotenvModule +/***/ }), + +/***/ 7512: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; + + +var isObject = __nccwpck_require__(429); + +module.exports = function extend(o/*, objects*/) { + if (!isObject(o)) { o = {}; } + + var len = arguments.length; + for (var i = 1; i < len; i++) { + var obj = arguments[i]; + + if (isObject(obj)) { + assign(o, obj); + } + } + return o; +}; + +function assign(a, b) { + for (var key in b) { + if (hasOwn(b, key)) { + a[key] = b[key]; + } + } +} + +/** + * Returns true if the given `key` is an own property of `obj`. + */ + +function hasOwn(obj, key) { + return Object.prototype.hasOwnProperty.call(obj, key); +} + + /***/ }), /***/ 1133: @@ -11370,226 +11481,6497 @@ module.exports = (flag, argv) => { /***/ }), -/***/ 7426: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 5625: +/***/ ((module) => { /*! - * mime-db - * Copyright(c) 2014 Jonathan Ong - * MIT Licensed + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT */ -/** - * Module exports. - */ +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} -module.exports = __nccwpck_require__(3765) +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} + +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} /***/ }), -/***/ 3583: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { +/***/ 429: +/***/ ((module) => { "use strict"; /*! - * mime-types - * Copyright(c) 2014 Jonathan Ong - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed + * is-extendable + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. */ -/** - * Module dependencies. - * @private - */ +module.exports = function isExtendable(val) { + return typeof val !== 'undefined' && val !== null + && (typeof val === 'object' || typeof val === 'function'); +}; -var db = __nccwpck_require__(7426) -var extname = (__nccwpck_require__(1017).extname) -/** - * Module variables. - * @private - */ +/***/ }), -var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ -var TEXT_TYPE_REGEXP = /^text\//i +/***/ 7273: +/***/ ((module) => { -/** - * Module exports. - * @public +"use strict"; +/*! + * is-whitespace + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. */ -exports.charset = charset -exports.charsets = { lookup: charset } -exports.contentType = contentType -exports.extension = extension -exports.extensions = Object.create(null) -exports.lookup = lookup -exports.types = Object.create(null) -// Populate the extensions/types maps -populateMaps(exports.extensions, exports.types) -/** - * Get the default charset for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ +var cache; -function charset (type) { - if (!type || typeof type !== 'string') { - return false - } +module.exports = function isWhitespace(str) { + return (typeof str === 'string') && regex().test(str); +}; - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) - var mime = match && db[match[1].toLowerCase()] +function regex() { + // ensure that runtime compilation only happens once + return cache || (cache = new RegExp('^[\\s\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"]+$')); +} - if (mime && mime.charset) { - return mime.charset - } - // default text/* to utf-8 - if (match && TEXT_TYPE_REGEXP.test(match[1])) { - return 'UTF-8' - } +/***/ }), - return false -} +/***/ 1692: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -/** - * Create a full Content-Type header given a MIME type or extension. - * - * @param {string} str - * @return {boolean|string} - */ +"use strict"; +/* module decorator */ module = __nccwpck_require__.nmd(module); +/*jshint node:true */ +/* globals define */ +/* + The MIT License (MIT) -function contentType (str) { - // TODO: should this even be in this module? - if (!str || typeof str !== 'string') { - return false - } + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. - var mime = str.indexOf('/') === -1 - ? exports.lookup(str) - : str + 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: - if (!mime) { - return false - } + 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. + +*/ - // TODO: use content-type or other module - if (mime.indexOf('charset') === -1) { - var charset = exports.charset(mime) - if (charset) mime += '; charset=' + charset.toLowerCase() - } - return mime -} /** - * Get the default extension for a MIME type. - * - * @param {string} type - * @return {boolean|string} - */ +The following batches are equivalent: -function extension (type) { - if (!type || typeof type !== 'string') { - return false - } +var beautify_js = require('js-beautify'); +var beautify_js = require('js-beautify').js; +var beautify_js = require('js-beautify').js_beautify; - // TODO: use media-typer - var match = EXTRACT_TYPE_REGEXP.exec(type) +var beautify_css = require('js-beautify').css; +var beautify_css = require('js-beautify').css_beautify; - // get extensions - var exts = match && exports.extensions[match[1].toLowerCase()] +var beautify_html = require('js-beautify').html; +var beautify_html = require('js-beautify').html_beautify; - if (!exts || !exts.length) { - return false - } +All methods returned accept two arguments, the source string and an options object. +**/ - return exts[0] -} +function get_beautify(js_beautify, css_beautify, html_beautify) { + // the default is js + var beautify = function(src, config) { + return js_beautify.js_beautify(src, config); + }; -/** - * Lookup the MIME type for a file path/extension. - * - * @param {string} path - * @return {boolean|string} - */ + // short aliases + beautify.js = js_beautify.js_beautify; + beautify.css = css_beautify.css_beautify; + beautify.html = html_beautify.html_beautify; -function lookup (path) { - if (!path || typeof path !== 'string') { - return false - } + // legacy aliases + beautify.js_beautify = js_beautify.js_beautify; + beautify.css_beautify = css_beautify.css_beautify; + beautify.html_beautify = html_beautify.html_beautify; - // get the extension ("ext" or ".ext" or full path) - var extension = extname('x.' + path) - .toLowerCase() - .substr(1) + return beautify; +} - if (!extension) { - return false - } +if (typeof define === "function" && define.amd) { + // Add support for AMD ( https://github.com/amdjs/amdjs-api/wiki/AMD#defineamd-property- ) + define([ + "./lib/beautify", + "./lib/beautify-css", + "./lib/beautify-html" + ], function(js_beautify, css_beautify, html_beautify) { + return get_beautify(js_beautify, css_beautify, html_beautify); + }); +} else { + (function(mod) { + var beautifier = __nccwpck_require__(8964); + beautifier.js_beautify = beautifier.js; + beautifier.css_beautify = beautifier.css; + beautifier.html_beautify = beautifier.html; - return exports.types[extension] || false + mod.exports = get_beautify(beautifier, beautifier, beautifier); + + })(module); } -/** - * Populate the extensions and types maps. - * @private - */ +/***/ }), -function populateMaps (extensions, types) { - // source preference (least -> most) - var preference = ['nginx', 'apache', undefined, 'iana'] +/***/ 7795: +/***/ ((module) => { - Object.keys(db).forEach(function forEachMimeType (type) { - var mime = db[type] - var exts = mime.extensions +"use strict"; +/*jshint node:true */ +/* - if (!exts || !exts.length) { - return - } + The MIT License (MIT) - // mime -> extensions - extensions[type] = exts + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and contributors. - // extension -> mime - for (var i = 0; i < exts.length; i++) { - var extension = exts[i] + 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: - if (types[extension]) { - var from = preference.indexOf(db[types[extension]].source) - var to = preference.indexOf(mime.source) + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. - if (types[extension] !== 'application/octet-stream' && - (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { - // skip the remapping - continue - } - } + 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. +*/ - // set the extension -> mime - types[extension] = type - } - }) + + +function Directives(start_block_pattern, end_block_pattern) { + start_block_pattern = typeof start_block_pattern === 'string' ? start_block_pattern : start_block_pattern.source; + end_block_pattern = typeof end_block_pattern === 'string' ? end_block_pattern : end_block_pattern.source; + this.__directives_block_pattern = new RegExp(start_block_pattern + / beautify( \w+[:]\w+)+ /.source + end_block_pattern, 'g'); + this.__directive_pattern = / (\w+)[:](\w+)/g; + + this.__directives_end_ignore_pattern = new RegExp(start_block_pattern + /\sbeautify\signore:end\s/.source + end_block_pattern, 'g'); } +Directives.prototype.get_directives = function(text) { + if (!text.match(this.__directives_block_pattern)) { + return null; + } + + var directives = {}; + this.__directive_pattern.lastIndex = 0; + var directive_match = this.__directive_pattern.exec(text); + + while (directive_match) { + directives[directive_match[1]] = directive_match[2]; + directive_match = this.__directive_pattern.exec(text); + } + + return directives; +}; + +Directives.prototype.readIgnored = function(input) { + return input.readUntilAfter(this.__directives_end_ignore_pattern); +}; + + +module.exports.t = Directives; + /***/ }), -/***/ 900: +/***/ 2042: /***/ ((module) => { -/** - * Helpers. - */ +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 regexp_has_sticky = RegExp.prototype.hasOwnProperty('sticky'); + +function InputScanner(input_string) { + this.__input = input_string || ''; + this.__input_length = this.__input.length; + this.__position = 0; +} + +InputScanner.prototype.restart = function() { + this.__position = 0; +}; + +InputScanner.prototype.back = function() { + if (this.__position > 0) { + this.__position -= 1; + } +}; + +InputScanner.prototype.hasNext = function() { + return this.__position < this.__input_length; +}; + +InputScanner.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__input.charAt(this.__position); + this.__position += 1; + } + return val; +}; + +InputScanner.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__input_length) { + val = this.__input.charAt(index); + } + return val; +}; + +// This is a JavaScript only helper function (not in python) +// Javascript doesn't have a match method +// and not all implementation support "sticky" flag. +// If they do not support sticky then both this.match() and this.test() method +// must get the match and check the index of the match. +// If sticky is supported and set, this method will use it. +// Otherwise it will check that global is set, and fall back to the slower method. +InputScanner.prototype.__match = function(pattern, index) { + pattern.lastIndex = index; + var pattern_match = pattern.exec(this.__input); + + if (pattern_match && !(regexp_has_sticky && pattern.sticky)) { + if (pattern_match.index !== index) { + pattern_match = null; + } + } + + return pattern_match; +}; + +InputScanner.prototype.test = function(pattern, index) { + index = index || 0; + index += this.__position; + + if (index >= 0 && index < this.__input_length) { + return !!this.__match(pattern, index); + } else { + return false; + } +}; + +InputScanner.prototype.testChar = function(pattern, index) { + // test one character regex match + var val = this.peek(index); + pattern.lastIndex = 0; + return val !== null && pattern.test(val); +}; + +InputScanner.prototype.match = function(pattern) { + var pattern_match = this.__match(pattern, this.__position); + if (pattern_match) { + this.__position += pattern_match[0].length; + } else { + pattern_match = null; + } + return pattern_match; +}; + +InputScanner.prototype.read = function(starting_pattern, until_pattern, until_after) { + var val = ''; + var match; + if (starting_pattern) { + match = this.match(starting_pattern); + if (match) { + val += match[0]; + } + } + if (until_pattern && (match || !starting_pattern)) { + val += this.readUntil(until_pattern, until_after); + } + return val; +}; + +InputScanner.prototype.readUntil = function(pattern, until_after) { + var val = ''; + var match_index = this.__position; + pattern.lastIndex = this.__position; + var pattern_match = pattern.exec(this.__input); + if (pattern_match) { + match_index = pattern_match.index; + if (until_after) { + match_index += pattern_match[0].length; + } + } else { + match_index = this.__input_length; + } + + val = this.__input.substring(this.__position, match_index); + this.__position = match_index; + return val; +}; + +InputScanner.prototype.readUntilAfter = function(pattern) { + return this.readUntil(pattern, true); +}; + +InputScanner.prototype.get_regexp = function(pattern, match_from) { + var result = null; + var flags = 'g'; + if (match_from && regexp_has_sticky) { + flags = 'y'; + } + // strings are converted to regexp + if (typeof pattern === "string" && pattern !== '') { + // result = new RegExp(pattern.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'), flags); + result = new RegExp(pattern, flags); + } else if (pattern) { + result = new RegExp(pattern.source, flags); + } + return result; +}; + +InputScanner.prototype.get_literal_regexp = function(literal_string) { + return RegExp(literal_string.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')); +}; + +/* css beautifier legacy helpers */ +InputScanner.prototype.peekUntilAfter = function(pattern) { + var start = this.__position; + var val = this.readUntilAfter(pattern); + this.__position = start; + return val; +}; + +InputScanner.prototype.lookBack = function(testVal) { + var start = this.__position - 1; + return start >= testVal.length && this.__input.substring(start - testVal.length, start) + .toLowerCase() === testVal; +}; + +module.exports.g = InputScanner; + + +/***/ }), + +/***/ 9977: +/***/ ((module) => { + +"use strict"; +var __webpack_unused_export__; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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. +*/ + + + +function Options(options, merge_child_field) { + this.raw_options = _mergeOpts(options, merge_child_field); + + // Support passing the source text back with no change + this.disabled = this._get_boolean('disabled'); + + this.eol = this._get_characters('eol', 'auto'); + this.end_with_newline = this._get_boolean('end_with_newline'); + this.indent_size = this._get_number('indent_size', 4); + this.indent_char = this._get_characters('indent_char', ' '); + this.indent_level = this._get_number('indent_level'); + + this.preserve_newlines = this._get_boolean('preserve_newlines', true); + this.max_preserve_newlines = this._get_number('max_preserve_newlines', 32786); + if (!this.preserve_newlines) { + this.max_preserve_newlines = 0; + } + + this.indent_with_tabs = this._get_boolean('indent_with_tabs', this.indent_char === '\t'); + if (this.indent_with_tabs) { + this.indent_char = '\t'; + + // indent_size behavior changed after 1.8.6 + // It used to be that indent_size would be + // set to 1 for indent_with_tabs. That is no longer needed and + // actually doesn't make sense - why not use spaces? Further, + // that might produce unexpected behavior - tabs being used + // for single-column alignment. So, when indent_with_tabs is true + // and indent_size is 1, reset indent_size to 4. + if (this.indent_size === 1) { + this.indent_size = 4; + } + } + + // Backwards compat with 1.3.x + this.wrap_line_length = this._get_number('wrap_line_length', this._get_number('max_char')); + + this.indent_empty_lines = this._get_boolean('indent_empty_lines'); + + // valid templating languages ['django', 'erb', 'handlebars', 'php', 'smarty'] + // For now, 'auto' = all off for javascript, all on for html (and inline javascript). + // other values ignored + this.templating = this._get_selection_list('templating', ['auto', 'none', 'django', 'erb', 'handlebars', 'php', 'smarty'], ['auto']); +} + +Options.prototype._get_array = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || []; + if (typeof option_value === 'object') { + if (option_value !== null && typeof option_value.concat === 'function') { + result = option_value.concat(); + } + } else if (typeof option_value === 'string') { + result = option_value.split(/[^a-zA-Z0-9_\/\-]+/); + } + return result; +}; + +Options.prototype._get_boolean = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = option_value === undefined ? !!default_value : !!option_value; + return result; +}; + +Options.prototype._get_characters = function(name, default_value) { + var option_value = this.raw_options[name]; + var result = default_value || ''; + if (typeof option_value === 'string') { + result = option_value.replace(/\\r/, '\r').replace(/\\n/, '\n').replace(/\\t/, '\t'); + } + return result; +}; + +Options.prototype._get_number = function(name, default_value) { + var option_value = this.raw_options[name]; + default_value = parseInt(default_value, 10); + if (isNaN(default_value)) { + default_value = 0; + } + var result = parseInt(option_value, 10); + if (isNaN(result)) { + result = default_value; + } + return result; +}; + +Options.prototype._get_selection = function(name, selection_list, default_value) { + var result = this._get_selection_list(name, selection_list, default_value); + if (result.length !== 1) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can only be one of the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result[0]; +}; + + +Options.prototype._get_selection_list = function(name, selection_list, default_value) { + if (!selection_list || selection_list.length === 0) { + throw new Error("Selection list cannot be empty."); + } + + default_value = default_value || [selection_list[0]]; + if (!this._is_valid_selection(default_value, selection_list)) { + throw new Error("Invalid Default Value!"); + } + + var result = this._get_array(name, default_value); + if (!this._is_valid_selection(result, selection_list)) { + throw new Error( + "Invalid Option Value: The option '" + name + "' can contain only the following values:\n" + + selection_list + "\nYou passed in: '" + this.raw_options[name] + "'"); + } + + return result; +}; + +Options.prototype._is_valid_selection = function(result, selection_list) { + return result.length && selection_list.length && + !result.some(function(item) { return selection_list.indexOf(item) === -1; }); +}; + + +// merges child options up with the parent options object +// Example: obj = {a: 1, b: {a: 2}} +// mergeOpts(obj, 'b') +// +// Returns: {a: 2} +function _mergeOpts(allOptions, childFieldName) { + var finalOpts = {}; + allOptions = _normalizeOpts(allOptions); + var name; + + for (name in allOptions) { + if (name !== childFieldName) { + finalOpts[name] = allOptions[name]; + } + } + + //merge in the per type settings for the childFieldName + if (childFieldName && allOptions[childFieldName]) { + for (name in allOptions[childFieldName]) { + finalOpts[name] = allOptions[childFieldName][name]; + } + } + return finalOpts; +} + +function _normalizeOpts(options) { + var convertedOpts = {}; + var key; + + for (key in options) { + var newKey = key.replace(/-/g, "_"); + convertedOpts[newKey] = options[key]; + } + return convertedOpts; +} + +module.exports.Ei = Options; +__webpack_unused_export__ = _normalizeOpts; +__webpack_unused_export__ = _mergeOpts; + + +/***/ }), + +/***/ 589: +/***/ ((module) => { + +"use strict"; +/*jshint node:true */ +/* + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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. +*/ + + + +function OutputLine(parent) { + this.__parent = parent; + this.__character_count = 0; + // use indent_count as a marker for this.__lines that have preserved indentation + this.__indent_count = -1; + this.__alignment_count = 0; + this.__wrap_point_index = 0; + this.__wrap_point_character_count = 0; + this.__wrap_point_indent_count = -1; + this.__wrap_point_alignment_count = 0; + + this.__items = []; +} + +OutputLine.prototype.clone_empty = function() { + var line = new OutputLine(this.__parent); + line.set_indent(this.__indent_count, this.__alignment_count); + return line; +}; + +OutputLine.prototype.item = function(index) { + if (index < 0) { + return this.__items[this.__items.length + index]; + } else { + return this.__items[index]; + } +}; + +OutputLine.prototype.has_match = function(pattern) { + for (var lastCheckedOutput = this.__items.length - 1; lastCheckedOutput >= 0; lastCheckedOutput--) { + if (this.__items[lastCheckedOutput].match(pattern)) { + return true; + } + } + return false; +}; + +OutputLine.prototype.set_indent = function(indent, alignment) { + if (this.is_empty()) { + this.__indent_count = indent || 0; + this.__alignment_count = alignment || 0; + this.__character_count = this.__parent.get_indent_size(this.__indent_count, this.__alignment_count); + } +}; + +OutputLine.prototype._set_wrap_point = function() { + if (this.__parent.wrap_line_length) { + this.__wrap_point_index = this.__items.length; + this.__wrap_point_character_count = this.__character_count; + this.__wrap_point_indent_count = this.__parent.next_line.__indent_count; + this.__wrap_point_alignment_count = this.__parent.next_line.__alignment_count; + } +}; + +OutputLine.prototype._should_wrap = function() { + return this.__wrap_point_index && + this.__character_count > this.__parent.wrap_line_length && + this.__wrap_point_character_count > this.__parent.next_line.__character_count; +}; + +OutputLine.prototype._allow_wrap = function() { + if (this._should_wrap()) { + this.__parent.add_new_line(); + var next = this.__parent.current_line; + next.set_indent(this.__wrap_point_indent_count, this.__wrap_point_alignment_count); + next.__items = this.__items.slice(this.__wrap_point_index); + this.__items = this.__items.slice(0, this.__wrap_point_index); + + next.__character_count += this.__character_count - this.__wrap_point_character_count; + this.__character_count = this.__wrap_point_character_count; + + if (next.__items[0] === " ") { + next.__items.splice(0, 1); + next.__character_count -= 1; + } + return true; + } + return false; +}; + +OutputLine.prototype.is_empty = function() { + return this.__items.length === 0; +}; + +OutputLine.prototype.last = function() { + if (!this.is_empty()) { + return this.__items[this.__items.length - 1]; + } else { + return null; + } +}; + +OutputLine.prototype.push = function(item) { + this.__items.push(item); + var last_newline_index = item.lastIndexOf('\n'); + if (last_newline_index !== -1) { + this.__character_count = item.length - last_newline_index; + } else { + this.__character_count += item.length; + } +}; + +OutputLine.prototype.pop = function() { + var item = null; + if (!this.is_empty()) { + item = this.__items.pop(); + this.__character_count -= item.length; + } + return item; +}; + + +OutputLine.prototype._remove_indent = function() { + if (this.__indent_count > 0) { + this.__indent_count -= 1; + this.__character_count -= this.__parent.indent_size; + } +}; + +OutputLine.prototype._remove_wrap_indent = function() { + if (this.__wrap_point_indent_count > 0) { + this.__wrap_point_indent_count -= 1; + } +}; +OutputLine.prototype.trim = function() { + while (this.last() === ' ') { + this.__items.pop(); + this.__character_count -= 1; + } +}; + +OutputLine.prototype.toString = function() { + var result = ''; + if (this.is_empty()) { + if (this.__parent.indent_empty_lines) { + result = this.__parent.get_indent_string(this.__indent_count); + } + } else { + result = this.__parent.get_indent_string(this.__indent_count, this.__alignment_count); + result += this.__items.join(''); + } + return result; +}; + +function IndentStringCache(options, baseIndentString) { + this.__cache = ['']; + this.__indent_size = options.indent_size; + this.__indent_string = options.indent_char; + if (!options.indent_with_tabs) { + this.__indent_string = new Array(options.indent_size + 1).join(options.indent_char); + } + + // Set to null to continue support for auto detection of base indent + baseIndentString = baseIndentString || ''; + if (options.indent_level > 0) { + baseIndentString = new Array(options.indent_level + 1).join(this.__indent_string); + } + + this.__base_string = baseIndentString; + this.__base_string_length = baseIndentString.length; +} + +IndentStringCache.prototype.get_indent_size = function(indent, column) { + var result = this.__base_string_length; + column = column || 0; + if (indent < 0) { + result = 0; + } + result += indent * this.__indent_size; + result += column; + return result; +}; + +IndentStringCache.prototype.get_indent_string = function(indent_level, column) { + var result = this.__base_string; + column = column || 0; + if (indent_level < 0) { + indent_level = 0; + result = ''; + } + column += indent_level * this.__indent_size; + this.__ensure_cache(column); + result += this.__cache[column]; + return result; +}; + +IndentStringCache.prototype.__ensure_cache = function(column) { + while (column >= this.__cache.length) { + this.__add_column(); + } +}; + +IndentStringCache.prototype.__add_column = function() { + var column = this.__cache.length; + var indent = 0; + var result = ''; + if (this.__indent_size && column >= this.__indent_size) { + indent = Math.floor(column / this.__indent_size); + column -= indent * this.__indent_size; + result = new Array(indent + 1).join(this.__indent_string); + } + if (column) { + result += new Array(column + 1).join(' '); + } + + this.__cache.push(result); +}; + +function Output(options, baseIndentString) { + this.__indent_cache = new IndentStringCache(options, baseIndentString); + this.raw = false; + this._end_with_newline = options.end_with_newline; + this.indent_size = options.indent_size; + this.wrap_line_length = options.wrap_line_length; + this.indent_empty_lines = options.indent_empty_lines; + this.__lines = []; + this.previous_line = null; + this.current_line = null; + this.next_line = new OutputLine(this); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; + // initialize + this.__add_outputline(); +} + +Output.prototype.__add_outputline = function() { + this.previous_line = this.current_line; + this.current_line = this.next_line.clone_empty(); + this.__lines.push(this.current_line); +}; + +Output.prototype.get_line_number = function() { + return this.__lines.length; +}; + +Output.prototype.get_indent_string = function(indent, column) { + return this.__indent_cache.get_indent_string(indent, column); +}; + +Output.prototype.get_indent_size = function(indent, column) { + return this.__indent_cache.get_indent_size(indent, column); +}; + +Output.prototype.is_empty = function() { + return !this.previous_line && this.current_line.is_empty(); +}; + +Output.prototype.add_new_line = function(force_newline) { + // never newline at the start of file + // otherwise, newline only if we didn't just add one or we're forced + if (this.is_empty() || + (!force_newline && this.just_added_newline())) { + return false; + } + + // if raw output is enabled, don't print additional newlines, + // but still return True as though you had + if (!this.raw) { + this.__add_outputline(); + } + return true; +}; + +Output.prototype.get_code = function(eol) { + this.trim(true); + + // handle some edge cases where the last tokens + // has text that ends with newline(s) + var last_item = this.current_line.pop(); + if (last_item) { + if (last_item[last_item.length - 1] === '\n') { + last_item = last_item.replace(/\n+$/g, ''); + } + this.current_line.push(last_item); + } + + if (this._end_with_newline) { + this.__add_outputline(); + } + + var sweet_code = this.__lines.join('\n'); + + if (eol !== '\n') { + sweet_code = sweet_code.replace(/[\n]/g, eol); + } + return sweet_code; +}; + +Output.prototype.set_wrap_point = function() { + this.current_line._set_wrap_point(); +}; + +Output.prototype.set_indent = function(indent, alignment) { + indent = indent || 0; + alignment = alignment || 0; + + // Next line stores alignment values + this.next_line.set_indent(indent, alignment); + + // Never indent your first output indent at the start of the file + if (this.__lines.length > 1) { + this.current_line.set_indent(indent, alignment); + return true; + } + + this.current_line.set_indent(); + return false; +}; + +Output.prototype.add_raw_token = function(token) { + for (var x = 0; x < token.newlines; x++) { + this.__add_outputline(); + } + this.current_line.set_indent(-1); + this.current_line.push(token.whitespace_before); + this.current_line.push(token.text); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = false; +}; + +Output.prototype.add_token = function(printable_token) { + this.__add_space_before_token(); + this.current_line.push(printable_token); + this.space_before_token = false; + this.non_breaking_space = false; + this.previous_token_wrapped = this.current_line._allow_wrap(); +}; + +Output.prototype.__add_space_before_token = function() { + if (this.space_before_token && !this.just_added_newline()) { + if (!this.non_breaking_space) { + this.set_wrap_point(); + } + this.current_line.push(' '); + } +}; + +Output.prototype.remove_indent = function(index) { + var output_length = this.__lines.length; + while (index < output_length) { + this.__lines[index]._remove_indent(); + index++; + } + this.current_line._remove_wrap_indent(); +}; + +Output.prototype.trim = function(eat_newlines) { + eat_newlines = (eat_newlines === undefined) ? false : eat_newlines; + + this.current_line.trim(); + + while (eat_newlines && this.__lines.length > 1 && + this.current_line.is_empty()) { + this.__lines.pop(); + this.current_line = this.__lines[this.__lines.length - 1]; + this.current_line.trim(); + } + + this.previous_line = this.__lines.length > 1 ? + this.__lines[this.__lines.length - 2] : null; +}; + +Output.prototype.just_added_newline = function() { + return this.current_line.is_empty(); +}; + +Output.prototype.just_added_blankline = function() { + return this.is_empty() || + (this.current_line.is_empty() && this.previous_line.is_empty()); +}; + +Output.prototype.ensure_empty_line_above = function(starts_with, ends_with) { + var index = this.__lines.length - 2; + while (index >= 0) { + var potentialEmptyLine = this.__lines[index]; + if (potentialEmptyLine.is_empty()) { + break; + } else if (potentialEmptyLine.item(0).indexOf(starts_with) !== 0 && + potentialEmptyLine.item(-1) !== ends_with) { + this.__lines.splice(index + 1, 0, new OutputLine(this)); + this.previous_line = this.__lines[this.__lines.length - 2]; + break; + } + index--; + } +}; + +module.exports.r = Output; + + +/***/ }), + +/***/ 2565: +/***/ ((module) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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. +*/ + + + +function Pattern(input_scanner, parent) { + this._input = input_scanner; + this._starting_pattern = null; + this._match_pattern = null; + this._until_pattern = null; + this._until_after = false; + + if (parent) { + this._starting_pattern = this._input.get_regexp(parent._starting_pattern, true); + this._match_pattern = this._input.get_regexp(parent._match_pattern, true); + this._until_pattern = this._input.get_regexp(parent._until_pattern); + this._until_after = parent._until_after; + } +} + +Pattern.prototype.read = function() { + var result = this._input.read(this._starting_pattern); + if (!this._starting_pattern || result) { + result += this._input.read(this._match_pattern, this._until_pattern, this._until_after); + } + return result; +}; + +Pattern.prototype.read_match = function() { + return this._input.match(this._match_pattern); +}; + +Pattern.prototype.until_after = function(pattern) { + var result = this._create(); + result._until_after = true; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; +}; + +Pattern.prototype.until = function(pattern) { + var result = this._create(); + result._until_after = false; + result._until_pattern = this._input.get_regexp(pattern); + result._update(); + return result; +}; + +Pattern.prototype.starting_with = function(pattern) { + var result = this._create(); + result._starting_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; +}; + +Pattern.prototype.matching = function(pattern) { + var result = this._create(); + result._match_pattern = this._input.get_regexp(pattern, true); + result._update(); + return result; +}; + +Pattern.prototype._create = function() { + return new Pattern(this._input, this); +}; + +Pattern.prototype._update = function() {}; + +module.exports.c = Pattern; + + +/***/ }), + +/***/ 4265: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 Pattern = (__nccwpck_require__(2565)/* .Pattern */ .c); + + +var template_names = { + django: false, + erb: false, + handlebars: false, + php: false, + smarty: false +}; + +// This lets templates appear anywhere we would do a readUntil +// The cost is higher but it is pay to play. +function TemplatablePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + this.__template_pattern = null; + this._disabled = Object.assign({}, template_names); + this._excluded = Object.assign({}, template_names); + + if (parent) { + this.__template_pattern = this._input.get_regexp(parent.__template_pattern); + this._excluded = Object.assign(this._excluded, parent._excluded); + this._disabled = Object.assign(this._disabled, parent._disabled); + } + var pattern = new Pattern(input_scanner); + this.__patterns = { + handlebars_comment: pattern.starting_with(/{{!--/).until_after(/--}}/), + handlebars_unescaped: pattern.starting_with(/{{{/).until_after(/}}}/), + handlebars: pattern.starting_with(/{{/).until_after(/}}/), + php: pattern.starting_with(/<\?(?:[= ]|php)/).until_after(/\?>/), + erb: pattern.starting_with(/<%[^%]/).until_after(/[^%]%>/), + // django coflicts with handlebars a bit. + django: pattern.starting_with(/{%/).until_after(/%}/), + django_value: pattern.starting_with(/{{/).until_after(/}}/), + django_comment: pattern.starting_with(/{#/).until_after(/#}/), + smarty: pattern.starting_with(/{(?=[^}{\s\n])/).until_after(/[^\s\n]}/), + smarty_comment: pattern.starting_with(/{\*/).until_after(/\*}/), + smarty_literal: pattern.starting_with(/{literal}/).until_after(/{\/literal}/) + }; +} +TemplatablePattern.prototype = new Pattern(); + +TemplatablePattern.prototype._create = function() { + return new TemplatablePattern(this._input, this); +}; + +TemplatablePattern.prototype._update = function() { + this.__set_templated_pattern(); +}; + +TemplatablePattern.prototype.disable = function(language) { + var result = this._create(); + result._disabled[language] = true; + result._update(); + return result; +}; + +TemplatablePattern.prototype.read_options = function(options) { + var result = this._create(); + for (var language in template_names) { + result._disabled[language] = options.templating.indexOf(language) === -1; + } + result._update(); + return result; +}; + +TemplatablePattern.prototype.exclude = function(language) { + var result = this._create(); + result._excluded[language] = true; + result._update(); + return result; +}; + +TemplatablePattern.prototype.read = function() { + var result = ''; + if (this._match_pattern) { + result = this._input.read(this._starting_pattern); + } else { + result = this._input.read(this._starting_pattern, this.__template_pattern); + } + var next = this._read_template(); + while (next) { + if (this._match_pattern) { + next += this._input.read(this._match_pattern); + } else { + next += this._input.readUntil(this.__template_pattern); + } + result += next; + next = this._read_template(); + } + + if (this._until_after) { + result += this._input.readUntilAfter(this._until_pattern); + } + return result; +}; + +TemplatablePattern.prototype.__set_templated_pattern = function() { + var items = []; + + if (!this._disabled.php) { + items.push(this.__patterns.php._starting_pattern.source); + } + if (!this._disabled.handlebars) { + items.push(this.__patterns.handlebars._starting_pattern.source); + } + if (!this._disabled.erb) { + items.push(this.__patterns.erb._starting_pattern.source); + } + if (!this._disabled.django) { + items.push(this.__patterns.django._starting_pattern.source); + // The starting pattern for django is more complex because it has different + // patterns for value, comment, and other sections + items.push(this.__patterns.django_value._starting_pattern.source); + items.push(this.__patterns.django_comment._starting_pattern.source); + } + if (!this._disabled.smarty) { + items.push(this.__patterns.smarty._starting_pattern.source); + } + + if (this._until_pattern) { + items.push(this._until_pattern.source); + } + this.__template_pattern = this._input.get_regexp('(?:' + items.join('|') + ')'); +}; + +TemplatablePattern.prototype._read_template = function() { + var resulting_string = ''; + var c = this._input.peek(); + if (c === '<') { + var peek1 = this._input.peek(1); + //if we're in a comment, do something special + // We treat all comments as literals, even more than preformatted tags + // we just look for the appropriate close tag + if (!this._disabled.php && !this._excluded.php && peek1 === '?') { + resulting_string = resulting_string || + this.__patterns.php.read(); + } + if (!this._disabled.erb && !this._excluded.erb && peek1 === '%') { + resulting_string = resulting_string || + this.__patterns.erb.read(); + } + } else if (c === '{') { + if (!this._disabled.handlebars && !this._excluded.handlebars) { + resulting_string = resulting_string || + this.__patterns.handlebars_comment.read(); + resulting_string = resulting_string || + this.__patterns.handlebars_unescaped.read(); + resulting_string = resulting_string || + this.__patterns.handlebars.read(); + } + if (!this._disabled.django) { + // django coflicts with handlebars a bit. + if (!this._excluded.django && !this._excluded.handlebars) { + resulting_string = resulting_string || + this.__patterns.django_value.read(); + } + if (!this._excluded.django) { + resulting_string = resulting_string || + this.__patterns.django_comment.read(); + resulting_string = resulting_string || + this.__patterns.django.read(); + } + } + if (!this._disabled.smarty) { + // smarty cannot be enabled with django or handlebars enabled + if (this._disabled.django && this._disabled.handlebars) { + resulting_string = resulting_string || + this.__patterns.smarty_comment.read(); + resulting_string = resulting_string || + this.__patterns.smarty_literal.read(); + resulting_string = resulting_string || + this.__patterns.smarty.read(); + } + } + } + return resulting_string; +}; + + +module.exports.A = TemplatablePattern; + + +/***/ }), + +/***/ 1999: +/***/ ((module) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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. +*/ + + + +function Token(type, text, newlines, whitespace_before) { + this.type = type; + this.text = text; + + // comments_before are + // comments that have a new line before them + // and may or may not have a newline after + // this is a set of comments before + this.comments_before = null; /* inline comment*/ + + + // this.comments_after = new TokenStream(); // no new line before and newline after + this.newlines = newlines || 0; + this.whitespace_before = whitespace_before || ''; + this.parent = null; + this.next = null; + this.previous = null; + this.opened = null; + this.closed = null; + this.directives = null; +} + + +module.exports.W = Token; + + +/***/ }), + +/***/ 8459: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 InputScanner = (__nccwpck_require__(2042)/* .InputScanner */ .g); +var Token = (__nccwpck_require__(1999)/* .Token */ .W); +var TokenStream = (__nccwpck_require__(1364)/* .TokenStream */ .q); +var WhitespacePattern = (__nccwpck_require__(3716)/* .WhitespacePattern */ .d); + +var TOKEN = { + START: 'TK_START', + RAW: 'TK_RAW', + EOF: 'TK_EOF' +}; + +var Tokenizer = function(input_string, options) { + this._input = new InputScanner(input_string); + this._options = options || {}; + this.__tokens = null; + + this._patterns = {}; + this._patterns.whitespace = new WhitespacePattern(this._input); +}; + +Tokenizer.prototype.tokenize = function() { + this._input.restart(); + this.__tokens = new TokenStream(); + + this._reset(); + + var current; + var previous = new Token(TOKEN.START, ''); + var open_token = null; + var open_stack = []; + var comments = new TokenStream(); + + while (previous.type !== TOKEN.EOF) { + current = this._get_next_token(previous, open_token); + while (this._is_comment(current)) { + comments.add(current); + current = this._get_next_token(previous, open_token); + } + + if (!comments.isEmpty()) { + current.comments_before = comments; + comments = new TokenStream(); + } + + current.parent = open_token; + + if (this._is_opening(current)) { + open_stack.push(open_token); + open_token = current; + } else if (open_token && this._is_closing(current, open_token)) { + current.opened = open_token; + open_token.closed = current; + open_token = open_stack.pop(); + current.parent = open_token; + } + + current.previous = previous; + previous.next = current; + + this.__tokens.add(current); + previous = current; + } + + return this.__tokens; +}; + + +Tokenizer.prototype._is_first_token = function() { + return this.__tokens.isEmpty(); +}; + +Tokenizer.prototype._reset = function() {}; + +Tokenizer.prototype._get_next_token = function(previous_token, open_token) { // jshint unused:false + this._readWhitespace(); + var resulting_string = this._input.read(/.+/g); + if (resulting_string) { + return this._create_token(TOKEN.RAW, resulting_string); + } else { + return this._create_token(TOKEN.EOF, ''); + } +}; + +Tokenizer.prototype._is_comment = function(current_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._is_opening = function(current_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._is_closing = function(current_token, open_token) { // jshint unused:false + return false; +}; + +Tokenizer.prototype._create_token = function(type, text) { + var token = new Token(type, text, + this._patterns.whitespace.newline_count, + this._patterns.whitespace.whitespace_before_token); + return token; +}; + +Tokenizer.prototype._readWhitespace = function() { + return this._patterns.whitespace.read(); +}; + + + +module.exports.d = Tokenizer; +module.exports.o = TOKEN; + + +/***/ }), + +/***/ 1364: +/***/ ((module) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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. +*/ + + + +function TokenStream(parent_token) { + // private + this.__tokens = []; + this.__tokens_length = this.__tokens.length; + this.__position = 0; + this.__parent_token = parent_token; +} + +TokenStream.prototype.restart = function() { + this.__position = 0; +}; + +TokenStream.prototype.isEmpty = function() { + return this.__tokens_length === 0; +}; + +TokenStream.prototype.hasNext = function() { + return this.__position < this.__tokens_length; +}; + +TokenStream.prototype.next = function() { + var val = null; + if (this.hasNext()) { + val = this.__tokens[this.__position]; + this.__position += 1; + } + return val; +}; + +TokenStream.prototype.peek = function(index) { + var val = null; + index = index || 0; + index += this.__position; + if (index >= 0 && index < this.__tokens_length) { + val = this.__tokens[index]; + } + return val; +}; + +TokenStream.prototype.add = function(token) { + if (this.__parent_token) { + token.parent = this.__parent_token; + } + this.__tokens.push(token); + this.__tokens_length += 1; +}; + +module.exports.q = TokenStream; + + +/***/ }), + +/***/ 3716: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 Pattern = (__nccwpck_require__(2565)/* .Pattern */ .c); + +function WhitespacePattern(input_scanner, parent) { + Pattern.call(this, input_scanner, parent); + if (parent) { + this._line_regexp = this._input.get_regexp(parent._line_regexp); + } else { + this.__set_whitespace_patterns('', ''); + } + + this.newline_count = 0; + this.whitespace_before_token = ''; +} +WhitespacePattern.prototype = new Pattern(); + +WhitespacePattern.prototype.__set_whitespace_patterns = function(whitespace_chars, newline_chars) { + whitespace_chars += '\\t '; + newline_chars += '\\n\\r'; + + this._match_pattern = this._input.get_regexp( + '[' + whitespace_chars + newline_chars + ']+', true); + this._newline_regexp = this._input.get_regexp( + '\\r\\n|[' + newline_chars + ']'); +}; + +WhitespacePattern.prototype.read = function() { + this.newline_count = 0; + this.whitespace_before_token = ''; + + var resulting_string = this._input.read(this._match_pattern); + if (resulting_string === ' ') { + this.whitespace_before_token = ' '; + } else if (resulting_string) { + var matches = this.__split(this._newline_regexp, resulting_string); + this.newline_count = matches.length - 1; + this.whitespace_before_token = matches[this.newline_count]; + } + + return resulting_string; +}; + +WhitespacePattern.prototype.matching = function(whitespace_chars, newline_chars) { + var result = this._create(); + result.__set_whitespace_patterns(whitespace_chars, newline_chars); + result._update(); + return result; +}; + +WhitespacePattern.prototype._create = function() { + return new WhitespacePattern(this._input, this); +}; + +WhitespacePattern.prototype.__split = function(regexp, input_string) { + regexp.lastIndex = 0; + var start_index = 0; + var result = []; + var next_match = regexp.exec(input_string); + while (next_match) { + result.push(input_string.substring(start_index, next_match.index)); + start_index = next_match.index + next_match[0].length; + next_match = regexp.exec(input_string); + } + + if (start_index < input_string.length) { + result.push(input_string.substring(start_index, input_string.length)); + } else { + result.push(''); + } + + return result; +}; + + + +module.exports.d = WhitespacePattern; + + +/***/ }), + +/***/ 337: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 Options = (__nccwpck_require__(8936)/* .Options */ .E); +var Output = (__nccwpck_require__(589)/* .Output */ .r); +var InputScanner = (__nccwpck_require__(2042)/* .InputScanner */ .g); +var Directives = (__nccwpck_require__(7795)/* .Directives */ .t); + +var directives_core = new Directives(/\/\*/, /\*\//); + +var lineBreak = /\r\n|[\r\n]/; +var allLineBreaks = /\r\n|[\r\n]/g; + +// tokenizer +var whitespaceChar = /\s/; +var whitespacePattern = /(?:\s|\n)+/g; +var block_comment_pattern = /\/\*(?:[\s\S]*?)((?:\*\/)|$)/g; +var comment_pattern = /\/\/(?:[^\n\r\u2028\u2029]*)/g; + +function Beautifier(source_text, options) { + this._source_text = source_text || ''; + // Allow the setting of language/file-type specific options + // with inheritance of overall settings + this._options = new Options(options); + this._ch = null; + this._input = null; + + // https://developer.mozilla.org/en-US/docs/Web/CSS/At-rule + this.NESTED_AT_RULE = { + "@page": true, + "@font-face": true, + "@keyframes": true, + // also in CONDITIONAL_GROUP_RULE below + "@media": true, + "@supports": true, + "@document": true + }; + this.CONDITIONAL_GROUP_RULE = { + "@media": true, + "@supports": true, + "@document": true + }; + this.NON_SEMICOLON_NEWLINE_PROPERTY = [ + "grid-template-areas", + "grid-template" + ]; + +} + +Beautifier.prototype.eatString = function(endChars) { + var result = ''; + this._ch = this._input.next(); + while (this._ch) { + result += this._ch; + if (this._ch === "\\") { + result += this._input.next(); + } else if (endChars.indexOf(this._ch) !== -1 || this._ch === "\n") { + break; + } + this._ch = this._input.next(); + } + return result; +}; + +// Skips any white space in the source text from the current position. +// When allowAtLeastOneNewLine is true, will output new lines for each +// newline character found; if the user has preserve_newlines off, only +// the first newline will be output +Beautifier.prototype.eatWhitespace = function(allowAtLeastOneNewLine) { + var result = whitespaceChar.test(this._input.peek()); + var newline_count = 0; + while (whitespaceChar.test(this._input.peek())) { + this._ch = this._input.next(); + if (allowAtLeastOneNewLine && this._ch === '\n') { + if (newline_count === 0 || newline_count < this._options.max_preserve_newlines) { + newline_count++; + this._output.add_new_line(true); + } + } + } + return result; +}; + +// Nested pseudo-class if we are insideRule +// and the next special character found opens +// a new block +Beautifier.prototype.foundNestedPseudoClass = function() { + var openParen = 0; + var i = 1; + var ch = this._input.peek(i); + while (ch) { + if (ch === "{") { + return true; + } else if (ch === '(') { + // pseudoclasses can contain () + openParen += 1; + } else if (ch === ')') { + if (openParen === 0) { + return false; + } + openParen -= 1; + } else if (ch === ";" || ch === "}") { + return false; + } + i++; + ch = this._input.peek(i); + } + return false; +}; + +Beautifier.prototype.print_string = function(output_string) { + this._output.set_indent(this._indentLevel); + this._output.non_breaking_space = true; + this._output.add_token(output_string); +}; + +Beautifier.prototype.preserveSingleSpace = function(isAfterSpace) { + if (isAfterSpace) { + this._output.space_before_token = true; + } +}; + +Beautifier.prototype.indent = function() { + this._indentLevel++; +}; + +Beautifier.prototype.outdent = function() { + if (this._indentLevel > 0) { + this._indentLevel--; + } +}; + +/*_____________________--------------------_____________________*/ + +Beautifier.prototype.beautify = function() { + if (this._options.disabled) { + return this._source_text; + } + + var source_text = this._source_text; + var eol = this._options.eol; + if (eol === 'auto') { + eol = '\n'; + if (source_text && lineBreak.test(source_text || '')) { + eol = source_text.match(lineBreak)[0]; + } + } + + + // HACK: newline parsing inconsistent. This brute force normalizes the this._input. + source_text = source_text.replace(allLineBreaks, '\n'); + + // reset + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + + this._output = new Output(this._options, baseIndentString); + this._input = new InputScanner(source_text); + this._indentLevel = 0; + this._nestedLevel = 0; + + this._ch = null; + var parenLevel = 0; + + var insideRule = false; + // This is the value side of a property value pair (blue in the following ex) + // label { content: blue } + var insidePropertyValue = false; + var enteringConditionalGroup = false; + var insideAtExtend = false; + var insideAtImport = false; + var insideScssMap = false; + var topCharacter = this._ch; + var insideNonSemiColonValues = false; + var whitespace; + var isAfterSpace; + var previous_ch; + + while (true) { + whitespace = this._input.read(whitespacePattern); + isAfterSpace = whitespace !== ''; + previous_ch = topCharacter; + this._ch = this._input.next(); + if (this._ch === '\\' && this._input.hasNext()) { + this._ch += this._input.next(); + } + topCharacter = this._ch; + + if (!this._ch) { + break; + } else if (this._ch === '/' && this._input.peek() === '*') { + // /* css comment */ + // Always start block comments on a new line. + // This handles scenarios where a block comment immediately + // follows a property definition on the same line or where + // minified code is being beautified. + this._output.add_new_line(); + this._input.back(); + + var comment = this._input.read(block_comment_pattern); + + // Handle ignore directive + var directives = directives_core.get_directives(comment); + if (directives && directives.ignore === 'start') { + comment += directives_core.readIgnored(this._input); + } + + this.print_string(comment); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + + // Block comments are followed by a new line so they don't + // share a line with other properties + this._output.add_new_line(); + } else if (this._ch === '/' && this._input.peek() === '/') { + // // single line comment + // Preserves the space before a comment + // on the same line as a rule + this._output.space_before_token = true; + this._input.back(); + this.print_string(this._input.read(comment_pattern)); + + // Ensures any new lines following the comment are preserved + this.eatWhitespace(true); + } else if (this._ch === '@' || this._ch === '$') { + this.preserveSingleSpace(isAfterSpace); + + // deal with less propery mixins @{...} + if (this._input.peek() === '{') { + this.print_string(this._ch + this.eatString('}')); + } else { + this.print_string(this._ch); + + // strip trailing space, if present, for hash property checks + var variableOrRule = this._input.peekUntilAfter(/[: ,;{}()[\]\/='"]/g); + + if (variableOrRule.match(/[ :]$/)) { + // we have a variable or pseudo-class, add it and insert one space before continuing + variableOrRule = this.eatString(": ").replace(/\s$/, ''); + this.print_string(variableOrRule); + this._output.space_before_token = true; + } + + variableOrRule = variableOrRule.replace(/\s$/, ''); + + if (variableOrRule === 'extend') { + insideAtExtend = true; + } else if (variableOrRule === 'import') { + insideAtImport = true; + } + + // might be a nesting at-rule + if (variableOrRule in this.NESTED_AT_RULE) { + this._nestedLevel += 1; + if (variableOrRule in this.CONDITIONAL_GROUP_RULE) { + enteringConditionalGroup = true; + } + // might be less variable + } else if (!insideRule && parenLevel === 0 && variableOrRule.indexOf(':') !== -1) { + insidePropertyValue = true; + this.indent(); + } + } + } else if (this._ch === '#' && this._input.peek() === '{') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch + this.eatString('}')); + } else if (this._ch === '{') { + if (insidePropertyValue) { + insidePropertyValue = false; + this.outdent(); + } + + // when entering conditional groups, only rulesets are allowed + if (enteringConditionalGroup) { + enteringConditionalGroup = false; + insideRule = (this._indentLevel >= this._nestedLevel); + } else { + // otherwise, declarations are also allowed + insideRule = (this._indentLevel >= this._nestedLevel - 1); + } + if (this._options.newline_between_rules && insideRule) { + if (this._output.previous_line && this._output.previous_line.item(-1) !== '{') { + this._output.ensure_empty_line_above('/', ','); + } + } + + this._output.space_before_token = true; + + // The difference in print_string and indent order is necessary to indent the '{' correctly + if (this._options.brace_style === 'expand') { + this._output.add_new_line(); + this.print_string(this._ch); + this.indent(); + this._output.set_indent(this._indentLevel); + } else { + // inside mixin and first param is object + if (previous_ch === '(') { + this._output.space_before_token = false; + } else if (previous_ch !== ',') { + this.indent(); + } + this.print_string(this._ch); + } + + this.eatWhitespace(true); + this._output.add_new_line(); + } else if (this._ch === '}') { + this.outdent(); + this._output.add_new_line(); + if (previous_ch === '{') { + this._output.trim(true); + } + insideAtImport = false; + insideAtExtend = false; + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + this.print_string(this._ch); + insideRule = false; + if (this._nestedLevel) { + this._nestedLevel--; + } + + this.eatWhitespace(true); + this._output.add_new_line(); + + if (this._options.newline_between_rules && !this._output.just_added_blankline()) { + if (this._input.peek() !== '}') { + this._output.add_new_line(true); + } + } + if (this._input.peek() === ')') { + this._output.trim(true); + if (this._options.brace_style === "expand") { + this._output.add_new_line(true); + } + } + } else if (this._ch === ":") { + + for (var i = 0; i < this.NON_SEMICOLON_NEWLINE_PROPERTY.length; i++) { + if (this._input.lookBack(this.NON_SEMICOLON_NEWLINE_PROPERTY[i])) { + insideNonSemiColonValues = true; + break; + } + } + + if ((insideRule || enteringConditionalGroup) && !(this._input.lookBack("&") || this.foundNestedPseudoClass()) && !this._input.lookBack("(") && !insideAtExtend && parenLevel === 0) { + // 'property: value' delimiter + // which could be in a conditional group query + this.print_string(':'); + if (!insidePropertyValue) { + insidePropertyValue = true; + this._output.space_before_token = true; + this.eatWhitespace(true); + this.indent(); + } + } else { + // sass/less parent reference don't use a space + // sass nested pseudo-class don't use a space + + // preserve space before pseudoclasses/pseudoelements, as it means "in any child" + if (this._input.lookBack(" ")) { + this._output.space_before_token = true; + } + if (this._input.peek() === ":") { + // pseudo-element + this._ch = this._input.next(); + this.print_string("::"); + } else { + // pseudo-class + this.print_string(':'); + } + } + } else if (this._ch === '"' || this._ch === '\'') { + var preserveQuoteSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveQuoteSpace || isAfterSpace); + this.print_string(this._ch + this.eatString(this._ch)); + this.eatWhitespace(true); + } else if (this._ch === ';') { + insideNonSemiColonValues = false; + if (parenLevel === 0) { + if (insidePropertyValue) { + this.outdent(); + insidePropertyValue = false; + } + insideAtExtend = false; + insideAtImport = false; + this.print_string(this._ch); + this.eatWhitespace(true); + + // This maintains single line comments on the same + // line. Block comments are also affected, but + // a new line is always output before one inside + // that section + if (this._input.peek() !== '/') { + this._output.add_new_line(); + } + } else { + this.print_string(this._ch); + this.eatWhitespace(true); + this._output.space_before_token = true; + } + } else if (this._ch === '(') { // may be a url + if (this._input.lookBack("url")) { + this.print_string(this._ch); + this.eatWhitespace(); + parenLevel++; + this.indent(); + this._ch = this._input.next(); + if (this._ch === ')' || this._ch === '"' || this._ch === '\'') { + this._input.back(); + } else if (this._ch) { + this.print_string(this._ch + this.eatString(')')); + if (parenLevel) { + parenLevel--; + this.outdent(); + } + } + } else { + var space_needed = false; + if (this._input.lookBack("with")) { + // look back is not an accurate solution, we need tokens to confirm without whitespaces + space_needed = true; + } + this.preserveSingleSpace(isAfterSpace || space_needed); + this.print_string(this._ch); + + // handle scss/sass map + if (insidePropertyValue && previous_ch === "$" && this._options.selector_separator_newline) { + this._output.add_new_line(); + insideScssMap = true; + } else { + this.eatWhitespace(); + parenLevel++; + this.indent(); + } + } + } else if (this._ch === ')') { + if (parenLevel) { + parenLevel--; + this.outdent(); + } + if (insideScssMap && this._input.peek() === ";" && this._options.selector_separator_newline) { + insideScssMap = false; + this.outdent(); + this._output.add_new_line(); + } + this.print_string(this._ch); + } else if (this._ch === ',') { + this.print_string(this._ch); + this.eatWhitespace(true); + if (this._options.selector_separator_newline && (!insidePropertyValue || insideScssMap) && parenLevel === 0 && !insideAtImport && !insideAtExtend) { + this._output.add_new_line(); + } else { + this._output.space_before_token = true; + } + } else if ((this._ch === '>' || this._ch === '+' || this._ch === '~') && !insidePropertyValue && parenLevel === 0) { + //handle combinator spacing + if (this._options.space_around_combinator) { + this._output.space_before_token = true; + this.print_string(this._ch); + this._output.space_before_token = true; + } else { + this.print_string(this._ch); + this.eatWhitespace(); + // squash extra whitespace + if (this._ch && whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } + } else if (this._ch === ']') { + this.print_string(this._ch); + } else if (this._ch === '[') { + this.preserveSingleSpace(isAfterSpace); + this.print_string(this._ch); + } else if (this._ch === '=') { // no whitespace before or after + this.eatWhitespace(); + this.print_string('='); + if (whitespaceChar.test(this._ch)) { + this._ch = ''; + } + } else if (this._ch === '!' && !this._input.lookBack("\\")) { // !important + this._output.space_before_token = true; + this.print_string(this._ch); + } else { + var preserveAfterSpace = previous_ch === '"' || previous_ch === '\''; + this.preserveSingleSpace(preserveAfterSpace || isAfterSpace); + this.print_string(this._ch); + + if (!this._output.just_added_newline() && this._input.peek() === '\n' && insideNonSemiColonValues) { + this._output.add_new_line(); + } + } + } + + var sweetCode = this._output.get_code(eol); + + return sweetCode; +}; + +module.exports.K = Beautifier; + + +/***/ }), + +/***/ 2405: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 Beautifier = (__nccwpck_require__(337)/* .Beautifier */ .K), + Options = (__nccwpck_require__(8936)/* .Options */ .E); + +function css_beautify(source_text, options) { + var beautifier = new Beautifier(source_text, options); + return beautifier.beautify(); +} + +module.exports = css_beautify; +module.exports.defaultOptions = function() { + return new Options(); +}; + + +/***/ }), + +/***/ 8936: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 BaseOptions = (__nccwpck_require__(9977)/* .Options */ .Ei); + +function Options(options) { + BaseOptions.call(this, options, 'css'); + + this.selector_separator_newline = this._get_boolean('selector_separator_newline', true); + this.newline_between_rules = this._get_boolean('newline_between_rules', true); + var space_around_selector_separator = this._get_boolean('space_around_selector_separator'); + this.space_around_combinator = this._get_boolean('space_around_combinator') || space_around_selector_separator; + + var brace_style_split = this._get_selection_list('brace_style', ['collapse', 'expand', 'end-expand', 'none', 'preserve-inline']); + this.brace_style = 'collapse'; + for (var bs = 0; bs < brace_style_split.length; bs++) { + if (brace_style_split[bs] !== 'expand') { + // default to collapse, as only collapse|expand is implemented for now + this.brace_style = 'collapse'; + } else { + this.brace_style = brace_style_split[bs]; + } + } +} +Options.prototype = new BaseOptions(); + + + +module.exports.E = Options; + + +/***/ }), + +/***/ 351: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +"use strict"; +/*jshint node:true */ +/* + + The MIT License (MIT) + + Copyright (c) 2007-2018 Einar Lielmanis, Liam Newman, and 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 Options = (__nccwpck_require__(3098)/* .Options */ .E); +var Output = (__nccwpck_require__(589)/* .Output */ .r); +var Tokenizer = (__nccwpck_require__(4077)/* .Tokenizer */ .d); +var TOKEN = (__nccwpck_require__(4077)/* .TOKEN */ .o); + +var lineBreak = /\r\n|[\r\n]/; +var allLineBreaks = /\r\n|[\r\n]/g; + +var Printer = function(options, base_indent_string) { //handles input/output and some other printing functions + + this.indent_level = 0; + this.alignment_size = 0; + this.max_preserve_newlines = options.max_preserve_newlines; + this.preserve_newlines = options.preserve_newlines; + + this._output = new Output(options, base_indent_string); + +}; + +Printer.prototype.current_line_has_match = function(pattern) { + return this._output.current_line.has_match(pattern); +}; + +Printer.prototype.set_space_before_token = function(value, non_breaking) { + this._output.space_before_token = value; + this._output.non_breaking_space = non_breaking; +}; + +Printer.prototype.set_wrap_point = function() { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.set_wrap_point(); +}; + + +Printer.prototype.add_raw_token = function(token) { + this._output.add_raw_token(token); +}; + +Printer.prototype.print_preserved_newlines = function(raw_token) { + var newlines = 0; + if (raw_token.type !== TOKEN.TEXT && raw_token.previous.type !== TOKEN.TEXT) { + newlines = raw_token.newlines ? 1 : 0; + } + + if (this.preserve_newlines) { + newlines = raw_token.newlines < this.max_preserve_newlines + 1 ? raw_token.newlines : this.max_preserve_newlines + 1; + } + for (var n = 0; n < newlines; n++) { + this.print_newline(n > 0); + } + + return newlines !== 0; +}; + +Printer.prototype.traverse_whitespace = function(raw_token) { + if (raw_token.whitespace_before || raw_token.newlines) { + if (!this.print_preserved_newlines(raw_token)) { + this._output.space_before_token = true; + } + return true; + } + return false; +}; + +Printer.prototype.previous_token_wrapped = function() { + return this._output.previous_token_wrapped; +}; + +Printer.prototype.print_newline = function(force) { + this._output.add_new_line(force); +}; + +Printer.prototype.print_token = function(token) { + if (token.text) { + this._output.set_indent(this.indent_level, this.alignment_size); + this._output.add_token(token.text); + } +}; + +Printer.prototype.indent = function() { + this.indent_level++; +}; + +Printer.prototype.get_full_indent = function(level) { + level = this.indent_level + (level || 0); + if (level < 1) { + return ''; + } + + return this._output.get_indent_string(level); +}; + +var get_type_attribute = function(start_token) { + var result = null; + var raw_token = start_token.next; + + // Search attributes for a type attribute + while (raw_token.type !== TOKEN.EOF && start_token.closed !== raw_token) { + if (raw_token.type === TOKEN.ATTRIBUTE && raw_token.text === 'type') { + if (raw_token.next && raw_token.next.type === TOKEN.EQUALS && + raw_token.next.next && raw_token.next.next.type === TOKEN.VALUE) { + result = raw_token.next.next.text; + } + break; + } + raw_token = raw_token.next; + } + + return result; +}; + +var get_custom_beautifier_name = function(tag_check, raw_token) { + var typeAttribute = null; + var result = null; + + if (!raw_token.closed) { + return null; + } + + if (tag_check === 'script') { + typeAttribute = 'text/javascript'; + } else if (tag_check === 'style') { + typeAttribute = 'text/css'; + } + + typeAttribute = get_type_attribute(raw_token) || typeAttribute; + + // For script and style tags that have a type attribute, only enable custom beautifiers for matching values + // For those without a type attribute use default; + if (typeAttribute.search('text/css') > -1) { + result = 'css'; + } else if (typeAttribute.search(/module|((text|application|dojo)\/(x-)?(javascript|ecmascript|jscript|livescript|(ld\+)?json|method|aspect))/) > -1) { + result = 'javascript'; + } else if (typeAttribute.search(/(text|application|dojo)\/(x-)?(html)/) > -1) { + result = 'html'; + } else if (typeAttribute.search(/test\/null/) > -1) { + // Test only mime-type for testing the beautifier when null is passed as beautifing function + result = 'null'; + } + + return result; +}; + +function in_array(what, arr) { + return arr.indexOf(what) !== -1; +} + +function TagFrame(parent, parser_token, indent_level) { + this.parent = parent || null; + this.tag = parser_token ? parser_token.tag_name : ''; + this.indent_level = indent_level || 0; + this.parser_token = parser_token || null; +} + +function TagStack(printer) { + this._printer = printer; + this._current_frame = null; +} + +TagStack.prototype.get_parser_token = function() { + return this._current_frame ? this._current_frame.parser_token : null; +}; + +TagStack.prototype.record_tag = function(parser_token) { //function to record a tag and its parent in this.tags Object + var new_frame = new TagFrame(this._current_frame, parser_token, this._printer.indent_level); + this._current_frame = new_frame; +}; + +TagStack.prototype._try_pop_frame = function(frame) { //function to retrieve the opening tag to the corresponding closer + var parser_token = null; + + if (frame) { + parser_token = frame.parser_token; + this._printer.indent_level = frame.indent_level; + this._current_frame = frame.parent; + } + + return parser_token; +}; + +TagStack.prototype._get_frame = function(tag_list, stop_list) { //function to retrieve the opening tag to the corresponding closer + var frame = this._current_frame; + + while (frame) { //till we reach '' (the initial value); + if (tag_list.indexOf(frame.tag) !== -1) { //if this is it use it + break; + } else if (stop_list && stop_list.indexOf(frame.tag) !== -1) { + frame = null; + break; + } + frame = frame.parent; + } + + return frame; +}; + +TagStack.prototype.try_pop = function(tag, stop_list) { //function to retrieve the opening tag to the corresponding closer + var frame = this._get_frame([tag], stop_list); + return this._try_pop_frame(frame); +}; + +TagStack.prototype.indent_to_tag = function(tag_list) { + var frame = this._get_frame(tag_list); + if (frame) { + this._printer.indent_level = frame.indent_level; + } +}; + +function Beautifier(source_text, options, js_beautify, css_beautify) { + //Wrapper function to invoke all the necessary constructors and deal with the output. + this._source_text = source_text || ''; + options = options || {}; + this._js_beautify = js_beautify; + this._css_beautify = css_beautify; + this._tag_stack = null; + + // Allow the setting of language/file-type specific options + // with inheritance of overall settings + var optionHtml = new Options(options, 'html'); + + this._options = optionHtml; + + this._is_wrap_attributes_force = this._options.wrap_attributes.substr(0, 'force'.length) === 'force'; + this._is_wrap_attributes_force_expand_multiline = (this._options.wrap_attributes === 'force-expand-multiline'); + this._is_wrap_attributes_force_aligned = (this._options.wrap_attributes === 'force-aligned'); + this._is_wrap_attributes_aligned_multiple = (this._options.wrap_attributes === 'aligned-multiple'); + this._is_wrap_attributes_preserve = this._options.wrap_attributes.substr(0, 'preserve'.length) === 'preserve'; + this._is_wrap_attributes_preserve_aligned = (this._options.wrap_attributes === 'preserve-aligned'); +} + +Beautifier.prototype.beautify = function() { + + // if disabled, return the input unchanged. + if (this._options.disabled) { + return this._source_text; + } + + var source_text = this._source_text; + var eol = this._options.eol; + if (this._options.eol === 'auto') { + eol = '\n'; + if (source_text && lineBreak.test(source_text)) { + eol = source_text.match(lineBreak)[0]; + } + } + + // HACK: newline parsing inconsistent. This brute force normalizes the input. + source_text = source_text.replace(allLineBreaks, '\n'); + + var baseIndentString = source_text.match(/^[\t ]*/)[0]; + + var last_token = { + text: '', + type: '' + }; + + var last_tag_token = new TagOpenParserToken(); + + var printer = new Printer(this._options, baseIndentString); + var tokens = new Tokenizer(source_text, this._options).tokenize(); + + this._tag_stack = new TagStack(printer); + + var parser_token = null; + var raw_token = tokens.next(); + while (raw_token.type !== TOKEN.EOF) { + + if (raw_token.type === TOKEN.TAG_OPEN || raw_token.type === TOKEN.COMMENT) { + parser_token = this._handle_tag_open(printer, raw_token, last_tag_token, last_token); + last_tag_token = parser_token; + } else if ((raw_token.type === TOKEN.ATTRIBUTE || raw_token.type === TOKEN.EQUALS || raw_token.type === TOKEN.VALUE) || + (raw_token.type === TOKEN.TEXT && !last_tag_token.tag_complete)) { + parser_token = this._handle_inside_tag(printer, raw_token, last_tag_token, tokens); + } else if (raw_token.type === TOKEN.TAG_CLOSE) { + parser_token = this._handle_tag_close(printer, raw_token, last_tag_token); + } else if (raw_token.type === TOKEN.TEXT) { + parser_token = this._handle_text(printer, raw_token, last_tag_token); + } else { + // This should never happen, but if it does. Print the raw token + printer.add_raw_token(raw_token); + } + + last_token = parser_token; + + raw_token = tokens.next(); + } + var sweet_code = printer._output.get_code(eol); + + return sweet_code; +}; + +Beautifier.prototype._handle_tag_close = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + printer.alignment_size = 0; + last_tag_token.tag_complete = true; + + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else { + if (last_tag_token.tag_start_char === '<') { + printer.set_space_before_token(raw_token.text[0] === '/', true); // space before />, no space before > + if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.has_wrapped_attrs) { + printer.print_newline(false); + } + } + printer.print_token(raw_token); + + } + + if (last_tag_token.indent_content && + !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.indent(); + + // only indent once per opened tag + last_tag_token.indent_content = false; + } + + if (!last_tag_token.is_inline_element && + !(last_tag_token.is_unformatted || last_tag_token.is_content_unformatted)) { + printer.set_wrap_point(); + } + + return parser_token; +}; + +Beautifier.prototype._handle_inside_tag = function(printer, raw_token, last_tag_token, tokens) { + var wrapped = last_tag_token.has_wrapped_attrs; + var parser_token = { + text: raw_token.text, + type: raw_token.type + }; + + printer.set_space_before_token(raw_token.newlines || raw_token.whitespace_before !== '', true); + if (last_tag_token.is_unformatted) { + printer.add_raw_token(raw_token); + } else if (last_tag_token.tag_start_char === '{' && raw_token.type === TOKEN.TEXT) { + // For the insides of handlebars allow newlines or a single space between open and contents + if (printer.print_preserved_newlines(raw_token)) { + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + } else { + printer.print_token(raw_token); + } + } else { + if (raw_token.type === TOKEN.ATTRIBUTE) { + printer.set_space_before_token(true); + last_tag_token.attr_count += 1; + } else if (raw_token.type === TOKEN.EQUALS) { //no space before = + printer.set_space_before_token(false); + } else if (raw_token.type === TOKEN.VALUE && raw_token.previous.type === TOKEN.EQUALS) { //no space before value + printer.set_space_before_token(false); + } + + if (raw_token.type === TOKEN.ATTRIBUTE && last_tag_token.tag_start_char === '<') { + if (this._is_wrap_attributes_preserve || this._is_wrap_attributes_preserve_aligned) { + printer.traverse_whitespace(raw_token); + wrapped = wrapped || raw_token.newlines !== 0; + } + + + if (this._is_wrap_attributes_force) { + var force_attr_wrap = last_tag_token.attr_count > 1; + if (this._is_wrap_attributes_force_expand_multiline && last_tag_token.attr_count === 1) { + var is_only_attribute = true; + var peek_index = 0; + var peek_token; + do { + peek_token = tokens.peek(peek_index); + if (peek_token.type === TOKEN.ATTRIBUTE) { + is_only_attribute = false; + break; + } + peek_index += 1; + } while (peek_index < 4 && peek_token.type !== TOKEN.EOF && peek_token.type !== TOKEN.TAG_CLOSE); + + force_attr_wrap = !is_only_attribute; + } + + if (force_attr_wrap) { + printer.print_newline(false); + wrapped = true; + } + } + } + printer.print_token(raw_token); + wrapped = wrapped || printer.previous_token_wrapped(); + last_tag_token.has_wrapped_attrs = wrapped; + } + return parser_token; +}; + +Beautifier.prototype._handle_text = function(printer, raw_token, last_tag_token) { + var parser_token = { + text: raw_token.text, + type: 'TK_CONTENT' + }; + if (last_tag_token.custom_beautifier_name) { //check if we need to format javascript + this._print_custom_beatifier_text(printer, raw_token, last_tag_token); + } else if (last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) { + printer.add_raw_token(raw_token); + } else { + printer.traverse_whitespace(raw_token); + printer.print_token(raw_token); + } + return parser_token; +}; + +Beautifier.prototype._print_custom_beatifier_text = function(printer, raw_token, last_tag_token) { + var local = this; + if (raw_token.text !== '') { + + var text = raw_token.text, + _beautifier, + script_indent_level = 1, + pre = '', + post = ''; + if (last_tag_token.custom_beautifier_name === 'javascript' && typeof this._js_beautify === 'function') { + _beautifier = this._js_beautify; + } else if (last_tag_token.custom_beautifier_name === 'css' && typeof this._css_beautify === 'function') { + _beautifier = this._css_beautify; + } else if (last_tag_token.custom_beautifier_name === 'html') { + _beautifier = function(html_source, options) { + var beautifier = new Beautifier(html_source, options, local._js_beautify, local._css_beautify); + return beautifier.beautify(); + }; + } + + if (this._options.indent_scripts === "keep") { + script_indent_level = 0; + } else if (this._options.indent_scripts === "separate") { + script_indent_level = -printer.indent_level; + } + + var indentation = printer.get_full_indent(script_indent_level); + + // if there is at least one empty line at the end of this text, strip it + // we'll be adding one back after the text but before the containing tag. + text = text.replace(/\n[ \t]*$/, ''); + + // Handle the case where content is wrapped in a comment or cdata. + if (last_tag_token.custom_beautifier_name !== 'html' && + text[0] === '<' && text.match(/^(|]]>)$/.exec(text); + + // if we start to wrap but don't finish, print raw + if (!matched) { + printer.add_raw_token(raw_token); + return; + } + + pre = indentation + matched[1] + '\n'; + text = matched[4]; + if (matched[5]) { + post = indentation + matched[5]; + } + + // if there is at least one empty line at the end of this text, strip it + // we'll be adding one back after the text but before the containing tag. + text = text.replace(/\n[ \t]*$/, ''); + + if (matched[2] || matched[3].indexOf('\n') !== -1) { + // if the first line of the non-comment text has spaces + // use that as the basis for indenting in null case. + matched = matched[3].match(/[ \t]+$/); + if (matched) { + raw_token.whitespace_before = matched[0]; + } + } + } + + if (text) { + if (_beautifier) { + + // call the Beautifier if avaliable + var Child_options = function() { + this.eol = '\n'; + }; + Child_options.prototype = this._options.raw_options; + var child_options = new Child_options(); + text = _beautifier(indentation + text, child_options); + } else { + // simply indent the string otherwise + var white = raw_token.whitespace_before; + if (white) { + text = text.replace(new RegExp('\n(' + white + ')?', 'g'), '\n'); + } + + text = indentation + text.replace(/\n/g, '\n' + indentation); + } + } + + if (pre) { + if (!text) { + text = pre + post; + } else { + text = pre + text + '\n' + post; + } + } + + printer.print_newline(false); + if (text) { + raw_token.text = text; + raw_token.whitespace_before = ''; + raw_token.newlines = 0; + printer.add_raw_token(raw_token); + printer.print_newline(true); + } + } +}; + +Beautifier.prototype._handle_tag_open = function(printer, raw_token, last_tag_token, last_token) { + var parser_token = this._get_tag_open_token(raw_token); + + if ((last_tag_token.is_unformatted || last_tag_token.is_content_unformatted) && + !last_tag_token.is_empty_element && + raw_token.type === TOKEN.TAG_OPEN && raw_token.text.indexOf(']*)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ''; + } else { + tag_check_match = raw_token.text.match(/^{{~?(?:[\^]|#\*?)?([^\s}]+)/); + this.tag_check = tag_check_match ? tag_check_match[1] : ''; + + // handle "{{#> myPartial}}" or "{{~#> myPartial}}" + if ((raw_token.text.startsWith('{{#>') || raw_token.text.startsWith('{{~#>')) && this.tag_check[0] === '>') { + if (this.tag_check === '>' && raw_token.next !== null) { + this.tag_check = raw_token.next.text.split(' ')[0]; + } else { + this.tag_check = raw_token.text.split('>')[1]; + } + } + } + + this.tag_check = this.tag_check.toLowerCase(); + + if (raw_token.type === TOKEN.COMMENT) { + this.tag_complete = true; + } + + this.is_start_tag = this.tag_check.charAt(0) !== '/'; + this.tag_name = !this.is_start_tag ? this.tag_check.substr(1) : this.tag_check; + this.is_end_tag = !this.is_start_tag || + (raw_token.closed && raw_token.closed.text === '/>'); + + // if whitespace handler ~ included (i.e. {{~#if true}}), handlebars tags start at pos 3 not pos 2 + var handlebar_starts = 2; + if (this.tag_start_char === '{' && this.text.length >= 3) { + if (this.text.charAt(2) === '~') { + handlebar_starts = 3; + } + } + + // handlebars tags that don't start with # or ^ are single_tags, and so also start and end. + this.is_end_tag = this.is_end_tag || + (this.tag_start_char === '{' && (this.text.length < 3 || (/[^#\^]/.test(this.text.charAt(handlebar_starts))))); + } +}; + +Beautifier.prototype._get_tag_open_token = function(raw_token) { //function to get a full tag and parse its type + var parser_token = new TagOpenParserToken(this._tag_stack.get_parser_token(), raw_token); + + parser_token.alignment_size = this._options.wrap_attributes_indent_size; + + parser_token.is_end_tag = parser_token.is_end_tag || + in_array(parser_token.tag_check, this._options.void_elements); + + parser_token.is_empty_element = parser_token.tag_complete || + (parser_token.is_start_tag && parser_token.is_end_tag); + + parser_token.is_unformatted = !parser_token.tag_complete && in_array(parser_token.tag_check, this._options.unformatted); + parser_token.is_content_unformatted = !parser_token.is_empty_element && in_array(parser_token.tag_check, this._options.content_unformatted); + parser_token.is_inline_element = in_array(parser_token.tag_name, this._options.inline) || parser_token.tag_name.includes("-") || parser_token.tag_start_char === '{'; + + return parser_token; +}; + +Beautifier.prototype._set_tag_position = function(printer, raw_token, parser_token, last_tag_token, last_token) { + + if (!parser_token.is_empty_element) { + if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending + parser_token.start_tag_token = this._tag_stack.try_pop(parser_token.tag_name); //remove it and all ancestors + } else { // it's a start-tag + // check if this tag is starting an element that has optional end element + // and do an ending needed + if (this._do_optional_end_element(parser_token)) { + if (!parser_token.is_inline_element) { + printer.print_newline(false); + } + } + + this._tag_stack.record_tag(parser_token); //push it on the tag stack + + if ((parser_token.tag_name === 'script' || parser_token.tag_name === 'style') && + !(parser_token.is_unformatted || parser_token.is_content_unformatted)) { + parser_token.custom_beautifier_name = get_custom_beautifier_name(parser_token.tag_check, raw_token); + } + } + } + + if (in_array(parser_token.tag_check, this._options.extra_liners)) { //check if this double needs an extra line + printer.print_newline(false); + if (!printer._output.just_added_blankline()) { + printer.print_newline(true); + } + } + + if (parser_token.is_empty_element) { //if this tag name is a single tag type (either in the list or has a closing /) + + // if you hit an else case, reset the indent level if you are inside an: + // 'if', 'unless', or 'each' block. + if (parser_token.tag_start_char === '{' && parser_token.tag_check === 'else') { + this._tag_stack.indent_to_tag(['if', 'unless', 'each']); + parser_token.indent_content = true; + // Don't add a newline if opening {{#if}} tag is on the current line + var foundIfOnCurrentLine = printer.current_line_has_match(/{{#if/); + if (!foundIfOnCurrentLine) { + printer.print_newline(false); + } + } + + // Don't add a newline before elements that should remain where they are. + if (parser_token.tag_name === '!--' && last_token.type === TOKEN.TAG_CLOSE && + last_tag_token.is_end_tag && parser_token.text.indexOf('\n') === -1) { + //Do nothing. Leave comments on same line. + } else { + if (!(parser_token.is_inline_element || parser_token.is_unformatted)) { + printer.print_newline(false); + } + this._calcluate_parent_multiline(printer, parser_token); + } + } else if (parser_token.is_end_tag) { //this tag is a double tag so check for tag-ending + var do_end_expand = false; + + // deciding whether a block is multiline should not be this hard + do_end_expand = parser_token.start_tag_token && parser_token.start_tag_token.multiline_content; + do_end_expand = do_end_expand || (!parser_token.is_inline_element && + !(last_tag_token.is_inline_element || last_tag_token.is_unformatted) && + !(last_token.type === TOKEN.TAG_CLOSE && parser_token.start_tag_token === last_tag_token) && + last_token.type !== 'TK_CONTENT' + ); + + if (parser_token.is_content_unformatted || parser_token.is_unformatted) { + do_end_expand = false; + } + + if (do_end_expand) { + printer.print_newline(false); + } + } else { // it's a start-tag + parser_token.indent_content = !parser_token.custom_beautifier_name; + + if (parser_token.tag_start_char === '<') { + if (parser_token.tag_name === 'html') { + parser_token.indent_content = this._options.indent_inner_html; + } else if (parser_token.tag_name === 'head') { + parser_token.indent_content = this._options.indent_head_inner_html; + } else if (parser_token.tag_name === 'body') { + parser_token.indent_content = this._options.indent_body_inner_html; + } + } + + if (!(parser_token.is_inline_element || parser_token.is_unformatted) && + (last_token.type !== 'TK_CONTENT' || parser_token.is_content_unformatted)) { + printer.print_newline(false); + } + + this._calcluate_parent_multiline(printer, parser_token); + } +}; + +Beautifier.prototype._calcluate_parent_multiline = function(printer, parser_token) { + if (parser_token.parent && printer._output.just_added_newline() && + !((parser_token.is_inline_element || parser_token.is_unformatted) && parser_token.parent.is_inline_element)) { + parser_token.parent.multiline_content = true; + } +}; + +//To be used for

tag special case: +var p_closers = ['address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul']; +var p_parent_excludes = ['a', 'audio', 'del', 'ins', 'map', 'noscript', 'video']; + +Beautifier.prototype._do_optional_end_element = function(parser_token) { + var result = null; + // NOTE: cases of "if there is no more content in the parent element" + // are handled automatically by the beautifier. + // It assumes parent or ancestor close tag closes all children. + // https://www.w3.org/TR/html5/syntax.html#optional-tags + if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) { + return; + + } + + if (parser_token.tag_name === 'body') { + // A head element’s end tag may be omitted if the head element is not immediately followed by a space character or a comment. + result = result || this._tag_stack.try_pop('head'); + + //} else if (parser_token.tag_name === 'body') { + // DONE: A body element’s end tag may be omitted if the body element is not immediately followed by a comment. + + } else if (parser_token.tag_name === 'li') { + // An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element. + result = result || this._tag_stack.try_pop('li', ['ol', 'ul']); + + } else if (parser_token.tag_name === 'dd' || parser_token.tag_name === 'dt') { + // A dd element’s end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element. + // A dt element’s end tag may be omitted if the dt element is immediately followed by another dt element or a dd element. + result = result || this._tag_stack.try_pop('dt', ['dl']); + result = result || this._tag_stack.try_pop('dd', ['dl']); + + + } else if (parser_token.parent.tag_name === 'p' && p_closers.indexOf(parser_token.tag_name) !== -1) { + // IMPORTANT: this else-if works because p_closers has no overlap with any other element we look for in this method + // check for the parent element is an HTML element that is not an ,

tag special case:\nvar p_closers = ['address', 'article', 'aside', 'blockquote', 'details', 'div', 'dl', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hr', 'main', 'nav', 'ol', 'p', 'pre', 'section', 'table', 'ul'];\nvar p_parent_excludes = ['a', 'audio', 'del', 'ins', 'map', 'noscript', 'video'];\n\nBeautifier.prototype._do_optional_end_element = function(parser_token) {\n var result = null;\n // NOTE: cases of \"if there is no more content in the parent element\"\n // are handled automatically by the beautifier.\n // It assumes parent or ancestor close tag closes all children.\n // https://www.w3.org/TR/html5/syntax.html#optional-tags\n if (parser_token.is_empty_element || !parser_token.is_start_tag || !parser_token.parent) {\n return;\n\n }\n\n if (parser_token.tag_name === 'body') {\n // A head element’s end tag may be omitted if the head element is not immediately followed by a space character or a comment.\n result = result || this._tag_stack.try_pop('head');\n\n //} else if (parser_token.tag_name === 'body') {\n // DONE: A body element’s end tag may be omitted if the body element is not immediately followed by a comment.\n\n } else if (parser_token.tag_name === 'li') {\n // An li element’s end tag may be omitted if the li element is immediately followed by another li element or if there is no more content in the parent element.\n result = result || this._tag_stack.try_pop('li', ['ol', 'ul']);\n\n } else if (parser_token.tag_name === 'dd' || parser_token.tag_name === 'dt') {\n // A dd element’s end tag may be omitted if the dd element is immediately followed by another dd element or a dt element, or if there is no more content in the parent element.\n // A dt element’s end tag may be omitted if the dt element is immediately followed by another dt element or a dd element.\n result = result || this._tag_stack.try_pop('dt', ['dl']);\n result = result || this._tag_stack.try_pop('dd', ['dl']);\n\n\n } else if (parser_token.parent.tag_name === 'p' && p_closers.indexOf(parser_token.tag_name) !== -1) {\n // IMPORTANT: this else-if works because p_closers has no overlap with any other element we look for in this method\n // check for the parent element is an HTML element that is not an ,