Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

properties-file

Package Overview
Dependencies
Maintainers
1
Versions
109
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

properties-file - npm Package Compare versions

Comparing version 3.3.3 to 3.3.4

48

lib/editor/index.js

@@ -1,8 +0,10 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PropertiesEditor=exports.DEFAULT_SEPARATOR=exports.DEFAULT_COMMENT_DELIMITER=void 0;var _escape=require("../escape"),_properties=require("../properties");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _toConsumableArray(a){return _arrayWithoutHoles(a)||_iterableToArray(a)||_unsupportedIterableToArray(a)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _iterableToArray(a){if("undefined"!=typeof Symbol&&null!=a[Symbol.iterator]||null!=a["@@iterator"])return Array.from(a)}function _arrayWithoutHoles(a){if(Array.isArray(a))return _arrayLikeToArray(a)}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/** The default separator between keys and values. */var DEFAULT_SEPARATOR=exports.DEFAULT_SEPARATOR="=",DEFAULT_COMMENT_DELIMITER=exports.DEFAULT_COMMENT_DELIMITER="#",PropertiesEditor=exports.PropertiesEditor=/*#__PURE__*/function(a){/**
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PropertiesEditor=exports.DEFAULT_SEPARATOR=exports.DEFAULT_COMMENT_DELIMITER=void 0;var _escape=require("../escape"),_properties=require("../properties");/** The default separator between keys and values. */const DEFAULT_SEPARATOR=exports.DEFAULT_SEPARATOR="=",DEFAULT_COMMENT_DELIMITER=exports.DEFAULT_COMMENT_DELIMITER="#";/** The default character used as comment delimiter. */ /** Characters that can be used as key-value pair separators. */ /** Characters that can be used as comment delimiters. */ /** Options on the `Properties.insert` method. */ /** Options on the `Properties.insertComment` method. */ /** Options on the `Properties.update` method. */ /** Options on the `Properties.upsert` method. */ /**
* A .properties file editor.
*/class PropertiesEditor extends _properties.Properties{/** Is line parsing required to re-async the object's properties? */needsLineParsing=!1;/**
* Create `PropertiesEditor` object.
*
* @param content - The content of a `.properties` file.
*/function b(a){var d;return _classCallCheck(this,b),d=c.call(this,a),_defineProperty(_assertThisInitialized(d),"needsLineParsing",!1),d}/**
*/constructor(a){super(a)}/**
* Parse the `.properties` content line by line only when needed.
*/_inherits(b,a);var c=_createSuper(b);return _createClass(b,[{key:"parseLinesIfNeeded",value:function parseLinesIfNeeded(){this.needsLineParsing&&(this.parseLines(),this.needsLineParsing=!1)}/**
*/parseLinesIfNeeded(){this.needsLineParsing&&(this.parseLines(),this.needsLineParsing=!1)}/**
* Insert a new property in the existing object (by default it will be at the end).

@@ -15,8 +17,8 @@ *

* @returns True if the key was inserted, otherwise false.
*/},{key:"insert",value:function insert(a,b,c){var d=(null===c||void 0===c?void 0:c.escapeUnicode)||!1,e=null!==c&&void 0!==c&&c.separator?" "===c.separator?" ":" ".concat(c.separator," "):" ".concat(DEFAULT_SEPARATOR," ").replace(" "," "),f=null===c||void 0===c?void 0:c.referenceKey,g=(null===c||void 0===c?void 0:c.position)||"after";f&&this.parseLinesIfNeeded();// Allow multiline keys.
var h=a.split(/\r?\n/).map(function(a){return(0,_escape.escapeKey)(a,d)}).join("\\\n"),i=b.split(/\r?\n/).map(function(a){return(0,_escape.escapeValue)(a,d)}).join("\\\n"),j="".concat((null===c||void 0===c?void 0:c.commentDelimiter)||DEFAULT_COMMENT_DELIMITER," "),k=void 0===(null===c||void 0===c?void 0:c.comment)?"":"".concat("".concat(j).concat(c.comment).split(/\r?\n/).join("\n".concat(j)),"\n"),l="".concat(k).concat(h).concat(e).concat(i).split(/\n/);// Allow multiline values.
*/insert(a,b,c){const d=c?.escapeUnicode||!1,e=c?.separator?" "===c.separator?" ":` ${c.separator} `:` ${DEFAULT_SEPARATOR} `.replace(" "," "),f=c?.referenceKey,g=c?.position||"after";f&&this.parseLinesIfNeeded();// Allow multiline keys.
const h=a.split(/\r?\n/).map(a=>(0,_escape.escapeKey)(a,d)).join("\\\n"),i=b.split(/\r?\n/).map(a=>(0,_escape.escapeValue)(a,d)).join("\\\n"),j=`${c?.commentDelimiter||DEFAULT_COMMENT_DELIMITER} `,k=c?.comment===void 0?"":`${`${j}${c.comment}`.split(/\r?\n/).join(`\n${j}`)}\n`,l=`${k}${h}${e}${i}`.split(/\n/);// Allow multiline values.
// Allow multiline comments.
if(void 0===f){var m;return(m=this.lines).push.apply(m,_toConsumableArray(l)),this.needsLineParsing=!0,!0}// Find the last occurrence of the reference key.
var n=_toConsumableArray(this.collection).reverse().find(function(a){return a.key===f});// Insert the new property when a reference key defined only when found.
if(n){var o,p,q="after"===g?n.endingLineNumber:null!==(o=null===(p=n.previousProperty)||void 0===p?void 0:p.endingLineNumber)&&void 0!==o?o:0;return this.lines=[].concat(_toConsumableArray(this.lines.slice(0,q)),_toConsumableArray(l),_toConsumableArray(this.lines.slice(q))),this.needsLineParsing=!0,!0}return!1}/**
if(void 0===f)return this.lines.push(...l),this.needsLineParsing=!0,!0;else{// Find the last occurrence of the reference key.
const a=[...this.collection].reverse().find(a=>a.key===f);// Insert the new property when a reference key defined only when found.
if(a){const b="after"===g?a.endingLineNumber:a.previousProperty?.endingLineNumber??0;return this.lines=[...this.lines.slice(0,b),...l,...this.lines.slice(b)],this.needsLineParsing=!0,!0}return!1}}/**
* Insert a new comment in the existing object (by default it will be at the end).

@@ -28,6 +30,6 @@ *

* @returns True if the comment was inserted, otherwise false.
*/},{key:"insertComment",value:function insertComment(a,b){var c=null===b||void 0===b?void 0:b.referenceKey,d=(null===b||void 0===b?void 0:b.position)||"after";c&&this.parseLinesIfNeeded();// Allow multiline comments.
var e="".concat((null===b||void 0===b?void 0:b.commentDelimiter)||DEFAULT_COMMENT_DELIMITER," "),f="".concat(e).concat(a).replace(/\r?\n/g,"\n".concat(e)).split(/\n/);if(void 0===c){var g;return(g=this.lines).push.apply(g,_toConsumableArray(f)),this.needsLineParsing=!0,!0}// Find the last occurrence of the reference key.
var h=_toConsumableArray(this.collection).reverse().find(function(a){return a.key===c});// Insert the new comment when a reference key defined only when found.
if(h){var i,j,k="after"===d?h.endingLineNumber:null!==(i=null===(j=h.previousProperty)||void 0===j?void 0:j.endingLineNumber)&&void 0!==i?i:0;return this.lines=[].concat(_toConsumableArray(this.lines.slice(0,k)),_toConsumableArray(f),_toConsumableArray(this.lines.slice(k))),this.needsLineParsing=!0,!0}return!1}/**
*/insertComment(a,b){const c=b?.referenceKey,d=b?.position||"after";c&&this.parseLinesIfNeeded();// Allow multiline comments.
const e=`${b?.commentDelimiter||DEFAULT_COMMENT_DELIMITER} `,f=`${e}${a}`.replace(/\r?\n/g,`\n${e}`).split(/\n/);if(void 0===c)return this.lines.push(...f),this.needsLineParsing=!0,!0;else{// Find the last occurrence of the reference key.
const a=[...this.collection].reverse().find(a=>a.key===c);// Insert the new comment when a reference key defined only when found.
if(a){const b="after"===d?a.endingLineNumber:a.previousProperty?.endingLineNumber??0;return this.lines=[...this.lines.slice(0,b),...f,...this.lines.slice(b)],this.needsLineParsing=!0,!0}return!1}}/**
* Delete the last occurrence of a given key from the existing object.

@@ -39,4 +41,4 @@ *

* @returns True if the key was deleted, otherwise false.
*/},{key:"delete",value:function _delete(a){var b=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];this.parseLinesIfNeeded();// Find the last occurrence of the key.
var c=_toConsumableArray(this.collection).reverse().find(function(b){return b.key===a});if(c){var d,e,f=b?null!==(d=null===(e=c.previousProperty)||void 0===e?void 0:e.endingLineNumber)&&void 0!==d?d:0:c.startingLineNumber-1,g=c.endingLineNumber;return this.lines=[].concat(_toConsumableArray(this.lines.slice(0,f)),_toConsumableArray(this.lines.slice(g))),this.needsLineParsing=!0,!0}return!1}/**
*/delete(a){let b=!(1<arguments.length&&arguments[1]!==void 0)||arguments[1];this.parseLinesIfNeeded();// Find the last occurrence of the key.
const c=[...this.collection].reverse().find(b=>b.key===a);if(c){const a=b?c.previousProperty?.endingLineNumber??0:c.startingLineNumber-1,d=c.endingLineNumber;return this.lines=[...this.lines.slice(0,a),...this.lines.slice(d)],this.needsLineParsing=!0,!0}return!1}/**
* Restore the original newline characters of a key.

@@ -47,4 +49,4 @@ *

* @returns The key with its original newlines characters restored.
*/},{key:"getKeyWithNewlines",value:function getKeyWithNewlines(a){return 0===a.newlinePositions.length?a.key:// eslint-disable-next-line unicorn/no-array-reduce
_toConsumableArray(a.key).reduce(function(b,c,d){return"".concat(b).concat(a.newlinePositions.includes(d)?"\n":"").concat(c)},"")}/**
*/getKeyWithNewlines(a){return 0===a.newlinePositions.length?a.key:// eslint-disable-next-line unicorn/no-array-reduce
[...a.key].reduce((b,c,d)=>`${b}${a.newlinePositions.includes(d)?"\n":""}${c}`,"")}/**
* Restore the original newline characters of a value.

@@ -55,4 +57,4 @@ *

* @returns The value with its original newlines characters restored.
*/},{key:"getValueWithNewlines",value:function getValueWithNewlines(a){return 0===a.newlinePositions.length||void 0===a.valuePosition?a.value:// eslint-disable-next-line unicorn/no-array-reduce
_toConsumableArray(a.value).reduce(function(b,c,d){return"".concat(b).concat(a.newlinePositions.includes(d+a.valuePosition)?"\n":"").concat(c)},"")}/**
*/getValueWithNewlines(a){return 0===a.newlinePositions.length||a.valuePosition===void 0?a.value:// eslint-disable-next-line unicorn/no-array-reduce
[...a.value].reduce((b,c,d)=>`${b}${a.newlinePositions.includes(d+a.valuePosition)?"\n":""}${c}`,"")}/**
* Update the last occurrence of a given key from the existing object.

@@ -64,8 +66,8 @@ *

* @returns True if the key was updated, otherwise false.
*/},{key:"update",value:function update(a,b){var c,d,e,f;this.parseLinesIfNeeded();// Find the last occurrence of the key to update.
var g=_toConsumableArray(this.collection).reverse().find(function(b){return b.key===a});if(!g||!b)return!1;var h=b.escapeUnicode||!1,i=b.separator?" "===b.separator?" ":" ".concat(b.separator," "):g.separator||" ".concat(DEFAULT_SEPARATOR," ").replace(" "," "),j=(null!==(c=b.newKey)&&void 0!==c?c:this.getKeyWithNewlines(g)).split(/\r?\n/).map(function(a){return(0,_escape.escapeKey)(a,h)}).join("\\\n"),k=(null!==(d=b.newValue)&&void 0!==d?d:this.getValueWithNewlines(g)).split(/\r?\n/).map(function(a){return(0,_escape.escapeValue)(a,h)}).join("\\\n"),l="".concat(b.commentDelimiter||DEFAULT_COMMENT_DELIMITER," "),m=void 0===b.newComment?"":"".concat("".concat(l).concat(b.newComment).split(/\r?\n/).join("\n".concat(l)),"\n"),n="".concat(m).concat(j).concat(i).concat(k).split(/\n/);// Allow multiline keys.
*/update(a,b){this.parseLinesIfNeeded();// Find the last occurrence of the key to update.
const c=[...this.collection].reverse().find(b=>b.key===a);if(!c||!b)return!1;const d=b.escapeUnicode||!1,e=b.separator?" "===b.separator?" ":` ${b.separator} `:c.separator||` ${DEFAULT_SEPARATOR} `.replace(" "," "),f=(b.newKey??this.getKeyWithNewlines(c)).split(/\r?\n/).map(a=>(0,_escape.escapeKey)(a,d)).join("\\\n"),g=(b.newValue??this.getValueWithNewlines(c)).split(/\r?\n/).map(a=>(0,_escape.escapeValue)(a,d)).join("\\\n"),h=`${b.commentDelimiter||DEFAULT_COMMENT_DELIMITER} `,i=void 0===b.newComment?"":`${`${h}${b.newComment}`.split(/\r?\n/).join(`\n${h}`)}\n`,j=`${i}${f}${e}${g}`.split(/\n/);// Allow multiline keys.
// Allow multiline values.
// Allow multiline comments.
// Replace the existing property with the new one.
return this.lines=[].concat(_toConsumableArray(this.lines.slice(0,void 0===b.newComment?g.startingLineNumber-1:null!==(e=null===(f=g.previousProperty)||void 0===f?void 0:f.endingLineNumber)&&void 0!==e?e:0)),_toConsumableArray(n),_toConsumableArray(this.lines.slice(g.endingLineNumber))),this.needsLineParsing=!0,!0}/**
return this.lines=[...this.lines.slice(0,void 0===b.newComment?c.startingLineNumber-1:c.previousProperty?.endingLineNumber??0),...j,...this.lines.slice(c.endingLineNumber)],this.needsLineParsing=!0,!0}/**
* Update a key if it exist, otherwise add it at the end.

@@ -78,4 +80,2 @@ *

* @returns True if the key was updated or inserted, otherwise false.
*/},{key:"upsert",value:function upsert(a,b,c){return this.parseLinesIfNeeded(),this.keyLineNumbers[a]?this.update(a,{newValue:b,newComment:null===c||void 0===c?void 0:c.comment,commentDelimiter:null===c||void 0===c?void 0:c.commentDelimiter,separator:null===c||void 0===c?void 0:c.separator,escapeUnicode:null===c||void 0===c?void 0:c.escapeUnicode}):this.insert(a,b,c)}}]),b}(_properties.Properties);/** The default character used as comment delimiter. */ /** Characters that can be used as key-value pair separators. */ /** Characters that can be used as comment delimiters. */ /** Options on the `Properties.insert` method. */ /** Options on the `Properties.insertComment` method. */ /** Options on the `Properties.update` method. */ /** Options on the `Properties.upsert` method. */ /**
* A .properties file editor.
*/
*/upsert(a,b,c){return this.parseLinesIfNeeded(),this.keyLineNumbers[a]?this.update(a,{newValue:b,newComment:c?.comment,commentDelimiter:c?.commentDelimiter,separator:c?.separator,escapeUnicode:c?.escapeUnicode}):this.insert(a,b,c)}}exports.PropertiesEditor=PropertiesEditor;

@@ -8,3 +8,3 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.escapeValue=exports.escapeKey=void 0;/**

* @return The escaped key.
*/var escapeKey=exports.escapeKey=function(a){var b=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return escapeContent(a,!0,b)},escapeValue=exports.escapeValue=function(a){var b=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return escapeContent(a,!1,b)},escapeContent=function(a,b,c){return a.replace(new RegExp("[\\s!#:=\\\\".concat(c?"\\u0000-\\u001F\\u007F-\\uFFFF":"","]"),"g"),function(a,c){return" "===a?b||0===c?"\\ ":" ":"\\"===a?"\\\\":"\f"===a?"\\f":"\n"===a?"\\n":"\r"===a?"\\r":"\t"===a?"\\t":"="===a||":"===a||"#"===a||"!"===a?"\\".concat(a):"\\u".concat(a.codePointAt(0).toString(16).padStart(4,"0"))})};/**
*/const escapeKey=function(a){let b=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return escapeContent(a,!0,b)};/**
* Escape property value.

@@ -16,3 +16,3 @@ *

* @return The escaped value.
*/ /**
*/exports.escapeKey=escapeKey;const escapeValue=function(a){let b=!!(1<arguments.length&&arguments[1]!==void 0)&&arguments[1];return escapeContent(a,!1,b)};/**
* Escape the content from either key or value of a property.

@@ -25,2 +25,2 @@ *

* @returns The escaped content.
*/
*/exports.escapeValue=escapeValue;const escapeContent=(a,b,c)=>a.replace(new RegExp(`[\\s!#:=\\\\${c?"\\u0000-\\u001F\\u007F-\\uFFFF":""}]`,"g"),(a,c)=>" "===a?b||0===c?"\\ ":" ":"\\"===a?"\\\\":"\f"===a?"\\f":"\n"===a?"\\n":"\r"===a?"\\r":"\t"===a?"\\t":"="===a||":"===a||"#"===a||"!"===a?`\\${a}`:`\\u${a.codePointAt(0).toString(16).padStart(4,"0")}`);

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Properties",{enumerable:!0,get:function get(){return _properties.Properties}}),exports.getProperties=void 0;var _properties=require("./properties"),getProperties=exports.getProperties=function(a){return new _properties.Properties(a).toObject()};/**
"use strict";var _properties=require("./properties");Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Properties",{enumerable:!0,get:function(){return _properties.Properties}}),exports.getProperties=void 0;/**
* A key-value pair object.

@@ -9,2 +9,2 @@ */ /**

* @returns A key/value object representing the content of a `.properties` file.
*/
*/const getProperties=a=>new _properties.Properties(a).toObject();exports.getProperties=getProperties;

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

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _=require(".."),webpackLoader=function(a){return"module.exports = ".concat(JSON.stringify((0,_.getProperties)(a)),";")},_default=exports.default=webpackLoader;/**
"use strict";var _=require("..");Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;/**
* Webpack file loader for `.properties` files.

@@ -7,2 +7,2 @@ *

* @returns A Webpack file loader string containing the content of a `.properties` file.
*/
*/const webpackLoader=a=>`module.exports = ${JSON.stringify((0,_.getProperties)(a))};`;var _default=exports.default=webpackLoader;

@@ -1,15 +0,23 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFirstEolCharacter=exports.Properties=exports.KeyCollisions=exports.DEFAULT_END_OF_LINE_CHARACTER=exports.BOM_CODE_POINT=exports.BOM=void 0;var _property=require("./property"),_propertyLine=require("./property-line");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d.return&&(k=d.return(),Object(k)!==k))return}finally{if(m)throw h}}return l}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/**
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFirstEolCharacter=exports.Properties=exports.KeyCollisions=exports.DEFAULT_END_OF_LINE_CHARACTER=exports.BOM_CODE_POINT=exports.BOM=void 0;var _property=require("./property"),_propertyLine=require("./property-line");/**
* Byte-order mark.
*/var BOM=exports.BOM="\uFEFF",BOM_CODE_POINT=exports.BOM_CODE_POINT=BOM.codePointAt(0),DEFAULT_END_OF_LINE_CHARACTER=exports.DEFAULT_END_OF_LINE_CHARACTER="\n",getFirstEolCharacter=exports.getFirstEolCharacter=function(a){var b=a.indexOf("\n");return 0>b?void 0:"".concat("\r"===a[b-1]?"\r":"","\n")},Properties=exports.Properties=/*#__PURE__*/function(){/**
*/const BOM=exports.BOM="\uFEFF",BOM_CODE_POINT=exports.BOM_CODE_POINT=BOM.codePointAt(0),DEFAULT_END_OF_LINE_CHARACTER=exports.DEFAULT_END_OF_LINE_CHARACTER="\n",getFirstEolCharacter=a=>{const b=a.indexOf("\n");return 0>b?void 0:`${"\r"===a[b-1]?"\r":""}\n`};/** The default end of line character. */ /**
* Get the first end of line (EOL) character from multiline content.
*
* @param content - The content of a `.properties` file.
*
* @returns The multiline content's first end of line (EOL) character.
*/ /**
* A class representing the content of a .properties file.
*/exports.getFirstEolCharacter=getFirstEolCharacter;class Properties{/** Does the .properties content starts with a BOM character? */ /** The end of line character. */ /** `.properties` content split by line. */ /** The collection of property object. */collection=[];/** Object associating keys with their starting line numbers. */keyLineNumbers={};/**
* Create `Properties` object.
*
* @param content - The content of a `.properties` file.
*/function a(b){var c;_classCallCheck(this,a),_defineProperty(this,"collection",[]),_defineProperty(this,"keyLineNumbers",{});var d="string"==typeof b?b:b.toString();this.hasBom=d.codePointAt(0)===BOM_CODE_POINT,this.eolCharacter=null!==(c=getFirstEolCharacter(d))&&void 0!==c?c:DEFAULT_END_OF_LINE_CHARACTER,this.lines=(this.hasBom?d.slice(1):d).split(/\r?\n/),this.parseLines()}/**
*/constructor(a){const b="string"==typeof a?a:a.toString();this.hasBom=b.codePointAt(0)===BOM_CODE_POINT,this.eolCharacter=getFirstEolCharacter(b)??DEFAULT_END_OF_LINE_CHARACTER,this.lines=(this.hasBom?b.slice(1):b).split(/\r?\n/),this.parseLines()}/**
* Parse the `.properties` content line by line.
*/return _createClass(a,[{key:"parseLines",value:function parseLines(){this.collection=[],this.keyLineNumbers={};/** Line number while parsing properties file content. */var a,b,c,d=0,e=_createForOfIteratorHelper(this.lines);/** The current property object being parsed. */ /** The previous property object that was parsed. */try{for(e.s();!(c=e.n()).done;){var f=c.value;d++;var g=new _propertyLine.PropertyLine(f,!!a);if(!a){// Check if the line is a new property.
if(g.isComment||g.isBlank)continue;// Skip line if its a comment or blank.
*/parseLines(){this.collection=[],this.keyLineNumbers={};/** Line number while parsing properties file content. */let a,b,c=0;/** The current property object being parsed. */ /** The previous property object that was parsed. */for(const d of this.lines){c++;const e=new _propertyLine.PropertyLine(d,!!a);if(!a){// Check if the line is a new property.
if(e.isComment||e.isBlank)continue;// Skip line if its a comment or blank.
// The line is a new property.
if(a=new _property.Property(g,d,b),g.isContinuing)continue;// Continue parsing the next line.
}else if(a.addLine(g),g.isContinuing)continue;// If the line does not continue, add the property to the collection.
this.addToCollection(a),b=a,a=void 0}}catch(a){e.e(a)}finally{e.f()}}/**
if(a=new _property.Property(e,c,b),e.isContinuing)continue;// Continue parsing the next line.
}else if(a.addLine(e),e.isContinuing)continue;// If the line does not continue, add the property to the collection.
this.addToCollection(a),b=a,a=void 0}}/**
* Add a property object into a properties object collection.

@@ -20,9 +28,10 @@ *

* @returns Undefined so that we conveniently overwrite the property object.
*/},{key:"addToCollection",value:function addToCollection(a){var b;a.setKeyAndValue(),null!==(b=this.keyLineNumbers[a.key])&&void 0!==b&&b.length?(this.keyLineNumbers[a.key].push(a.startingLineNumber),a.hasKeyCollisions=!0,a.keyCollisionLines=this.keyLineNumbers[a.key],this.collection=this.collection.filter(function(b){return b.key!==a.key})):this.keyLineNumbers[a.key]=[a.startingLineNumber],this.collection.push(a)}/**
*/addToCollection(a){// Add the property to the collection.
a.setKeyAndValue(),this.keyLineNumbers[a.key]?.length?(this.keyLineNumbers[a.key].push(a.startingLineNumber),a.hasKeyCollisions=!0,a.keyCollisionLines=this.keyLineNumbers[a.key],this.collection=this.collection.filter(b=>b.key!==a.key)):this.keyLineNumbers[a.key]=[a.startingLineNumber],this.collection.push(a)}/**
* Get keys that have collisions (more than one occurrence).
*/},{key:"getKeyCollisions",value:function getKeyCollisions(){for(var a=[],b=0,c=Object.entries(this.keyLineNumbers);b<c.length;b++){var d=_slicedToArray(c[b],2),e=d[0],f=d[1];1<f.length&&a.push(new KeyCollisions(e,f))}return a}/**
*/getKeyCollisions(){const a=[];for(const[b,c]of Object.entries(this.keyLineNumbers))1<c.length&&a.push(new KeyCollisions(b,c));return a}/**
* Get the key/value object representing the properties.
*
* @returns A key/value object representing the properties.
*/},{key:"toObject",value:function toObject(){var a={};return this.collection.forEach(function(b){a[b.key]=b.value}),a}/**
*/toObject(){const a={};return this.collection.forEach(b=>{a[b.key]=b.value}),a}/**
* Format the object in `.properties`.

@@ -33,3 +42,7 @@ *

* @returns The object in `.properties` format.
*/},{key:"format",value:function format(a){return"".concat(this.hasBom?BOM:"").concat(this.lines.join(a||this.eolCharacter))}}]),a}(),KeyCollisions=exports.KeyCollisions=/*#__PURE__*/function(){/** The key with collisions. */ /** The starting line numbers where collisions are found. */ /**
*/format(a){return`${this.hasBom?BOM:""}${this.lines.join(a||this.eolCharacter)}`}}/**
* Object associating keys with their line numbers.
*/exports.Properties=Properties;/**
* A class representing key within a .properties file that had collisions (more than one occurrence).
*/class KeyCollisions{/** The key with collisions. */ /** The starting line numbers where collisions are found. */ /**
* Create a new key collision object.

@@ -39,16 +52,4 @@ *

* @param startingLineNumbers - The starting line numbers where collisions are found.
*/function a(b,c){_classCallCheck(this,a),this.key=b,this.startingLineNumbers=c}/**
*/constructor(a,b){this.key=a,this.startingLineNumbers=b}/**
* Get the number of the line from which the value will be used.
*/return _createClass(a,[{key:"getApplicableLineNumber",value:function getApplicableLineNumber(){return this.startingLineNumbers.slice(-1)[0]}}]),a}();/** The default end of line character. */ /**
* Get the first end of line (EOL) character from multiline content.
*
* @param content - The content of a `.properties` file.
*
* @returns The multiline content's first end of line (EOL) character.
*/ /**
* A class representing the content of a .properties file.
*/ /**
* Object associating keys with their line numbers.
*/ /**
* A class representing key within a .properties file that had collisions (more than one occurrence).
*/
*/getApplicableLineNumber(){return this.startingLineNumbers.slice(-1)[0]}}exports.KeyCollisions=KeyCollisions;

@@ -1,4 +0,4 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PropertyLine=void 0;function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _wrapRegExp(){function a(b,c,e){var f=new RegExp(b,c);return d.set(f,e||d.get(b)),_setPrototypeOf(f,a.prototype)}function b(a,b){var c=d.get(b);return Object.keys(c).reduce(function(b,d){var e=c[d];if("number"==typeof e)b[d]=a[e];else{for(var f=0;void 0===a[e[f]]&&f+1<e.length;)f++;b[d]=a[e[f]]}return b},Object.create(null))}_wrapRegExp=function(b,c){return new a(b,void 0,c)};var c=RegExp.prototype,d=new WeakMap;return _inherits(a,RegExp),a.prototype.exec=function(a){var d=c.exec.call(this,a);if(d){d.groups=b(d,this);var e=d.indices;e&&(e.groups=b(e,this))}return d},a.prototype[Symbol.replace]=function(a,f){if("string"==typeof f){var g=d.get(this);return c[Symbol.replace].call(this,a,f.replace(/\$<([^>]+)>/g,function(a,b){var c=g[b];return"$"+(Array.isArray(c)?c.join("$"):c)}))}if("function"==typeof f){var h=this;return c[Symbol.replace].call(this,a,function(){var a=arguments;return"object"!=_typeof(a[a.length-1])&&(a=[].slice.call(a)).push(b(a,h)),f.apply(this,a)})}return c[Symbol.replace].call(this,a,f)},_wrapRegExp.apply(this,arguments)}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/**
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.PropertyLine=void 0;/**
* Object representing a line from the content of .properties file.
*/var PropertyLine=exports.PropertyLine=/*#__PURE__*/_createClass(/** Is the line object a continuation from a previous line? */ /**
*/class PropertyLine{/** The line content, minus the trailing \ that identifies that the line is continuing. */ /** True if the line is continuing to the next line, otherwise false. */isContinuing=!1;/** True if the line is blank, otherwise false. */isBlank=!1;/** True if the line is a comment, otherwise false. */isComment=!1;/** Is the line object a continuation from a previous line? */ /**
* Create a new line object.

@@ -8,3 +8,3 @@ *

* @param isMultiline - Is the line spreading on multiple lines?
*/function c(a,b){if(_classCallCheck(this,c),_defineProperty(this,"isContinuing",!1),_defineProperty(this,"isBlank",!1),_defineProperty(this,"isComment",!1),this.content=a.trimStart(),this.isMultiline=b,0===this.content.length)this.isBlank=!0;else if(this.isMultiline||(this.isComment=!!/^[!#]/.test(this.content)),!this.isComment){// Otherwise, check if the line is continuing on the next line.
var d=this.content.match(/*#__PURE__*/_wrapRegExp(/(\\+)$/,{backslashes:1}));null!==d&&void 0!==d&&d.groups&&(this.isContinuing=!!(d.groups.backslashes.length%2),this.isContinuing&&(this.content=this.content.slice(0,-1)))}});
*/constructor(a,b){if(this.content=a.trimStart(),this.isMultiline=b,0===this.content.length)this.isBlank=!0;else if(this.isMultiline||(this.isComment=!!/^[!#]/.test(this.content)),!this.isComment){// Otherwise, check if the line is continuing on the next line.
const a=this.content.match(/(?<backslashes>\\+)$/);a?.groups&&(this.isContinuing=!!(a.groups.backslashes.length%2),this.isContinuing&&(this.content=this.content.slice(0,-1)))}}}exports.PropertyLine=PropertyLine;

@@ -1,4 +0,4 @@

"use strict";var _unescape=require("./unescape");Object.defineProperty(exports,"__esModule",{value:!0}),exports.Property=void 0;function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _wrapRegExp(){function a(b,c,e){var f=new RegExp(b,c);return d.set(f,e||d.get(b)),_setPrototypeOf(f,a.prototype)}function b(a,b){var c=d.get(b);return Object.keys(c).reduce(function(b,d){var e=c[d];if("number"==typeof e)b[d]=a[e];else{for(var f=0;void 0===a[e[f]]&&f+1<e.length;)f++;b[d]=a[e[f]]}return b},Object.create(null))}_wrapRegExp=function(b,c){return new a(b,void 0,c)};var c=RegExp.prototype,d=new WeakMap;return _inherits(a,RegExp),a.prototype.exec=function(a){var d=c.exec.call(this,a);if(d){d.groups=b(d,this);var e=d.indices;e&&(e.groups=b(e,this))}return d},a.prototype[Symbol.replace]=function(a,f){if("string"==typeof f){var g=d.get(this);return c[Symbol.replace].call(this,a,f.replace(/\$<([^>]+)>/g,function(a,b){var c=g[b];return"$"+(Array.isArray(c)?c.join("$"):c)}))}if("function"==typeof f){var h=this;return c[Symbol.replace].call(this,a,function(){var a=arguments;return"object"!=_typeof(a[a.length-1])&&(a=[].slice.call(a)).push(b(a,h)),f.apply(this,a)})}return c[Symbol.replace].call(this,a,f)},_wrapRegExp.apply(this,arguments)}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createForOfIteratorHelper(a,b){var c="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!c){if(Array.isArray(a)||(c=_unsupportedIterableToArray(a))||b&&a&&"number"==typeof a.length){c&&(a=c);var d=0,e=function(){};return{s:e,n:function n(){return d>=a.length?{done:!0}:{done:!1,value:a[d++]}},e:function e(a){throw a},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var f,g=!0,h=!1;return{s:function s(){c=c.call(a)},n:function n(){var a=c.next();return g=a.done,a},e:function e(a){h=!0,f=a},f:function f(){try{g||null==c.return||c.return()}finally{if(h)throw f}}}}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,_toPropertyKey(c.key),c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _defineProperty(a,b,c){return b=_toPropertyKey(b),b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _toPropertyKey(a){var b=_toPrimitive(a,"string");return"symbol"===_typeof(b)?b:b+""}function _toPrimitive(a,b){if("object"!==_typeof(a)||null===a)return a;var c=a[Symbol.toPrimitive];if(c!==void 0){var d=c.call(a,b||"default");if("object"!==_typeof(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}/**
"use strict";var _unescape=require("./unescape");Object.defineProperty(exports,"__esModule",{value:!0}),exports.Property=void 0;/**
* Object representing a property (key/value).
*/var Property=exports.Property=/*#__PURE__*/function(){/** The line number at which the property starts. */ /** The line number at which the property ends. */ /** The previous property object if it exists. */ /** The next property object if it exists. */ /**
*/class Property{/** The content of one or multiple lines when applicable. */ /** The property key (unescaped). */key="";/** The property key, including its escaped characters. */escapedKey="";/** Is the key empty? */hasNoKey=!1;/** Does the key definition spread across multiple lines? */hasMultilineKey=!1;/** Starting line numbers of property objects with the same key. */keyCollisionLines=[];/** Was the property's key used more than once? */hasKeyCollisions=!1;/** The key/value pair separator */ /** The length of the key/value pair separator, including its whitespace characters. */ /** The starting position of the key/value pair separator. */ /** The property value (unescaped). */value="";/** The starting position of the value. */ /** The property value, including its escaped characters. */escapedValue="";/** Is the value empty? */hasNoValue=!1;/** Positions of the newline characters if any. */newlinePositions=[];/** The line number at which the property starts. */ /** The line number at which the property ends. */ /** The previous property object if it exists. */ /** The next property object if it exists. */ /**
* Create a new property object.

@@ -8,13 +8,13 @@ *

* @param startingLineNumber - The line number at which the property starts.
*/function a(b,c,d){_classCallCheck(this,a),_defineProperty(this,"key",""),_defineProperty(this,"escapedKey",""),_defineProperty(this,"hasNoKey",!1),_defineProperty(this,"hasMultilineKey",!1),_defineProperty(this,"keyCollisionLines",[]),_defineProperty(this,"hasKeyCollisions",!1),_defineProperty(this,"value",""),_defineProperty(this,"escapedValue",""),_defineProperty(this,"hasNoValue",!1),_defineProperty(this,"newlinePositions",[]),this.linesContent=b.content,this.startingLineNumber=c,this.endingLineNumber=c,this.previousProperty=d,null===d||void 0===d||d.setNextProperty(this)}/**
*/constructor(a,b,c){this.linesContent=a.content,this.startingLineNumber=b,this.endingLineNumber=b,this.previousProperty=c,c?.setNextProperty(this)}/**
* Set the next property object.
*
* @param property - The next property object
*/return _createClass(a,[{key:"setNextProperty",value:function setNextProperty(a){this.nextProperty=a}/**
*/setNextProperty(a){this.nextProperty=a}/**
* Add the a line to a multiline property object.
*
* @param propertyLine - A property line object.
*/},{key:"addLine",value:function addLine(a){0<this.linesContent.length&&(this.newlinePositions.push(this.linesContent.length),this.endingLineNumber++),this.linesContent+=a.content}/**
*/addLine(a){0<this.linesContent.length&&(this.newlinePositions.push(this.linesContent.length),this.endingLineNumber++),this.linesContent+=a.content}/**
* Set the property's key and value.
*/},{key:"setKeyAndValue",value:function setKeyAndValue(){this.findSeparator(),void 0!==this.separatorPosition&&void 0!==this.separatorLength?(!this.hasNoKey&&(this.escapedKey=this.linesContent.slice(0,this.separatorPosition),this.key=this.unescapeLine(this.escapedKey,this.startingLineNumber)),!this.hasNoValue&&(this.escapedValue=this.linesContent.slice(this.separatorPosition+this.separatorLength),this.value=this.unescapeLine(this.escapedValue,this.startingLineNumber))):this.hasNoValue&&(this.escapedKey=this.linesContent,this.key=this.unescapeLine(this.escapedKey,this.startingLineNumber))}/**
*/setKeyAndValue(){this.findSeparator(),this.separatorPosition!==void 0&&this.separatorLength!==void 0?(!this.hasNoKey&&(this.escapedKey=this.linesContent.slice(0,this.separatorPosition),this.key=this.unescapeLine(this.escapedKey,this.startingLineNumber)),!this.hasNoValue&&(this.escapedValue=this.linesContent.slice(this.separatorPosition+this.separatorLength),this.value=this.unescapeLine(this.escapedValue,this.startingLineNumber))):this.hasNoValue&&(this.escapedKey=this.linesContent,this.key=this.unescapeLine(this.escapedKey,this.startingLineNumber))}/**
* Unescape the content from either key or value of a property.

@@ -29,13 +29,13 @@ *

* This exception is thrown if malformed escaped unicode characters are present.
*/},{key:"unescapeLine",value:function unescapeLine(a,b){try{return(0,_unescape.unescapeContent)(a)}catch(a){throw new Error("".concat(a.message," in property starting at line ").concat(b))}}/**
*/unescapeLine(a,b){try{return(0,_unescape.unescapeContent)(a)}catch(a){throw new Error(`${a.message} in property starting at line ${b}`)}}/**
* Find the character separating the key from the value.
*/},{key:"findSeparator",value:function findSeparator(){// If the separator was already found, skip.
*/findSeparator(){// If the separator was already found, skip.
if(!(this.hasNoKey||this.hasNoValue||this.separatorPosition)){// Only match separators to avoid iterating all characters.
var a,b=_createForOfIteratorHelper(this.linesContent.matchAll(/[\t\f :=]/g));try{for(b.s();!(a=b.n()).done;){var c,d=a.value,e=d.index,f=this.linesContent.slice(0,e),g=f.match(/*#__PURE__*/_wrapRegExp(/(\\+)$/,{backslashes:1}));// Check if the separator might be escaped.
if(null!==g&&void 0!==g&&g.groups){var h=!!(g.groups.backslashes.length%2);if(h)// If the separator is escaped, check the next character.
continue}var i="";this.separatorPosition=e;// Check if the separator starts with a whitespace.
var j=this.linesContent.slice(e),k=j.match(/*#__PURE__*/_wrapRegExp(/^([\t\n\v\f\r ]+)/,{whitespace:1})),l=(null===k||void 0===k||null===(c=k.groups)||void 0===c?void 0:c.whitespace)||"";// All white-space characters, excluding non-breaking spaces.
// If there is a whitespace, move to the next character.
for(const a of this.linesContent.matchAll(/[\t\f :=]/g)){const b=a.index,c=this.linesContent.slice(0,b),d=c.match(/(?<backslashes>\\+)$/);// Check if the separator might be escaped.
if(d?.groups){const a=!!(d.groups.backslashes.length%2);if(a)// If the separator is escaped, check the next character.
continue}let e="";this.separatorPosition=b;// Check if the separator starts with a whitespace.
let f=this.linesContent.slice(b);// All white-space characters, excluding non-breaking spaces.
const g=f.match(/^(?<whitespace>[\t\n\v\f\r ]+)/),h=g?.groups?.whitespace||"";// If there is a whitespace, move to the next character.
// Check if there is an equal or colon character.
if(0<l.length&&(i+=l,j=j.slice(l.length)),/[:=]/.test(j[0])){var m;i+=j[0],j=j.slice(1);// If an equal or colon character was found, try to get trailing whitespace.
var n=j.match(/*#__PURE__*/_wrapRegExp(/^([\t\n\v\f\r ]+)/,{whitespace:1})),o=(null===n||void 0===n||null===(m=n.groups)||void 0===m?void 0:m.whitespace)||"";i+=o}this.separatorLength=i.length,this.valuePosition=this.separatorPosition+this.separatorLength,this.separator=this.linesContent.slice(this.separatorPosition,this.separatorPosition+this.separatorLength),e||(this.hasNoKey=!0);break}}catch(a){b.e(a)}finally{b.f()}void 0===this.separatorPosition?this.hasNoValue=!0:0<this.newlinePositions.length&&this.newlinePositions[0]<this.separatorPosition&&(this.hasMultilineKey=!0)}}}]),a}();
if(0<h.length&&(e+=h,f=f.slice(h.length)),/[:=]/.test(f[0])){e+=f[0],f=f.slice(1);// If an equal or colon character was found, try to get trailing whitespace.
const a=f.match(/^(?<whitespace>[\t\n\v\f\r ]+)/),b=a?.groups?.whitespace||"";e+=b}this.separatorLength=e.length,this.valuePosition=this.separatorPosition+this.separatorLength,this.separator=this.linesContent.slice(this.separatorPosition,this.separatorPosition+this.separatorLength),b||(this.hasNoKey=!0);break}void 0===this.separatorPosition?this.hasNoValue=!0:0<this.newlinePositions.length&&this.newlinePositions[0]<this.separatorPosition&&(this.hasMultilineKey=!0)}}}exports.Property=Property;

@@ -10,4 +10,4 @@ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.unescapeContent=void 0;/**

* This exception is thrown if malformed escaped unicode characters are present.
*/var unescapeContent=exports.unescapeContent=function(a){return(// By using a regular expression we avoid iterating through all characters and improve performance.
a.replace(/\\[^u]|\\u.{4}/g,function(a){var b=a.charAt(1);switch(b){case"f":// Formfeed.
*/const unescapeContent=a=>// By using a regular expression we avoid iterating through all characters and improve performance.
a.replace(/\\[^u]|\\u.{4}/g,a=>{const b=a.charAt(1);switch(b){case"f":// Formfeed.
return"\f";case"n":// Newline.

@@ -17,3 +17,3 @@ return"\n";case"r":// Carriage return.

return"\t";case"u":{// Unicode character.
var c=a.slice(2,6);if(!/[\da-f]{4}/i.test(c))// Code point can only be within Unicode's Multilingual Plane (BMP).
throw new Error("malformed escaped unicode characters '\\u".concat(c,"'"));return String.fromCodePoint(Number.parseInt(c,16))}default:return b}}))};
const b=a.slice(2,6);if(!/[\da-f]{4}/i.test(b))// Code point can only be within Unicode's Multilingual Plane (BMP).
throw new Error(`malformed escaped unicode characters '\\u${b}'`);return String.fromCodePoint(Number.parseInt(b,16))}default:return b}});exports.unescapeContent=unescapeContent;
{
"name": "properties-file",
"version": "3.3.3",
"version": "3.3.4",
"description": ".properties file parser, editor, formatter and Webpack loader.",

@@ -67,5 +67,5 @@ "keywords": [

"@babel/cli": "^7.23.0",
"@babel/core": "^7.23.0",
"@babel/preset-env": "^7.22.20",
"@babel/preset-typescript": "7.23.0",
"@babel/core": "^7.23.2",
"@babel/preset-env": "^7.23.2",
"@babel/preset-typescript": "7.23.2",
"@release-it/conventional-changelog": "7.0.2",

@@ -72,0 +72,0 @@ "@types/jest": "29.5.5",

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc