From 7556b994db65bf933d6c13e695cc8573412d3b9e Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Thu, 26 Jan 2023 01:44:47 +0100 Subject: [PATCH] feat: add rome and do linting --- .../source/constraints/abstractoperator.mjs | 2 +- application/source/constraints/oroperator.mjs | 3 +- application/source/data/buildmap.mjs | 3 +- application/source/data/datasource.mjs | 2 +- application/source/data/datasource/server.mjs | 4 +- .../source/data/datasource/server/restapi.mjs | 10 +-- application/source/data/extend.mjs | 18 ++++-- application/source/data/pathfinder.mjs | 8 +-- application/source/data/transformer.mjs | 14 ++-- application/source/dom/attributes.mjs | 8 +-- application/source/dom/constants.mjs | 30 ++++----- application/source/dom/customelement.mjs | 23 +++---- application/source/dom/resource.mjs | 2 +- application/source/dom/resourcemanager.mjs | 4 +- application/source/dom/template.mjs | 6 +- application/source/dom/updater.mjs | 34 +++++----- application/source/i18n/formatter.mjs | 4 +- application/source/i18n/locale.mjs | 38 ++++++----- application/source/i18n/translations.mjs | 2 +- application/source/logging/logger.mjs | 54 ++++++++++++---- application/source/text/formatter.mjs | 1 - application/source/types/dataurl.mjs | 6 +- application/source/types/global.mjs | 4 +- application/source/types/mediatype.mjs | 4 +- application/source/types/node.mjs | 4 +- application/source/types/nodelist.mjs | 1 - application/source/types/observerlist.mjs | 9 ++- application/source/types/proxyobserver.mjs | 3 +- application/source/types/uuid.mjs | 4 +- application/source/types/validate.mjs | 4 +- application/source/types/version.mjs | 2 +- application/source/util/clone.mjs | 6 +- application/source/util/processing.mjs | 8 ++- application/source/util/trimspaces.mjs | 4 +- development/package.json | 1 + development/pnpm-lock.yaml | 64 +++++++++++++++++++ development/rome.json | 12 ++++ 37 files changed, 267 insertions(+), 139 deletions(-) create mode 100644 development/rome.json diff --git a/application/source/constraints/abstractoperator.mjs b/application/source/constraints/abstractoperator.mjs index 87527a969..cb6bcd817 100644 --- a/application/source/constraints/abstractoperator.mjs +++ b/application/source/constraints/abstractoperator.mjs @@ -34,7 +34,7 @@ class AbstractOperator extends AbstractConstraint { constructor(operantA, operantB) { super(); - if (!(operantA instanceof AbstractConstraint) || !(operantB instanceof AbstractConstraint)) { + if (!((operantA instanceof AbstractConstraint) && (operantB instanceof AbstractConstraint))) { throw new TypeError("parameters must be from type AbstractConstraint") } diff --git a/application/source/constraints/oroperator.mjs b/application/source/constraints/oroperator.mjs index 25e86c447..d09ffa6eb 100644 --- a/application/source/constraints/oroperator.mjs +++ b/application/source/constraints/oroperator.mjs @@ -35,7 +35,8 @@ class OrOperator extends AbstractOperator { var self = this; return new Promise(function (resolve, reject) { - let a, b; + let a; + let b; self.operantA.isValid(value) .then(function () { diff --git a/application/source/data/buildmap.mjs b/application/source/data/buildmap.mjs index 08f10a4f9..94fd01c2f 100644 --- a/application/source/data/buildmap.mjs +++ b/application/source/data/buildmap.mjs @@ -111,7 +111,8 @@ function buildFlatMap(subject, selector, key, parentMap) { if (key === undefined) key = []; let parts = selector.split(DELIMITER); - let current = "", currentPath = []; + let current = ""; + let currentPath = []; do { current = parts.shift(); diff --git a/application/source/data/datasource.mjs b/application/source/data/datasource.mjs index 3c8f43b0a..89b743265 100644 --- a/application/source/data/datasource.mjs +++ b/application/source/data/datasource.mjs @@ -232,7 +232,7 @@ function parseOptionsJSON(data) { validateObject(obj); return obj; } catch (e) { - throw new Error('the options does not contain a valid json definition (actual: ' + data + ').'); + throw new Error(`the options does not contain a valid json definition (actual: ${data}).`); } } diff --git a/application/source/data/datasource/server.mjs b/application/source/data/datasource/server.mjs index b3cf3ea84..53378fc94 100644 --- a/application/source/data/datasource/server.mjs +++ b/application/source/data/datasource/server.mjs @@ -88,10 +88,10 @@ class Server extends Datasource { */ function doTransform(type, obj) { const self = this; - let transformation = self.getOption(type + '.mapping.transformer'); + let transformation = self.getOption(`${type}.mapping.transformer`); if (transformation !== undefined) { const pipe = new Pipe(transformation); - const callbacks = self.getOption(type + '.mapping.callbacks') + const callbacks = self.getOption(`${type}.mapping.callbacks`) if (isObject(callbacks)) { for (const key in callbacks) { diff --git a/application/source/data/datasource/server/restapi.mjs b/application/source/data/datasource/server/restapi.mjs index 191a29f14..2264dde58 100644 --- a/application/source/data/datasource/server/restapi.mjs +++ b/application/source/data/datasource/server/restapi.mjs @@ -168,13 +168,13 @@ function fetchData(init, key, callback) { let response; - return fetch(self.getOption(key + '.url'), init).then(resp => { + return fetch(self.getOption(`${key}.url`), init).then(resp => { response = resp; - const acceptedStatus = self.getOption(key + '.acceptedStatus', [200]); + const acceptedStatus = self.getOption(`${key}.acceptedStatus`, [200]); if (acceptedStatus.indexOf(resp.status) === -1) { - throw Error('the data cannot be ' + key + ' (response ' + resp.status + ')') + throw Error(`the data cannot be ${key} (response ${resp.status})`) } return resp.text() @@ -188,10 +188,10 @@ function fetchData(init, key, callback) { } catch (e) { if (body.length > 100) { - body = body.substring(0, 97) + '...'; + body = `${body.substring(0, 97)}...`; } - throw new Error('the response does not contain a valid json (actual: ' + body + ').'); + throw new Error(`the response does not contain a valid json (actual: ${body}).`); } if (callback && isFunction(callback)) { diff --git a/application/source/data/extend.mjs b/application/source/data/extend.mjs index 4824f1bef..873b0e452 100644 --- a/application/source/data/extend.mjs +++ b/application/source/data/extend.mjs @@ -23,15 +23,21 @@ export {extend} * @memberOf Monster.Data * @throws {Error} unsupported argument * @throws {Error} type mismatch + * @throws {Error} unsupported argument */ -function extend() { - let o, i; +function extend(...args) { + let o; + let i; + + if (typeof args !== 'object' || args[0] === null) { + throw new Error(`unsupported argument ${JSON.stringify(args[0])}`); + } - for (i = 0; i < arguments.length; i++) { - let a = arguments[i]; + for (i = 0; i < args.length; i++) { + let a = args[i]; if (!(isObject(a) || isArray(a))) { - throw new Error('unsupported argument ' + JSON.stringify(a)); + throw new Error(`unsupported argument ${JSON.stringify(a)}`); } if (o === undefined) { @@ -57,7 +63,7 @@ function extend() { } } else { if (typeOf(o[k]) !== typeOf(v)) { - throw new Error("type mismatch: " + JSON.stringify(o[k]) + "(" + typeOf(o[k]) + ") != " + JSON.stringify(v) + "(" + typeOf(v) + ")"); + throw new Error(`type mismatch: ${JSON.stringify(o[k])}(${typeOf(o[k])}) != ${JSON.stringify(v)}(${typeOf(v)})`); } } diff --git a/application/source/data/pathfinder.mjs b/application/source/data/pathfinder.mjs index ef16b67d4..28a067d43 100644 --- a/application/source/data/pathfinder.mjs +++ b/application/source/data/pathfinder.mjs @@ -255,7 +255,7 @@ function getValueViaPath(subject, path, check) { } if (parts.length > 0) { - throw Error("the journey is not at its end (" + parts.join(DELIMITER) + ")"); + throw Error(`the journey is not at its end (${parts.join(DELIMITER)})`); } @@ -272,7 +272,7 @@ function getValueViaPath(subject, path, check) { } - throw TypeError("unsupported type " + typeof subject) + throw TypeError(`unsupported type ${typeof subject}`) } @@ -331,8 +331,8 @@ function setValueViaPath(object, path, value) { let anchor = getValueViaPath.call(this, object, subpath); - if (!isObject(object) && !isArray(object)) { - throw TypeError("unsupported type: " + typeof object); + if (!(isObject(object) || isArray(object))) { + throw TypeError(`unsupported type: ${typeof object}`); } if (anchor instanceof Map || anchor instanceof WeakMap) { diff --git a/application/source/data/transformer.mjs b/application/source/data/transformer.mjs index 363b67ef4..0ff171ac2 100644 --- a/application/source/data/transformer.mjs +++ b/application/source/data/transformer.mjs @@ -190,7 +190,7 @@ function disassemble(command) { let c = g?.['char']; if (p && c) { - let r = '__' + new ID().toString() + '__'; + let r = `__${new ID().toString()}__`; placeholder.set(r, c); command = command.replace(p, r); } @@ -243,7 +243,8 @@ function transform(value) { const console = getGlobalObject('console'); let args = clone(this.args); - let key, defaultValue; + let key; + let defaultValue; switch (this.command) { @@ -263,7 +264,7 @@ function transform(value) { return value.toUpperCase(); case 'tostring': - return "" + value; + return `${value}`; case 'tointeger': let n = parseInt(value); @@ -367,7 +368,7 @@ function transform(value) { return value.length; } - throw new TypeError("unsupported type " + typeof value); + throw new TypeError(`unsupported type ${typeof value}`); case 'to-base64': case 'btoa': @@ -532,7 +533,7 @@ function transform(value) { defaultValue = defaultValue.toLowerCase() return ((defaultValue !== 'undefined' && defaultValue !== '' && defaultValue !== 'off' && defaultValue !== 'false' && defaultValue !== 'false') || defaultValue === 'on' || defaultValue === 'true' || defaultValue === 'true'); case 'string': - return "" + defaultValue; + return `${defaultValue}`; case "object": return JSON.parse(atob(defaultValue)); } @@ -541,9 +542,8 @@ function transform(value) { default: - throw new Error("unknown command " + this.command) + throw new Error(`unknown command ${this.command}`) } - return value; } diff --git a/application/source/dom/attributes.mjs b/application/source/dom/attributes.mjs index caf541560..ac553ac17 100644 --- a/application/source/dom/attributes.mjs +++ b/application/source/dom/attributes.mjs @@ -145,7 +145,7 @@ function getLinkedObjects(element, symbol) { validateSymbol(symbol) if (element?.[symbol] === undefined) { - throw new Error('there is no object link for ' + symbol.toString()); + throw new Error(`there is no object link for ${symbol.toString()}`); } return element?.[symbol][Symbol.iterator](); @@ -360,8 +360,8 @@ function findClosestByAttribute(element, key, value) { } let selector = validateString(key); - if (value !== undefined) selector += "=" + validateString(value); - let result = element.closest('[' + selector + ']'); + if (value !== undefined) selector += `=${validateString(value)}`; + let result = element.closest(`[${selector}]`); if (result instanceof HTMLElement) { return result; } @@ -406,7 +406,7 @@ function findClosestByClass(element, className) { return element; } - let result = element.closest('.' + className); + let result = element.closest(`.${className}`); if (result instanceof HTMLElement) { return result; } diff --git a/application/source/dom/constants.mjs b/application/source/dom/constants.mjs index e5827c543..ff5557be7 100644 --- a/application/source/dom/constants.mjs +++ b/application/source/dom/constants.mjs @@ -86,7 +86,7 @@ const ATTRIBUTE_PREFIX = 'data-monster-'; * @since 1.8.0 * @type {string} */ -const ATTRIBUTE_OPTIONS = ATTRIBUTE_PREFIX + 'options'; +const ATTRIBUTE_OPTIONS = `${ATTRIBUTE_PREFIX}options`; /** * This is the name of the attribute to pass options to a control @@ -96,7 +96,7 @@ const ATTRIBUTE_OPTIONS = ATTRIBUTE_PREFIX + 'options'; * @since 1.30.0 * @type {string} */ -const ATTRIBUTE_OPTIONS_SELECTOR = ATTRIBUTE_PREFIX + 'options-selector'; +const ATTRIBUTE_OPTIONS_SELECTOR = `${ATTRIBUTE_PREFIX}options-selector`; /** * @memberOf Monster.DOM @@ -104,13 +104,13 @@ const ATTRIBUTE_OPTIONS_SELECTOR = ATTRIBUTE_PREFIX + 'options-selector'; * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_THEME_PREFIX = ATTRIBUTE_PREFIX + 'theme-'; +const ATTRIBUTE_THEME_PREFIX = `${ATTRIBUTE_PREFIX}theme-`; /** * @memberOf Monster.DOM * @type {string} */ -const ATTRIBUTE_THEME_NAME = ATTRIBUTE_THEME_PREFIX + 'name'; +const ATTRIBUTE_THEME_NAME = `${ATTRIBUTE_THEME_PREFIX}name`; /** * @memberOf Monster.DOM @@ -118,7 +118,7 @@ const ATTRIBUTE_THEME_NAME = ATTRIBUTE_THEME_PREFIX + 'name'; * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_UPDATER_ATTRIBUTES = ATTRIBUTE_PREFIX + 'attributes'; +const ATTRIBUTE_UPDATER_ATTRIBUTES = `${ATTRIBUTE_PREFIX}attributes`; /** * @memberOf Monster.DOM @@ -126,7 +126,7 @@ const ATTRIBUTE_UPDATER_ATTRIBUTES = ATTRIBUTE_PREFIX + 'attributes'; * @license AGPLv3 * @since 1.27.1 */ -const ATTRIBUTE_UPDATER_SELECT_THIS = ATTRIBUTE_PREFIX + 'select-this'; +const ATTRIBUTE_UPDATER_SELECT_THIS = `${ATTRIBUTE_PREFIX}select-this`; /** * @memberOf Monster.DOM @@ -134,7 +134,7 @@ const ATTRIBUTE_UPDATER_SELECT_THIS = ATTRIBUTE_PREFIX + 'select-this'; * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_UPDATER_REPLACE = ATTRIBUTE_PREFIX + 'replace'; +const ATTRIBUTE_UPDATER_REPLACE = `${ATTRIBUTE_PREFIX}replace`; /** * @memberOf Monster.DOM @@ -142,7 +142,7 @@ const ATTRIBUTE_UPDATER_REPLACE = ATTRIBUTE_PREFIX + 'replace'; * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_UPDATER_INSERT = ATTRIBUTE_PREFIX + 'insert'; +const ATTRIBUTE_UPDATER_INSERT = `${ATTRIBUTE_PREFIX}insert`; /** * @memberOf Monster.DOM @@ -150,7 +150,7 @@ const ATTRIBUTE_UPDATER_INSERT = ATTRIBUTE_PREFIX + 'insert'; * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_PREFIX + 'insert-reference'; +const ATTRIBUTE_UPDATER_INSERT_REFERENCE = `${ATTRIBUTE_PREFIX}insert-reference`; /** * @memberOf Monster.DOM @@ -158,7 +158,7 @@ const ATTRIBUTE_UPDATER_INSERT_REFERENCE = ATTRIBUTE_PREFIX + 'insert-reference' * @license AGPLv3 * @since 1.8.0 */ -const ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_PREFIX + 'remove'; +const ATTRIBUTE_UPDATER_REMOVE = `${ATTRIBUTE_PREFIX}remove`; /** * @memberOf Monster.DOM @@ -166,7 +166,7 @@ const ATTRIBUTE_UPDATER_REMOVE = ATTRIBUTE_PREFIX + 'remove'; * @license AGPLv3 * @since 1.9.0 */ -const ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind'; +const ATTRIBUTE_UPDATER_BIND = `${ATTRIBUTE_PREFIX}bind`; /** * @memberOf Monster.DOM @@ -174,7 +174,7 @@ const ATTRIBUTE_UPDATER_BIND = ATTRIBUTE_PREFIX + 'bind'; * @license AGPLv3 * @since 1.27.0 */ -const ATTRIBUTE_TEMPLATE_PREFIX = ATTRIBUTE_PREFIX + 'template-prefix'; +const ATTRIBUTE_TEMPLATE_PREFIX = `${ATTRIBUTE_PREFIX}template-prefix`; /** * @memberOf Monster.DOM @@ -182,7 +182,7 @@ const ATTRIBUTE_TEMPLATE_PREFIX = ATTRIBUTE_PREFIX + 'template-prefix'; * @license AGPLv3 * @since 1.14.0 */ -const ATTRIBUTE_ROLE = ATTRIBUTE_PREFIX + 'role'; +const ATTRIBUTE_ROLE = `${ATTRIBUTE_PREFIX}role`; /** * @memberOf Monster.DOM @@ -206,7 +206,7 @@ const ATTRIBUTE_VALUE = 'value'; * @license AGPLv3 * @since 1.9.0 */ -const ATTRIBUTE_OBJECTLINK = ATTRIBUTE_PREFIX + 'objectlink'; +const ATTRIBUTE_OBJECTLINK = `${ATTRIBUTE_PREFIX}objectlink`; /** * @memberOf Monster.DOM @@ -214,7 +214,7 @@ const ATTRIBUTE_OBJECTLINK = ATTRIBUTE_PREFIX + 'objectlink'; * @license AGPLv3 * @since 1.24.0 */ -const ATTRIBUTE_ERRORMESSAGE = ATTRIBUTE_PREFIX + 'error'; +const ATTRIBUTE_ERRORMESSAGE = `${ATTRIBUTE_PREFIX}error`; /** * @memberOf Monster.DOM diff --git a/application/source/dom/customelement.mjs b/application/source/dom/customelement.mjs index 54cbd001d..ffdffdfe0 100644 --- a/application/source/dom/customelement.mjs +++ b/application/source/dom/customelement.mjs @@ -422,7 +422,8 @@ class CustomElement extends HTMLElement { [assembleMethodSymbol]() { const self = this; - let elements, nodeList; + let elements; + let nodeList; const AttributeOptions = getOptionsFromAttributes.call(self); if (isObject(AttributeOptions) && Object.keys(AttributeOptions).length > 0) { @@ -574,7 +575,7 @@ function getSlottedElements(query, name) { if (name === null) { selector += ':not([name])'; } else { - selector += '[name=' + validateString(name) + ']'; + selector += `[name=${validateString(name)}]`; } } @@ -737,7 +738,7 @@ function getOptionsFromScriptTag() { const node = document.querySelector(self.getAttribute(ATTRIBUTE_OPTIONS_SELECTOR)); if (!(node instanceof HTMLScriptElement)) { - addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'the selector ' + ATTRIBUTE_OPTIONS_SELECTOR + ' for options was specified (' + self.getAttribute(ATTRIBUTE_OPTIONS_SELECTOR) + ') but not found.'); + addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, `the selector ${ATTRIBUTE_OPTIONS_SELECTOR} for options was specified (${self.getAttribute(ATTRIBUTE_OPTIONS_SELECTOR)}) but not found.`); return {}; } @@ -746,7 +747,7 @@ function getOptionsFromScriptTag() { try { obj = parseOptionsJSON.call(this, node.textContent.trim()) } catch (e) { - addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'when analyzing the configuration from the script tag there was an error. ' + e); + addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, `when analyzing the configuration from the script tag there was an error. ${e}`); } return obj; @@ -764,7 +765,7 @@ function getOptionsFromAttributes() { try { return parseOptionsJSON.call(self, this.getAttribute(ATTRIBUTE_OPTIONS)) } catch (e) { - addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, 'the options attribute ' + ATTRIBUTE_OPTIONS + ' does not contain a valid json definition (actual: ' + this.getAttribute(ATTRIBUTE_OPTIONS) + ').' + e); + addAttributeToken(self, ATTRIBUTE_ERRORMESSAGE, `the options attribute ${ATTRIBUTE_OPTIONS} does not contain a valid json definition (actual: ${this.getAttribute(ATTRIBUTE_OPTIONS)}).${e}`); } } @@ -777,8 +778,8 @@ function getOptionsFromAttributes() { * @return {Object} */ function parseOptionsJSON(data) { - - const self = this, obj = {}; + + let obj = {}; if (!isString(data)) { return obj; @@ -793,14 +794,13 @@ function parseOptionsJSON(data) { } try { - let obj = JSON.parse(data); - return validateObject(obj); + obj = JSON.parse(data); } catch (e) { throw e; } - return obj; + return validateObject(obj); } /** @@ -899,7 +899,8 @@ function initCSSStylesheet() { */ function initShadowRoot() { - let template, html; + let template; + let html; try { template = findDocumentTemplate(this.constructor.getTag()); diff --git a/application/source/dom/resource.mjs b/application/source/dom/resource.mjs index 5e7827ad2..de77c8318 100644 --- a/application/source/dom/resource.mjs +++ b/application/source/dom/resource.mjs @@ -235,7 +235,7 @@ function addEvents() { self[internalStateSymbol].setSubject({ loaded: true, - error: self[referenceSymbol][self.constructor.getURLAttribute()] + ' is not available', + error: `${self[referenceSymbol][self.constructor.getURLAttribute()]} is not available`, }) return; diff --git a/application/source/dom/resourcemanager.mjs b/application/source/dom/resourcemanager.mjs index c588d4aca..cb05a63c5 100644 --- a/application/source/dom/resourcemanager.mjs +++ b/application/source/dom/resourcemanager.mjs @@ -141,7 +141,7 @@ function runResourceMethod(method) { const result = []; for (const type of ['scripts', 'stylesheets', 'data']) { - const resources = self.getOption('resources.' + type); + const resources = self.getOption(`resources.${type}`); if (!isArray(resources)) { continue; } @@ -188,7 +188,7 @@ function addResource(type, url, options) { resource = new Data(extend({}, options, {[ATTRIBUTE_SRC]: url})) break; default: - throw new Error('unsupported type ' + type) + throw new Error(`unsupported type ${type}`) } (self.getOption('resources')?.[type]).push(resource); diff --git a/application/source/dom/template.mjs b/application/source/dom/template.mjs index 31365101d..a5c482755 100644 --- a/application/source/dom/template.mjs +++ b/application/source/dom/template.mjs @@ -165,7 +165,7 @@ export function findDocumentTemplate(id, currentNode) { let theme = getDocumentTheme() if (prefixID) { - let themedPrefixID = prefixID + '-' + id + '-' + theme.getName(); + let themedPrefixID = `${prefixID}-${id}-${theme.getName()}`; // current + themedPrefixID template = currentNode.getElementById(themedPrefixID); @@ -180,7 +180,7 @@ export function findDocumentTemplate(id, currentNode) { } } - let themedID = id + '-' + theme.getName(); + let themedID = `${id}-${theme.getName()}`; // current + themedID template = currentNode.getElementById(themedID); @@ -206,6 +206,6 @@ export function findDocumentTemplate(id, currentNode) { return new Template(template); } - throw new Error("template " + id + " not found.") + throw new Error(`template ${id} not found.`) } diff --git a/application/source/dom/updater.mjs b/application/source/dom/updater.mjs index 6e068ae99..364c8eea5 100644 --- a/application/source/dom/updater.mjs +++ b/application/source/dom/updater.mjs @@ -237,7 +237,7 @@ function getCheckStateCallback() { // this is a reference to the current object (therefore no array function here) if (this instanceof HTMLInputElement) { if (['radio', 'checkbox'].indexOf(this.type) !== -1) { - return (this.value + "" === current + "") ? 'true' : undefined + return (`${this.value}` === `${current}`) ? 'true' : undefined } } else if (this instanceof HTMLOptionElement) { @@ -372,11 +372,11 @@ function retrieveAndSetValue(element) { function retrieveFromBindings() { const self = this; - if (self[internalSymbol].element.matches('[' + ATTRIBUTE_UPDATER_BIND + ']')) { + if (self[internalSymbol].element.matches(`[${ATTRIBUTE_UPDATER_BIND}]`)) { retrieveAndSetValue.call(self, self[internalSymbol].element) } - for (const [, element] of self[internalSymbol].element.querySelectorAll('[' + ATTRIBUTE_UPDATER_BIND + ']').entries()) { + for (const [, element] of self[internalSymbol].element.querySelectorAll(`[${ATTRIBUTE_UPDATER_BIND}]`).entries()) { retrieveAndSetValue.call(self, element) } @@ -392,7 +392,7 @@ function retrieveFromBindings() { function removeElement(change) { const self = this; - for (const [, element] of self[internalSymbol].element.querySelectorAll(':scope [' + ATTRIBUTE_UPDATER_REMOVE + ']').entries()) { + for (const [, element] of self[internalSymbol].element.querySelectorAll(`:scope [${ATTRIBUTE_UPDATER_REMOVE}]`).entries()) { element.parentNode.removeChild(element); } } @@ -430,7 +430,7 @@ function insertElement(change) { const current = p.join('.'); let iterator = new Set; - const query = '[' + ATTRIBUTE_UPDATER_INSERT + '*="path:' + current + '"]'; + const query = `[${ATTRIBUTE_UPDATER_INSERT}*="path:${current}"]`; const e = container.querySelectorAll(query); @@ -455,7 +455,7 @@ function insertElement(change) { let def = trimSpaces(attributes); let i = def.indexOf(' '); let key = trimSpaces(def.substr(0, i)); - let refPrefix = key + '-'; + let refPrefix = `${key}-`; let cmd = trimSpaces(def.substr(i)); // this case is actually excluded by the query but is nevertheless checked again here @@ -491,10 +491,10 @@ function insertElement(change) { for (const [i, obj] of Object.entries(value)) { let ref = refPrefix + i; - let currentPath = dataPath + "." + i; + let currentPath = `${dataPath}.${i}`; available.add(ref); - let refElement = containerElement.querySelector('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '="' + ref + '"]'); + let refElement = containerElement.querySelector(`[${ATTRIBUTE_UPDATER_INSERT_REFERENCE}="${ref}"]`); if (refElement instanceof HTMLElement) { insertPoint = refElement; @@ -504,13 +504,13 @@ function insertElement(change) { appendNewDocumentFragment(containerElement, key, ref, currentPath); } - let nodes = containerElement.querySelectorAll('[' + ATTRIBUTE_UPDATER_INSERT_REFERENCE + '*="' + refPrefix + '"]'); + let nodes = containerElement.querySelectorAll(`[${ATTRIBUTE_UPDATER_INSERT_REFERENCE}*="${refPrefix}"]`); for (const [, node] of Object.entries(nodes)) { if (!available.has(node.getAttribute(ATTRIBUTE_UPDATER_INSERT_REFERENCE))) { try { containerElement.removeChild(node); } catch (e) { - containerElement.setAttribute(ATTRIBUTE_ERRORMESSAGE, (containerElement.getAttribute(ATTRIBUTE_ERRORMESSAGE) + ", " + e.message).trim()); + containerElement.setAttribute(ATTRIBUTE_ERRORMESSAGE, (`${containerElement.getAttribute(ATTRIBUTE_ERRORMESSAGE)}, ${e.message}`).trim()); } } @@ -570,12 +570,12 @@ function applyRecursive(node, key, path) { if (node.hasAttribute(ATTRIBUTE_UPDATER_REPLACE)) { let value = node.getAttribute(ATTRIBUTE_UPDATER_REPLACE); - node.setAttribute(ATTRIBUTE_UPDATER_REPLACE, value.replaceAll("path:" + key, "path:" + path)); + node.setAttribute(ATTRIBUTE_UPDATER_REPLACE, value.replaceAll(`path:${key}`, `path:${path}`)); } if (node.hasAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES)) { let value = node.getAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES); - node.setAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES, value.replaceAll("path:" + key, "path:" + path)); + node.setAttribute(ATTRIBUTE_UPDATER_ATTRIBUTES, value.replaceAll(`path:${key}`, `path:${path}`)); } for (const [, child] of Object.entries(node.childNodes)) { @@ -630,8 +630,8 @@ function runUpdateContent(container, parts, subject) { parts.pop(); // Unfortunately, static data is always changed as well, since it is not possible to react to changes here. - const query = '[' + ATTRIBUTE_UPDATER_REPLACE + '^="path:' + current + '"], [' + ATTRIBUTE_UPDATER_REPLACE + '^="static:"]'; - const e = container.querySelectorAll('' + query); + const query = `[${ATTRIBUTE_UPDATER_REPLACE}^="path:${current}"], [${ATTRIBUTE_UPDATER_REPLACE}^="static:"]`; + const e = container.querySelectorAll(`${query}`); const iterator = new Set([ ...e @@ -673,7 +673,7 @@ function runUpdateContent(container, parts, subject) { try { element.appendChild(value); } catch (e) { - element.setAttribute(ATTRIBUTE_ERRORMESSAGE, (element.getAttribute(ATTRIBUTE_ERRORMESSAGE) + ", " + e.message).trim()); + element.setAttribute(ATTRIBUTE_ERRORMESSAGE, (`${element.getAttribute(ATTRIBUTE_ERRORMESSAGE)}, ${e.message}`).trim()); } } else { @@ -724,7 +724,7 @@ function runUpdateAttributes(container, parts, subject) { let iterator = new Set; - const query = '[' + ATTRIBUTE_UPDATER_SELECT_THIS + '], [' + ATTRIBUTE_UPDATER_ATTRIBUTES + '*="path:' + current + '"], [' + ATTRIBUTE_UPDATER_ATTRIBUTES + '^="static:"]'; + const query = `[${ATTRIBUTE_UPDATER_SELECT_THIS}], [${ATTRIBUTE_UPDATER_ATTRIBUTES}*="path:${current}"], [${ATTRIBUTE_UPDATER_ATTRIBUTES}^="static:"]`; const e = container.querySelectorAll(query); @@ -903,7 +903,7 @@ function addObjectWithUpdaterToElement (elements,symbol, object) { ]) } else if (elements instanceof Set) { } else { - throw new TypeError('elements is not a valid type. (actual: ' + typeof elements + ')'); + throw new TypeError(`elements is not a valid type. (actual: ${typeof elements})`); } let result = []; diff --git a/application/source/i18n/formatter.mjs b/application/source/i18n/formatter.mjs index 22f1c4f58..281a40806 100644 --- a/application/source/i18n/formatter.mjs +++ b/application/source/i18n/formatter.mjs @@ -97,9 +97,9 @@ class Formatter extends TextFormatter { const parameter = parts.join('::').trim(); - let assembledText = openMarker + 'static:' + translationKey + ' | call:i18n'; + let assembledText = `${openMarker}static:${translationKey} | call:i18n`; if (parameter.length > 0) { - assembledText += '::' + parameter; + assembledText += `::${parameter}`; } assembledText += closeMarker; return super.format(assembledText); diff --git a/application/source/i18n/locale.mjs b/application/source/i18n/locale.mjs index 7079981e1..f93009465 100644 --- a/application/source/i18n/locale.mjs +++ b/application/source/i18n/locale.mjs @@ -156,7 +156,7 @@ class Locale extends Base { * @return {string} */ toString() { - return "" + this.localeString; + return `${this.localeString}`; } /** @@ -266,21 +266,27 @@ function parseLocale(locale) { locale = validateString(locale).replace(/_/g, "-"); - let language, region, variants, parts, script, extlang, - regexRegular = "(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)", - regexIrregular = "(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)", - regexGrandfathered = "(" + regexIrregular + "|" + regexRegular + ")", - regexPrivateUse = "(x(-[A-Za-z0-9]{1,8})+)", - regexSingleton = "[0-9A-WY-Za-wy-z]", - regexExtension = "(" + regexSingleton + "(-[A-Za-z0-9]{2,8})+)", - regexVariant = "([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3})", - regexRegion = "([A-Za-z]{2}|[0-9]{3})", - regexScript = "([A-Za-z]{4})", - regexExtlang = "([A-Za-z]{3}(-[A-Za-z]{3}){0,2})", - regexLanguage = "(([A-Za-z]{2,3}(-" + regexExtlang + ")?)|[A-Za-z]{4}|[A-Za-z]{5,8})", - regexLangtag = "(" + regexLanguage + "(-" + regexScript + ")?" + "(-" + regexRegion + ")?" + "(-" + regexVariant + ")*" + "(-" + regexExtension + ")*" + "(-" + regexPrivateUse + ")?" + ")", - regexLanguageTag = "^(" + regexGrandfathered + "|" + regexLangtag + "|" + regexPrivateUse + ")$", - regex = new RegExp(regexLanguageTag), match; + let language; + let region; + let variants; + let parts; + let script; + let extlang; + let regexRegular = "(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)"; + let regexIrregular = "(en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)"; + let regexGrandfathered = `(${regexIrregular}|${regexRegular})`; + let regexPrivateUse = "(x(-[A-Za-z0-9]{1,8})+)"; + let regexSingleton = "[0-9A-WY-Za-wy-z]"; + let regexExtension = `(${regexSingleton}(-[A-Za-z0-9]{2,8})+)`; + let regexVariant = "([A-Za-z0-9]{5,8}|[0-9][A-Za-z0-9]{3})"; + let regexRegion = "([A-Za-z]{2}|[0-9]{3})"; + let regexScript = "([A-Za-z]{4})"; + let regexExtlang = "([A-Za-z]{3}(-[A-Za-z]{3}){0,2})"; + let regexLanguage = `(([A-Za-z]{2,3}(-${regexExtlang})?)|[A-Za-z]{4}|[A-Za-z]{5,8})`; + let regexLangtag = `(${regexLanguage}(-${regexScript})?(-${regexRegion})?(-${regexVariant})*(-${regexExtension})*(-${regexPrivateUse})?)`; + let regexLanguageTag = `^(${regexGrandfathered}|${regexLangtag}|${regexPrivateUse})$`; + let regex = new RegExp(regexLanguageTag); + let match; if ((match = regex.exec(locale)) !== null) { diff --git a/application/source/i18n/translations.mjs b/application/source/i18n/translations.mjs index 6f8c15b33..be020dd56 100644 --- a/application/source/i18n/translations.mjs +++ b/application/source/i18n/translations.mjs @@ -53,7 +53,7 @@ class Translations extends Base { getText(key, defaultText) { if (!this.storage.has(key)) { if (defaultText === undefined) { - throw new Error('key ' + key + ' not found'); + throw new Error(`key ${key} not found`); } return validateString(defaultText); diff --git a/application/source/logging/logger.mjs b/application/source/logging/logger.mjs index d45b108f7..c4e3a6af0 100644 --- a/application/source/logging/logger.mjs +++ b/application/source/logging/logger.mjs @@ -121,8 +121,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logTrace() { - triggerLog.apply(this, [TRACE, ...arguments]); + logTrace(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [TRACE, ...args]); return this; }; @@ -135,8 +140,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logDebug() { - triggerLog.apply(this, [DEBUG, ...arguments]); + logDebug(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [DEBUG, ...args]); return this; }; @@ -150,8 +160,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logInfo() { - triggerLog.apply(this, [INFO, ...arguments]); + logInfo(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [INFO, ...args]); return this; }; @@ -164,8 +179,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logWarn() { - triggerLog.apply(this, [WARN, ...arguments]); + logWarn(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [WARN, ...args]); return this; }; @@ -178,8 +198,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logError() { - triggerLog.apply(this, [ERROR, ...arguments]); + logError(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [ERROR, ...args]); return this; }; @@ -192,8 +217,13 @@ class Logger extends Base { * @returns {Logger} * @since 1.5.0 */ - logFatal() { - triggerLog.apply(this, [FATAL, ...arguments]); + logFatal(...args) { + + if (typeof args !== 'object' || args[0] === null) { + throw new Error('the first argument must be an object') + } + + triggerLog.apply(this, [FATAL, ...args]); return this; }; diff --git a/application/source/text/formatter.mjs b/application/source/text/formatter.mjs index 119987d40..72ca51782 100644 --- a/application/source/text/formatter.mjs +++ b/application/source/text/formatter.mjs @@ -304,7 +304,6 @@ function tokenize(text, openMarker, closeMarker) { if (endIndex === -1) { throw new Error("syntax error in formatter template") - return; } let key = text.substring(openMarker.length, endIndex); diff --git a/application/source/types/dataurl.mjs b/application/source/types/dataurl.mjs index 89d1e33f1..b67536a0d 100644 --- a/application/source/types/dataurl.mjs +++ b/application/source/types/dataurl.mjs @@ -81,12 +81,12 @@ class DataUrl extends Base { let content = this[internal].content; if (this[internal].base64 === true) { - content = ';base64,' + content; + content = `;base64,${content}`; } else { - content = ',' + encodeURIComponent(content); + content = `,${encodeURIComponent(content)}`; } - return 'data:' + this[internal].mediatype.toString() + content; + return `data:${this[internal].mediatype.toString()}${content}`; } } diff --git a/application/source/types/global.mjs b/application/source/types/global.mjs index f15db1abb..3ebddaa35 100644 --- a/application/source/types/global.mjs +++ b/application/source/types/global.mjs @@ -112,7 +112,7 @@ function getGlobal() { function getGlobalObject(name) { validateString(name); let o = globalReference?.[name]; - if (typeof o === 'undefined') throw new Error('the object ' + name + ' is not defined'); + if (typeof o === 'undefined') throw new Error(`the object ${name} is not defined`); validateObject(o); return o; } @@ -150,7 +150,7 @@ function getGlobalObject(name) { function getGlobalFunction(name) { validateString(name); let f = globalReference?.[name]; - if (typeof f === 'undefined') throw new Error('the function ' + name + ' is not defined'); + if (typeof f === 'undefined') throw new Error(`the function ${name} is not defined`); validateFunction(f); return f; } diff --git a/application/source/types/mediatype.mjs b/application/source/types/mediatype.mjs index 5d0c8da52..e188eba44 100644 --- a/application/source/types/mediatype.mjs +++ b/application/source/types/mediatype.mjs @@ -121,10 +121,10 @@ class MediaType extends Base { let parameter = []; for (let a of this[internal].parameter) { - parameter.push(a.key + '=' + a.value); + parameter.push(`${a.key}=${a.value}`); } - return this[internal].type + '/' + this[internal].subtype + (parameter.length > 0 ? ';' + parameter.join(';') : ''); + return `${this[internal].type}/${this[internal].subtype}${(parameter.length > 0 ? `;${parameter.join(';')}` : '')}`; } } diff --git a/application/source/types/node.mjs b/application/source/types/node.mjs index 52a3c75d9..ac2ab5fd1 100644 --- a/application/source/types/node.mjs +++ b/application/source/types/node.mjs @@ -168,8 +168,8 @@ class Node extends Base { return parts.join("\n"); } - let count = this.childNodes.length, - counter = 0; + let count = this.childNodes.length; + let counter = 0; for (const node of this.childNodes) { counter++; diff --git a/application/source/types/nodelist.mjs b/application/source/types/nodelist.mjs index 24e0aba55..1c432b4ba 100644 --- a/application/source/types/nodelist.mjs +++ b/application/source/types/nodelist.mjs @@ -79,7 +79,6 @@ class NodeList extends Set { */ has(node) { return super.has(validateInstance(node, Node)); - return false; } /** diff --git a/application/source/types/observerlist.mjs b/application/source/types/observerlist.mjs index 249baa7a8..10e1797fd 100644 --- a/application/source/types/observerlist.mjs +++ b/application/source/types/observerlist.mjs @@ -54,7 +54,8 @@ class ObserverList extends Base { detach(observer) { validateInstance(observer, Observer) - var i = 0, l = this.observers.length; + var i = 0; + var l = this.observers.length; for (; i < l; i++) { if (this.observers[i] === observer) { this.observers.splice(i, 1); @@ -72,7 +73,8 @@ class ObserverList extends Base { */ contains(observer) { validateInstance(observer, Observer) - var i = 0, l = this.observers.length; + var i = 0; + var l = this.observers.length; for (; i < l; i++) { if (this.observers[i] === observer) { return true; @@ -90,7 +92,8 @@ class ObserverList extends Base { let pomises = [] - let i = 0, l = this.observers.length; + let i = 0; + let l = this.observers.length; for (; i < l; i++) { pomises.push(this.observers[i].update(subject)); } diff --git a/application/source/types/proxyobserver.mjs b/application/source/types/proxyobserver.mjs index dfb997c12..9cb536054 100644 --- a/application/source/types/proxyobserver.mjs +++ b/application/source/types/proxyobserver.mjs @@ -78,7 +78,8 @@ export {ProxyObserver} */ setSubject(obj) { - let i, k = Object.keys(this.subject); + let i; + let k = Object.keys(this.subject); for (i = 0; i < k.length; i++) { delete this.subject[k[i]]; } diff --git a/application/source/types/uuid.mjs b/application/source/types/uuid.mjs index 52b9ef288..96ad59b04 100644 --- a/application/source/types/uuid.mjs +++ b/application/source/types/uuid.mjs @@ -64,8 +64,8 @@ export {UUID} */ function createWithRandom() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = random(0, 65000) * 16 | 0, - v = ((c === 'x') ? r : (r & 0x3 | 0x8)); + const r = random(0, 65000) * 16 | 0; + const v = ((c === 'x') ? r : (r & 0x3 | 0x8)); return v.toString(16)[0]; }) } diff --git a/application/source/types/validate.mjs b/application/source/types/validate.mjs index 2803df9a6..4abf40192 100644 --- a/application/source/types/validate.mjs +++ b/application/source/types/validate.mjs @@ -199,10 +199,10 @@ function validateInstance(value, instance) { } if (n) { - n = " " + n; + n = ` ${n}`; } - throw new TypeError('value is not an instance of' + n) + throw new TypeError(`value is not an instance of${n}`) } return value } diff --git a/application/source/types/version.mjs b/application/source/types/version.mjs index 715905f57..6c8f68660 100644 --- a/application/source/types/version.mjs +++ b/application/source/types/version.mjs @@ -89,7 +89,7 @@ class Version extends Base { * @returns {string} */ toString() { - return this.major + '.' + this.minor + '.' + this.patch; + return `${this.major}.${this.minor}.${this.patch}`; } /** diff --git a/application/source/util/clone.mjs b/application/source/util/clone.mjs index f8284703b..584ec09a6 100644 --- a/application/source/util/clone.mjs +++ b/application/source/util/clone.mjs @@ -105,11 +105,11 @@ function cloneObject(obj) { validateObject(obj); - const constructor = obj?.['constructor']; + const fkt = obj?.['constructor']; /** Object has clone method */ - if(typeOf(constructor)==='function') { - const prototype = constructor?.prototype; + if(typeOf(fkt)==='function') { + const prototype = fkt?.prototype; if(typeof prototype==='object') { if(prototype.hasOwnProperty('getClone')&& typeOf(obj.getClone) === 'function') { return obj.getClone(); diff --git a/application/source/util/processing.mjs b/application/source/util/processing.mjs index 8d33a0fa8..36a1eb275 100644 --- a/application/source/util/processing.mjs +++ b/application/source/util/processing.mjs @@ -98,7 +98,7 @@ class Processing extends Base { * @param {function} callback Callback * @throw {TypeError} the arguments must be either integer or functions */ - constructor() { + constructor(...args) { super(); this[internalSymbol] = { @@ -107,7 +107,11 @@ class Processing extends Base { let time = 0 - for (const [, arg] of Object.entries(arguments)) { + if (typeof args !== 'object' || args[0] === null) { + throw new TypeError('the arguments must be either integer or functions') + } + + for (const [, arg] of Object.entries(args)) { if (isInteger(arg) && arg >= 0) { time = arg; } else if (isFunction(arg)) { diff --git a/application/source/util/trimspaces.mjs b/application/source/util/trimspaces.mjs index 8ae763235..d10d44acd 100644 --- a/application/source/util/trimspaces.mjs +++ b/application/source/util/trimspaces.mjs @@ -60,7 +60,7 @@ export {trimSpaces} let c = g?.['char']; if (p && c) { - let r = '__' + new ID().toString() + '__'; + let r = `__${new ID().toString()}__`; placeholder.set(r, c); value = value.replace(p, r); } @@ -69,7 +69,7 @@ export {trimSpaces} value = value.trim(); placeholder.forEach((v, k) => { - value = value.replace(k, '\\' + v) + value = value.replace(k, `\\${v}`) }) return value; diff --git a/development/package.json b/development/package.json index 044b52565..0afe0db91 100644 --- a/development/package.json +++ b/development/package.json @@ -39,6 +39,7 @@ "jsdom-global": "^3.0.2", "mocha": "^10.2.0", "node-plantuml": "^0.9.0", + "rome": "^11.0.0", "sinon": "^15.0.1", "url": "^0.11.0", "url-exist": "3.0.1", diff --git a/development/pnpm-lock.yaml b/development/pnpm-lock.yaml index 1be6447f8..0c600c5c4 100644 --- a/development/pnpm-lock.yaml +++ b/development/pnpm-lock.yaml @@ -20,6 +20,7 @@ specifiers: jsdom-global: ^3.0.2 mocha: ^10.2.0 node-plantuml: ^0.9.0 + rome: ^11.0.0 sinon: ^15.0.1 url: ^0.11.0 url-exist: 3.0.1 @@ -46,6 +47,7 @@ devDependencies: jsdom-global: 3.0.2_jsdom@21.1.0 mocha: 10.2.0 node-plantuml: 0.9.0 + rome: 11.0.0 sinon: 15.0.1 url: 0.11.0 url-exist: 3.0.1 @@ -557,6 +559,54 @@ packages: webcrypto-core: 1.7.5 dev: true + /@rometools/cli-darwin-arm64/11.0.0: + resolution: {integrity: sha512-F3vkdY+s3FLIEnAjSbyHTuIPB88cLpccimW4ecid5I7S6GzGG3iUJI4xT00JhH73K4P/qW20/9r+kH1T9Du8Xg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rometools/cli-darwin-x64/11.0.0: + resolution: {integrity: sha512-X6jhtS6Iml4GOzgNtnLwIp/KXXhSdqeVyfv69m/AHnIzx3gQAjPZ7BPnJLvTCbhe4SKHL+uTZYFSCJpkUUKE6w==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rometools/cli-linux-arm64/11.0.0: + resolution: {integrity: sha512-dktTJJlTpmycBZ2TwhJBcAO8ztK8DdevdyZnFFxdYRvtmJgTjIsC2UFayf/SbKew8B8q1IhI0it+D6ihAeIpeg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rometools/cli-linux-x64/11.0.0: + resolution: {integrity: sha512-WVcnXPNdWGUWo0p4NU8YzuthjYR7q+b4vRcjdxtP1DlpphZmSsoC/RSE85nEqRAz8hChcKUansVzOPM8BSsuGA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rometools/cli-win32-arm64/11.0.0: + resolution: {integrity: sha512-tPj6RThQzS7Q45jqQll7NlTYvNcsg/BEP3LYiiazqSh9FAFnMkrV6ewUcMPKWyAfiyLs7jlz4rRvdNRUSygzfQ==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rometools/cli-win32-x64/11.0.0: + resolution: {integrity: sha512-bmBai8WHxYjsGk1+je7ZTfCUCWq30WJI3pQM8pzTA674lfGTZ9ymJoZwTaIMSO4rL5V9mlO6uLunsBKso9VqOg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@sinonjs/commons/2.0.0: resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: @@ -2379,6 +2429,20 @@ packages: glob: 7.2.3 dev: true + /rome/11.0.0: + resolution: {integrity: sha512-rRo6JOwpMLc3OkeTDRXkrmrDqnxDvZ75GS4f0jLDBNmRgDXWbu0F8eVnJoRn+VbK2AE7vWvhVOMBjnWowcopkQ==} + engines: {node: '>=14.*'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@rometools/cli-darwin-arm64': 11.0.0 + '@rometools/cli-darwin-x64': 11.0.0 + '@rometools/cli-linux-arm64': 11.0.0 + '@rometools/cli-linux-x64': 11.0.0 + '@rometools/cli-win32-arm64': 11.0.0 + '@rometools/cli-win32-x64': 11.0.0 + dev: true + /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true diff --git a/development/rome.json b/development/rome.json new file mode 100644 index 000000000..5f1dba025 --- /dev/null +++ b/development/rome.json @@ -0,0 +1,12 @@ +{ + "$schema": "./node_modules/rome/configuration_schema.json", + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "performance": { + "noDelete": "off" + } + } + } +} \ No newline at end of file -- GitLab