Fix JS linting workflow (#4915)

* Add bad .js code

- Call function which has not been defined
- Should throw JS lint error

* update eslint

- Move to newer version of eslint
- Change default rules

* Fixes for tables.js

* Fixes for table_filters.js

* Fixes for stock.js

* Fix for sales_order.js and search.js

* Fix return_order.js

* Fixes for purchase_order.js

* More updates

- part.js
- plugin.js
- pricing.js

* Updates

- order.js

* Even morerer updates

- label.js
- modals.js
- model_renderers.js
- news.js
- notification.js

* More, MORE!

- build.js
- company.js
- charts.js
- filters.js
- forms.js
- helpers.js

* Final?

- api.js
- attachment.js
- barcode.js
- bom.js

* Fix 'useless-escape'

* Disable no-useless-escape rule
This commit is contained in:
Oliver 2023-05-30 22:55:53 +10:00 committed by GitHub
parent 0808382d06
commit 92930d475c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 1190 additions and 130 deletions

View File

@ -4,7 +4,7 @@ env:
es2021: true es2021: true
jquery: true jquery: true
extends: extends:
- google - eslint:recommended
parserOptions: parserOptions:
ecmaVersion: 12 ecmaVersion: 12
rules: rules:
@ -19,6 +19,8 @@ rules:
valid-jsdoc: off valid-jsdoc: off
no-multiple-empty-lines: off no-multiple-empty-lines: off
comma-dangle: off comma-dangle: off
no-unused-vars: off
no-useless-escape: off
prefer-spread: off prefer-spread: off
indent: indent:
- error - error

View File

@ -2,6 +2,7 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
showMessage,
*/ */
/* exported /* exported

View File

@ -1,7 +1,17 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
constructForm,
getTableData,
enableDragAndDrop,
makeDeleteButton,
makeEditButton,
makeIcon,
reloadBootstrapTable,
renderDate,
renderLink, renderLink,
setupFilterList,
showApiError,
wrapButtons, wrapButtons,
*/ */

View File

@ -1,15 +1,26 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
createNewModal,
global_settings,
handleFormError,
handleFormSuccess,
Html5Qrcode,
Html5QrcodeScannerState,
imageHoverIcon, imageHoverIcon,
inventreeGet,
inventreePut, inventreePut,
makeIcon,
makeRemoveButton,
modalEnable, modalEnable,
modalSetContent, modalSetContent,
modalSetTitle, modalSetTitle,
modalSetSubmitText, modalSetSubmitText,
modalShowSubmitButton, modalShowSubmitButton,
modalSubmit, modalSubmit,
showApiError,
showQuestionDialog, showQuestionDialog,
user_settings,
*/ */
/* exported /* exported
@ -57,8 +68,10 @@ function makeBarcodeInput(placeholderText='', hintText='') {
return html; return html;
} }
qrScanner = null; // Global variables for qrScanner
qrScannerCallback = null; var qrScanner = null;
var qrScannerCallback = null;
function startQrScanner() { function startQrScanner() {
$('#barcode_scan_video_container').show(); $('#barcode_scan_video_container').show();

View File

@ -1,16 +1,46 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
addFieldErrorMessage,
constructField,
constructForm, constructForm,
constructFormBody,
createNewModal,
enableSubmitButton,
exportFormatOptions, exportFormatOptions,
formatDecimal,
formatPriceRange,
getApiEndpointOptions,
getFormFieldValue,
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
initializeRelatedField,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut, inventreePut,
inventreeSave,
launchModalForm, launchModalForm,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeIcon,
makeIconBadge,
makeIconButton,
makeInfoButton,
makePartIcons, makePartIcons,
makeRemoveButton,
modalSetContent,
partFields,
partGroups,
renderLink, renderLink,
setupFilterList, setupFilterList,
shortenString,
showApiError,
thumbnailImage,
updateFieldValue,
withTitle,
wrapButtons,
yesNoLabel, yesNoLabel,
*/ */
@ -226,7 +256,7 @@ function submitBomTable(part_id, options={}) {
items: rows, items: rows,
}; };
var options = { var opts = {
nested: { nested: {
items: idx_values, items: idx_values,
} }
@ -247,7 +277,7 @@ function submitBomTable(part_id, options={}) {
error: function(xhr) { error: function(xhr) {
switch (xhr.status) { switch (xhr.status) {
case 400: case 400:
handleFormErrors(xhr.responseJSON, fields, options); handleFormErrors(xhr.responseJSON, fields, opts);
break; break;
default: default:
showApiError(xhr, url); showApiError(xhr, url);
@ -1092,7 +1122,7 @@ function loadBomTable(table, options={}) {
if (any_pricing) { if (any_pricing) {
var html = formatPriceRange(min_price, max_price); let html = formatPriceRange(min_price, max_price);
if (complete_pricing) { if (complete_pricing) {
html += makeIconBadge( html += makeIconBadge(
@ -1109,7 +1139,7 @@ function loadBomTable(table, options={}) {
return html; return html;
} else { } else {
var html = '<em>{% trans "No pricing available" %}</em>'; let html = '<em>{% trans "No pricing available" %}</em>';
html += makeIconBadge('fa-times-circle icon-red'); html += makeIconBadge('fa-times-circle icon-red');
return html; return html;

View File

@ -2,19 +2,49 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
addClearCallback,
buildStatusDisplay, buildStatusDisplay,
clearEvents,
constructExpandCollapseButtons,
constructField,
constructForm, constructForm,
constructOrderTableButtons,
endDate,
formatDecimal,
FullCalendar,
getFormFieldValue,
getTableData,0
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
initializeRelatedField,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut,
launchModalForm, launchModalForm,
linkButtonsToSelection, linkButtonsToSelection,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeRemoveButton,
makeIconBadge, makeIconBadge,
makeIconButton, makeIconButton,
makePartIcons, makePartIcons,
makeProgressBar, makeProgressBar,
orderParts,
renderDate,
renderLink, renderLink,
setupFilterList, setupFilterList,
shortenString,
showAlertDialog,
showApiError,
startDate,
stockStatusDisplay,
showApiErrors,
thumbnailImage,
updateFieldValue,
wrapButtons,
yesNoLabel,
*/ */
/* exported /* exported
@ -675,9 +705,9 @@ function scrapBuildOutputs(build_id, outputs, options={}) {
<div class='alert alert-block alert-danger'> <div class='alert alert-block alert-danger'>
{% trans "Selected build outputs will be marked as scrapped" %} {% trans "Selected build outputs will be marked as scrapped" %}
<ul> <ul>
<li>{% trans "Scrapped output are given the 'rejected' status" %}</li> <li>{% trans "Scrapped output are marked as rejected" %}</li>
<li>{% trans "Allocated stock items will no longer be available" %}</li> <li>{% trans "Allocated stock items will no longer be available" %}</li>
<li>{% trans "The completion status of the build order will not be adjusted" %}</li> <li>{% trans "The completion status of the build order will not be adjusted" %}</li>
</ul> </ul>
</div> </div>
<table class='table table-striped table-condensed' id='build-scrap-table'> <table class='table table-striped table-condensed' id='build-scrap-table'>
@ -2687,6 +2717,8 @@ function loadBuildTable(table, options) {
var filters = loadTableFilters('build', params); var filters = loadTableFilters('build', params);
var calendar = null;
var filterTarget = options.filterTarget || null; var filterTarget = options.filterTarget || null;
setupFilterList('build', table, filterTarget, { setupFilterList('build', table, filterTarget, {
@ -2944,7 +2976,7 @@ function loadBuildTable(table, options) {
if (!loaded_calendar) { if (!loaded_calendar) {
loaded_calendar = true; loaded_calendar = true;
var el = document.getElementById('build-order-calendar'); let el = document.getElementById('build-order-calendar');
calendar = new FullCalendar.Calendar(el, { calendar = new FullCalendar.Calendar(el, {
initialView: 'dayGridMonth', initialView: 'dayGridMonth',

View File

@ -2,6 +2,7 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
Chart,
*/ */
/* exported /* exported

View File

@ -1,11 +1,26 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
constructLabel,
constructForm, constructForm,
formatCurrency,
formatDecimal,
formatDate,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
inventreeGet,
inventreePut,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeIconBadge,
renderClipboard,
renderDate,
renderLink, renderLink,
renderPart,
setupFilterList, setupFilterList,
thumbnailImage,
wrapButtons,
*/ */
/* exported /* exported
@ -369,7 +384,6 @@ function createSupplierPartPriceBreak(part_id, options={}) {
constructForm('{% url "api-part-supplier-price-list" %}', { constructForm('{% url "api-part-supplier-price-list" %}', {
fields: fields, fields: fields,
method: 'POST', method: 'POST',
fields: fields,
title: '{% trans "Add Price Break" %}', title: '{% trans "Add Price Break" %}',
onSuccess: function(response) { onSuccess: function(response) {
handleFormSuccess(response, options); handleFormSuccess(response, options);
@ -634,6 +648,7 @@ function deleteContacts(contacts, options={}) {
ids.push(contact.pk); ids.push(contact.pk);
}); });
// eslint-disable-next-line no-useless-escape
let html = ` let html = `
<div class='alert alert-block alert-danger'> <div class='alert alert-block alert-danger'>
{% trans "All selected contacts will be deleted" %} {% trans "All selected contacts will be deleted" %}

View File

@ -1,9 +1,14 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
downloadTableData,
getAvailableTableFilters, getAvailableTableFilters,
getTableData,
global_settings,
inventreeLoad, inventreeLoad,
inventreeSave, inventreeSave,
printLabels,
printReports,
reloadTableFilters, reloadTableFilters,
*/ */

View File

@ -3,6 +3,8 @@
/* globals /* globals
createNewModal, createNewModal,
enableSubmitButton,
formatDecimal,
inventreeFormDataUpload, inventreeFormDataUpload,
inventreeGet, inventreeGet,
inventreePut, inventreePut,
@ -10,8 +12,12 @@
modalEnable, modalEnable,
modalShowSubmitButton, modalShowSubmitButton,
getModelRenderer, getModelRenderer,
reloadBootstrapTable,
sanitizeInputString,
showAlertOrCache, showAlertOrCache,
showApiError, showApiError,
showMessage,
showModalSpinner,
*/ */
/* exported /* exported
@ -617,10 +623,12 @@ function constructFormBody(fields, options) {
if (options.preFormContent) { if (options.preFormContent) {
let content = '';
if (typeof(options.preFormContent) === 'function') { if (typeof(options.preFormContent) === 'function') {
var content = options.preFormContent(options); content = options.preFormContent(options);
} else { } else {
var content = options.preFormContent; content = options.preFormContent;
} }
$(modal).find('#pre-form-content').html(content); $(modal).find('#pre-form-content').html(content);
@ -1270,7 +1278,7 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
// Nest list must be provided! // Nest list must be provided!
if (!nest_list) { if (!nest_list) {
console.warn(`handleNestedArrayErrors missing nesting options for field '${fieldName}'`); console.warn(`handleNestedArrayErrors missing nesting options for field '${field_name}'`);
return; return;
} }
@ -1287,9 +1295,9 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
var nest_id = nest_list[idx]; var nest_id = nest_list[idx];
// Here, error_item is a map of field names to error messages // Here, error_item is a map of field names to error messages
for (sub_field_name in error_item) { for (var sub_field_name in error_item) {
var errors = error_item[sub_field_name]; var sub_errors = error_item[sub_field_name];
if (sub_field_name == 'non_field_errors') { if (sub_field_name == 'non_field_errors') {
@ -1301,11 +1309,11 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
row = $(`#items_${nest_id}`); row = $(`#items_${nest_id}`);
} }
for (var ii = errors.length - 1; ii >= 0; ii--) { for (var ii = sub_errors.length - 1; ii >= 0; ii--) {
var html = ` var html = `
<div id='error_${ii}_non_field_error' class='help-block form-field-error form-error-message'> <div id='error_${ii}_non_field_error' class='help-block form-field-error form-error-message'>
<strong>${errors[ii]}</strong> <strong>${sub_errors[ii]}</strong>
</div>`; </div>`;
row.after(html); row.after(html);
@ -1443,7 +1451,7 @@ function addFieldErrorMessage(name, error_text, error_idx=0, options={}) {
return; return;
} }
field_name = getFieldName(name, options); let field_name = getFieldName(name, options);
var field_dom = null; var field_dom = null;
@ -2336,6 +2344,7 @@ function constructInput(name, parameters, options={}) {
break; break;
case 'raw': case 'raw':
func = constructRawInput; func = constructRawInput;
break;
default: default:
// Unsupported field type! // Unsupported field type!
break; break;

View File

@ -1,5 +1,14 @@
{% load i18n %} {% load i18n %}
/* globals
EasyMDE,
inventreeFormDataUpload,
inventreeGet,
inventreePut,
showApiError,
user_settings,
*/
/* exported /* exported
blankImage, blankImage,
deleteButton, deleteButton,
@ -336,8 +345,6 @@ function makeProgressBar(value, maximum, opts={}) {
var id = options.id || 'progress-bar'; var id = options.id || 'progress-bar';
var style = '';
if (opts.max_width) { if (opts.max_width) {
style += `max-width: ${options.max_width}; `; style += `max-width: ${options.max_width}; `;
} }
@ -514,6 +521,7 @@ function sanitizeInputString(s, options={}) {
} }
// Remove ASCII control characters // Remove ASCII control characters
// eslint-disable-next-line no-control-regex
s = s.replace(/[\x00-\x1F\x7F]+/g, ''); s = s.replace(/[\x00-\x1F\x7F]+/g, '');
// Remove Unicode control characters // Remove Unicode control characters

View File

@ -8,10 +8,13 @@
modalEnable, modalEnable,
modalSetContent, modalSetContent,
modalSetTitle, modalSetTitle,
modalShowSubmitButton,
modalSubmit, modalSubmit,
openModal, openModal,
plugins_enabled, plugins_enabled,
showAlertDialog, showAlertDialog,
showMessage,
user_settings,
*/ */
/* exported /* exported
@ -96,10 +99,10 @@ function selectLabel(labels, items, options={}) {
var html = ''; var html = '';
if (items.length > 0) { if (items.length > 0) {
name = items.length == 1 ? options.singular_name : options.plural_name; let item_name = items.length == 1 ? options.singular_name : options.plural_name;
html += ` html += `
<div class='alert alert-block alert-info'> <div class='alert alert-block alert-info'>
${items.length} ${name} {% trans "selected" %} ${items.length} ${item_name} {% trans "selected" %}
</div>`; </div>`;
} }

View File

@ -2,7 +2,9 @@
/* globals /* globals
inventreeGet, inventreeGet,
QRCode,
showAlertOrCache, showAlertOrCache,
user_settings,
*/ */
/* exported /* exported
@ -856,7 +858,7 @@ function insertActionButton(modal, options) {
// check if button already present // check if button already present
var already_present = false; var already_present = false;
for (var child=element[0].firstElementChild; child; child=child.nextElementSibling) { for (var child=element[0].firstElementChild; child; child=child.nextElementSibling) {
if (item.firstElementChild.name == options.name) { if (child.firstElementChild.name == options.name) {
already_present = true; already_present = true;
} }
} }

View File

@ -2,8 +2,11 @@
/* globals /* globals
blankImage, blankImage,
partStockLabel,
renderLink,
select2Thumbnail select2Thumbnail
shortenString shortenString,
user_settings
*/ */
/* exported /* exported

View File

@ -1,6 +1,15 @@
{% load i18n %} {% load i18n %}
{% load inventree_extras %} {% load inventree_extras %}
/* globals
getReadEditButton,
inventreePut,
renderDate,
setupFilterList,
*/
/* exported /* exported
loadNewsFeedTable, loadNewsFeedTable,
*/ */

View File

@ -1,5 +1,14 @@
{% load i18n %} {% load i18n %}
/* globals
inventreeGet,
inventreePut,
renderLink,
setupFilterList,
*/
/* exported /* exported
loadNotificationTable, loadNotificationTable,
startNotificationWatcher, startNotificationWatcher,
@ -69,10 +78,10 @@ function loadNotificationTable(table, options={}, enableDelete=false) {
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
var bRead = getReadEditButton(row.pk, row.read); var bRead = getReadEditButton(row.pk, row.read);
let bDel = '';
if (enableDelete) { if (enableDelete) {
var bDel = `<button title='{% trans "Delete Notification" %}' class='notification-delete btn btn-outline-secondary' type='button' pk='${row.pk}'><span class='fas fa-trash-alt icon-red'></span></button>`; bDel = `<button title='{% trans "Delete Notification" %}' class='notification-delete btn btn-outline-secondary' type='button' pk='${row.pk}'><span class='fas fa-trash-alt icon-red'></span></button>`;
} else {
var bDel = '';
} }
var html = `<div class='btn-group float-right' role='group'>${bRead}${bDel}</div>`; var html = `<div class='btn-group float-right' role='group'>${bRead}${bDel}</div>`;
@ -90,12 +99,13 @@ function loadNotificationTable(table, options={}, enableDelete=false) {
var notificationWatcher = null; // reference for the notificationWatcher var notificationWatcher = null; // reference for the notificationWatcher
/** /**
* start the regular notification checks * start the regular notification checks
**/ **/
function startNotificationWatcher() { function startNotificationWatcher() {
notificationCheck(force=true); notificationCheck(true);
notificationWatcher = setInterval(notificationCheck, 1000); notificationWatcher = setInterval(notificationCheck, 5000);
} }
/** /**
@ -192,7 +202,8 @@ function updateNotificationReadState(btn, panel_caller=false) {
} }
} }
); );
}; }
/** /**
* Returns the html for a read / unread button * Returns the html for a read / unread button
@ -203,17 +214,23 @@ function updateNotificationReadState(btn, panel_caller=false) {
* - small: should the button be small * - small: should the button be small
**/ **/
function getReadEditButton(pk, state, small=false) { function getReadEditButton(pk, state, small=false) {
let bReadText = '';
let bReadIcon = '';
let bReadTarget = '';
if (state) { if (state) {
var bReadText = '{% trans "Mark as unread" %}'; bReadText = '{% trans "Mark as unread" %}';
var bReadIcon = 'fas fa-bookmark icon-red'; bReadIcon = 'fas fa-bookmark icon-red';
var bReadTarget = 'unread'; bReadTarget = 'unread';
} else { } else {
var bReadText = '{% trans "Mark as read" %}'; bReadText = '{% trans "Mark as read" %}';
var bReadIcon = 'far fa-bookmark icon-green'; bReadIcon = 'far fa-bookmark icon-green';
var bReadTarget = 'read'; bReadTarget = 'read';
} }
var style = (small) ? 'btn-sm ' : ''; let style = (small) ? 'btn-sm ' : '';
return `<button title='${bReadText}' class='notification-read btn ${style}btn-outline-secondary float-right' type='button' pk='${pk}' target='${bReadTarget}'><span class='${bReadIcon}'></span></button>`; return `<button title='${bReadText}' class='notification-read btn ${style}btn-outline-secondary float-right' type='button' pk='${pk}' target='${bReadTarget}'><span class='${bReadIcon}'></span></button>`;
} }

View File

@ -2,7 +2,23 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
calculateTotalPrice,
constructForm,
constructFormBody,
exportFormatOptions,
formatCurrency,
getFormFieldValue,
inventreeGet, inventreeGet,
inventreeLoad,
inventreeSave,
loadTableFilters,
makeCopyButton,
makeDeleteButton,
makeEditButton,
reloadBootstrapTable,
renderLink,
setupFilterList,
wrapButtons,
*/ */
/* exported /* exported
@ -138,11 +154,13 @@ function exportOrder(redirect_url, options={}) {
var TotalPriceRef = ''; // reference to total price field var TotalPriceRef = ''; // reference to total price field
var TotalPriceOptions = {}; // options to reload the price var TotalPriceOptions = {}; // options to reload the price
function loadOrderTotal(reference, options={}) { function loadOrderTotal(reference, options={}) {
TotalPriceRef = reference; TotalPriceRef = reference;
TotalPriceOptions = options; TotalPriceOptions = options;
} }
function reloadTotal() { function reloadTotal() {
inventreeGet( inventreeGet(
TotalPriceOptions.url, TotalPriceOptions.url,
@ -153,7 +171,7 @@ function reloadTotal() {
} }
} }
); );
}; }
/* /*

View File

@ -2,19 +2,48 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
baseCurrency,
Chart, Chart,
constructForm, constructForm,
constructFormBody,
convertCurrency,
formatCurrency,
formatDecimal,
formatPriceRange,
getCurrencyConversionRates,
getFormFieldValue,
getTableData,
global_settings, global_settings,
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut, inventreePut,
inventreeSave,
linkButtonsToSelection, linkButtonsToSelection,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeIconBadge, makeIconBadge,
makeIconButton, makeIconButton,
moment,
orderParts,
purchaseOrderStatusDisplay,
receivePurchaseOrderItems,
renderClipboard,
renderDate,
renderLink, renderLink,
setFormGroupVisibility, setFormGroupVisibility,
setupFilterList, setupFilterList,
shortenString,
showAlertDialog,
showApiError,
showMessage,
showModalSpinner,
thumbnailImage,
withTitle,
wrapButtons,
yesNoLabel, yesNoLabel,
*/ */
@ -2300,7 +2329,7 @@ function loadPartTable(table, url, options={}) {
$(table).bootstrapTable('refresh'); $(table).bootstrapTable('refresh');
} }
}; }
// Start the ball rolling // Start the ball rolling
showModalSpinner(opts.modal); showModalSpinner(opts.modal);

View File

@ -3,6 +3,9 @@
/* globals /* globals
constructForm, constructForm,
showMessage,
inventreeGet,
inventreePut,
*/ */
/* exported /* exported
@ -20,7 +23,7 @@ function installPlugin() {
confirm: {}, confirm: {},
}, },
onSuccess: function(data) { onSuccess: function(data) {
msg = '{% trans "The Plugin was installed" %}'; let msg = '{% trans "The Plugin was installed" %}';
showMessage(msg, {style: 'success', details: data.result, timeout: 30000}); showMessage(msg, {style: 'success', details: data.result, timeout: 30000});
} }
}); });

View File

@ -4,6 +4,20 @@
/* Functions for retrieving and displaying pricing data */ /* Functions for retrieving and displaying pricing data */
/* globals /* globals
constructForm,
global_settings,
imageHoverIcon,
inventreeGet,
loadBarChart,
loadDoughnutChart,
makeEditButton,
makeDeleteButton,
randomColor,
renderDate,
renderLink,
shortenString,
withTitle,
wrapButtons,
*/ */
/* exported /* exported
@ -150,7 +164,7 @@ function calculateTotalPrice(dataset, value_func, currency_func, options={}) {
var common_currency = true; var common_currency = true;
for (var idx = 0; idx < dataset.length; idx++) { for (var idx = 0; idx < dataset.length; idx++) {
var row = dataset[idx]; let row = dataset[idx];
var row_currency = currency_func(row); var row_currency = currency_func(row);
@ -177,7 +191,7 @@ function calculateTotalPrice(dataset, value_func, currency_func, options={}) {
var total = null; var total = null;
for (var ii = 0; ii < dataset.length; ii++) { for (var ii = 0; ii < dataset.length; ii++) {
var row = dataset[ii]; let row = dataset[ii];
// Pass the row back to the decoder // Pass the row back to the decoder
var value = value_func(row); var value = value_func(row);

View File

@ -2,20 +2,60 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
addClearCallback,
addFieldCallback,
barcodeDialog,
calculateTotalPrice,
clearEvents,
closeModal,
constructFormBody,
companyFormFields, companyFormFields,
constructField,
constructForm, constructForm,
constructOrderTableButtons,
createSupplierPart, createSupplierPart,
endDate,
formatCurrency,
formatDecimal,
FullCalendar,
initializeChoiceField,
initializeRelatedField,
getFormFieldElement,
getFormFieldValue,
getTableData,
global_settings, global_settings,
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut,
launchModalForm, launchModalForm,
linkButtonsToSelection,
loadTableFilters, loadTableFilters,
makeCopyButton,
makeDeleteButton,
makeEditButton,
makeIconBadge, makeIconBadge,
makeIconButton,
makeProgressBar,
makeRemoveButton,
purchaseOrderStatusDisplay, purchaseOrderStatusDisplay,
receivePurchaseOrderItems, reloadBootstrapTable,
renderClipboard,
renderDate,
renderLink, renderLink,
showAlertDialog,
showApiError,
showBarcodeMessage,
setRelatedFieldData,
setupFilterList, setupFilterList,
startDate,
stockCodes,
supplierPartFields, supplierPartFields,
thumbnailImage,
updateFieldValue,
wrapButtons,
*/ */
/* exported /* exported
@ -169,7 +209,7 @@ function createPurchaseOrder(options={}) {
title: '{% trans "Duplication Options" %}', title: '{% trans "Duplication Options" %}',
collapsible: false, collapsible: false,
}; };
}; }
constructForm('{% url "api-po-list" %}', { constructForm('{% url "api-po-list" %}', {
method: 'POST', method: 'POST',
@ -273,8 +313,7 @@ function poLineItemFields(options={}) {
success: function(response) { success: function(response) {
// Returned prices are in increasing order of quantity // Returned prices are in increasing order of quantity
if (response.length > 0) { if (response.length > 0) {
var idx = 0; let index = 0;
var index = 0;
for (var idx = 0; idx < response.length; idx++) { for (var idx = 0; idx < response.length; idx++) {
if (response[idx].quantity > quantity) { if (response[idx].quantity > quantity) {
@ -1711,9 +1750,9 @@ function loadPurchaseOrderTable(table, options) {
onLoadSuccess: function() { onLoadSuccess: function() {
if (display_mode == 'calendar') { if (display_mode == 'calendar') {
var el = document.getElementById('purchase-order-calendar'); let el = document.getElementById('purchase-order-calendar');
calendar = new FullCalendar.Calendar(el, { let calendar = new FullCalendar.Calendar(el, {
initialView: 'dayGridMonth', initialView: 'dayGridMonth',
nowIndicator: true, nowIndicator: true,
aspectRatio: 2.5, aspectRatio: 2.5,

View File

@ -4,11 +4,31 @@
/* globals /* globals
companyFormFields, companyFormFields,
constructForm, constructForm,
formatCurrency,
getFormFieldValue,
global_settings,
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
inventreeLoad,
inventreePut,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeIconBadge,
makeIconButton,
makeRemoveButton,
reloadBootstrapTable,
renderDate,
renderLink, renderLink,
returnOrderLineItemStatusDisplay,
returnOrderStatusDisplay, returnOrderStatusDisplay,
setupFilterList, setupFilterList,
showApiError,
showAlertDialog,
thumbnailImage,
wrapButtons,
yesNoLabel,
*/ */
/* exported /* exported

View File

@ -3,17 +3,50 @@
/* globals /* globals
addClearCallback,
calculateTotalPrice,
clearEvents,
companyFormFields, companyFormFields,
constructExpandCollapseButtons,
constructField,
constructForm, constructForm,
constructOrderTableButtons,
endDate,
formatCurrency,
FullCalendar,
getFormFieldValue,
global_settings, global_settings,
handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
initializeRelatedField,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut,
launchModalForm, launchModalForm,
locationDetail,
loadTableFilters, loadTableFilters,
makeCopyButton,
makeEditButton,
makeDeleteButton,
makeIconBadge, makeIconBadge,
makeIconButton,
makeProgressBar,
makeRemoveButton,
moment,
newBuildOrder,
orderParts,
reloadTotal,
renderDate,
renderLink, renderLink,
salesOrderStatusDisplay, salesOrderStatusDisplay,
setupFilterList, setupFilterList,
showAlertDialog,
showApiError,
startDate,
thumbnailImage,
updateFieldValue,
wrapButtons,
*/ */
/* exported /* exported
@ -359,7 +392,7 @@ function completePendingShipments(order_id, options={}) {
completePendingShipmentsHelper(allocated_shipments, 0, options); completePendingShipmentsHelper(allocated_shipments, 0, options);
} else { } else {
html = ` let html = `
<div class='alert alert-block alert-danger'> <div class='alert alert-block alert-danger'>
`; `;
@ -698,7 +731,7 @@ function loadSalesOrderTable(table, options) {
if (display_mode == 'calendar') { if (display_mode == 'calendar') {
var el = document.getElementById('purchase-order-calendar'); var el = document.getElementById('purchase-order-calendar');
calendar = new FullCalendar.Calendar(el, { let calendar = new FullCalendar.Calendar(el, {
initialView: 'dayGridMonth', initialView: 'dayGridMonth',
nowIndicator: true, nowIndicator: true,
aspectRatio: 2.5, aspectRatio: 2.5,
@ -1557,11 +1590,8 @@ function showAllocationSubTable(index, row, element, options) {
field: 'allocated', field: 'allocated',
title: '{% trans "Stock Item" %}', title: '{% trans "Stock Item" %}',
formatter: function(value, row, index, field) { formatter: function(value, row, index, field) {
var text = ''; let item = row.item_detail;
let text = `{% trans "Quantity" %}: ${row.quantity}`;
var item = row.item_detail;
var text = `{% trans "Quantity" %}: ${row.quantity}`;
if (item && item.serial != null && row.quantity == 1) { if (item && item.serial != null && row.quantity == 1) {
text = `{% trans "Serial Number" %}: ${item.serial}`; text = `{% trans "Serial Number" %}: ${item.serial}`;
@ -1977,10 +2007,10 @@ function loadSalesOrderLineItemTable(table, options={}) {
var title = '{% trans "Delete line item" %}'; var title = '{% trans "Delete line item" %}';
if (!!row.shipped) { if (row.shipped) {
delete_disabled = true; delete_disabled = true;
title = '{% trans "Cannot be deleted as items have been shipped" %}'; title = '{% trans "Cannot be deleted as items have been shipped" %}';
} else if (!!row.allocated) { } else if (row.allocated) {
delete_disabled = true; delete_disabled = true;
title = '{% trans "Cannot be deleted as items have been allocated" %}'; title = '{% trans "Cannot be deleted as items have been allocated" %}';
} }

View File

@ -1,6 +1,11 @@
{% load i18n %} {% load i18n %}
/* globals /* globals
getModelRenderer,
inventreeGet,
inventreePut,
sanitizeInputString,
user_settings,
*/ */
/* exported /* exported
@ -102,6 +107,10 @@ var searchQuery = null;
var searchResultTypes = []; var searchResultTypes = [];
var searchRequest = null; var searchRequest = null;
/*
* Callback for when the search text is changed
*/
function searchTextChanged(event) { function searchTextChanged(event) {
var text = $('#offcanvas-search').find('#search-input').val(); var text = $('#offcanvas-search').find('#search-input').val();
@ -110,9 +119,12 @@ function searchTextChanged(event) {
clearTimeout(searchInputTimer); clearTimeout(searchInputTimer);
searchInputTimer = setTimeout(updateSearch, 250); searchInputTimer = setTimeout(updateSearch, 250);
}; }
/*
* Update the search results
*/
function updateSearch() { function updateSearch() {
if (searchText == searchTextCurrent) { if (searchText == searchTextCurrent) {

View File

@ -3,25 +3,61 @@
{% load status_codes %} {% load status_codes %}
/* globals /* globals
addCachedAlert,
baseCurrency,
calculateTotalPrice,
clearFormInput,
constructField, constructField,
constructForm,
constructFormBody, constructFormBody,
convertCurrency,
disableFormInput,
enableFormInput,
formatCurrency,
formatDecimal,
formatPriceRange,
getCurrencyConversionRates,
getFormFieldValue, getFormFieldValue,
getTableData,
global_settings, global_settings,
handleFormErrors, handleFormErrors,
handleFormSuccess,
imageHoverIcon, imageHoverIcon,
initializeRelatedField,
inventreeDelete,
inventreeGet, inventreeGet,
inventreeLoad,
inventreePut, inventreePut,
inventreeSave,
launchModalForm, launchModalForm,
linkButtonsToSelection, linkButtonsToSelection,
loadTableFilters, loadTableFilters,
makeDeleteButton,
makeEditButton,
makeIconBadge, makeIconBadge,
makeIconButton, makeIconButton,
makeRemoveButton,
orderParts,
partDetail,
renderClipboard,
renderDate,
renderLink, renderLink,
scanItemsIntoLocation, scanItemsIntoLocation,
showAlertDialog, setFormInputPlaceholder,
setupFilterList, setupFilterList,
shortenString,
showAlertDialog,
showAlertOrCache,
showMessage,
showModalSpinner,
showApiError, showApiError,
stockCodes,
stockStatusDisplay, stockStatusDisplay,
thumbnailImage,
updateFieldValue,
withTitle,
wrapButtons,
yesNoLabel,
*/ */
/* exported /* exported
@ -792,7 +828,7 @@ function mergeStockItems(items, options={}) {
} }
var part = item.part_detail; var part = item.part_detail;
var location = locationDetail(item, false); let location_detail = locationDetail(item, false);
var thumbnail = thumbnailImage(part.thumbnail || part.image); var thumbnail = thumbnailImage(part.thumbnail || part.image);
@ -824,7 +860,7 @@ function mergeStockItems(items, options={}) {
<div id='errors-items_item_${pk}'></div> <div id='errors-items_item_${pk}'></div>
</div> </div>
</td> </td>
<td id='location_${pk}'>${location}</td> <td id='location_${pk}'>${location_detail}</td>
<td id='buttons_${pk}'>${buttons}</td> <td id='buttons_${pk}'>${buttons}</td>
</tr> </tr>
`; `;

View File

@ -3,10 +3,14 @@
{% load inventree_extras %} {% load inventree_extras %}
/* globals /* globals
global_settings buildCodes,
global_settings,
inventreeGet,
purchaseOrderCodes, purchaseOrderCodes,
returnOrderCodes, returnOrderCodes,
returnOrderLineItemCodes,
salesOrderCodes, salesOrderCodes,
stockCodes,
*/ */
/* exported /* exported
@ -449,7 +453,7 @@ function getBuildTableFilters() {
inventreeGet('{% url "api-owner-list" %}', {}, { inventreeGet('{% url "api-owner-list" %}', {}, {
async: false, async: false,
success: function(response) { success: function(response) {
for (key in response) { for (var key in response) {
var owner = response[key]; var owner = response[key];
ownersList[owner.pk] = { ownersList[owner.pk] = {
key: owner.pk, key: owner.pk,

View File

@ -1,8 +1,14 @@
{% load i18n %} {% load i18n %}
/* global /* global
constructFormBody,
exportFormatOptions,
getFormFieldValue,
inventreeLoad, inventreeLoad,
inventreeSave, inventreeSave,
sanitizeData,
sanitizeInputString,
user_settings,
*/ */
/* exported /* exported
@ -58,7 +64,7 @@ function constructOrderTableButtons(options={}) {
var display_mode = options.display; var display_mode = options.display;
var key = `${options.prefix || order}-table-display-mode`; var key = `${options.prefix || 'order'}-table-display-mode`;
// If display mode is not provided, look up from session // If display mode is not provided, look up from session
if (!display_mode) { if (!display_mode) {
@ -262,7 +268,7 @@ function reloadTableFilters(table, filters, options={}) {
} }
// More complex refresh with new filters supplied // More complex refresh with new filters supplied
var options = table.bootstrapTable('getOptions'); options = table.bootstrapTable('getOptions');
// Construct a new list of filters to use for the query // Construct a new list of filters to use for the query
var params = {}; var params = {};
@ -559,7 +565,7 @@ function customGroupSorter(sortName, sortOrder, sortData) {
}, },
formatShowingRows: function(pageFrom, pageTo, totalRows) { formatShowingRows: function(pageFrom, pageTo, totalRows) {
if (totalRows === undefined || totalRows === NaN) { if (totalRows === undefined || isNaN(totalRows)) {
return '{% trans "Showing all rows" %}'; return '{% trans "Showing all rows" %}';
} else { } else {
return `{% trans "Showing" %} ${pageFrom} {% trans "to" %} ${pageTo} {% trans "of" %} ${totalRows} {% trans "rows" %}`; return `{% trans "Showing" %} ${pageFrom} {% trans "to" %} ${pageTo} {% trans "of" %} ${totalRows} {% trans "rows" %}`;

811
package-lock.json generated
View File

@ -1,11 +1,11 @@
{ {
"name": "InvenTree", "name": "inventree",
"lockfileVersion": 3, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"dependencies": { "dependencies": {
"eslint": "^8.39.0", "eslint": "^8.41.0",
"eslint-config-google": "^0.14.0" "eslint-config-google": "^0.14.0"
} }
}, },
@ -24,21 +24,21 @@
} }
}, },
"node_modules/@eslint-community/regexpp": { "node_modules/@eslint-community/regexpp": {
"version": "4.5.0", "version": "4.5.1",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
"integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
"engines": { "engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0" "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "2.0.2", "version": "2.0.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.5.1", "espree": "^9.5.2",
"globals": "^13.19.0", "globals": "^13.19.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
@ -54,9 +54,9 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "8.39.0", "version": "8.41.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz",
"integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", "integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==",
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
} }
@ -299,14 +299,14 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.39.0", "version": "8.41.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz",
"integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", "integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==",
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0", "@eslint-community/regexpp": "^4.4.0",
"@eslint/eslintrc": "^2.0.2", "@eslint/eslintrc": "^2.0.3",
"@eslint/js": "8.39.0", "@eslint/js": "8.41.0",
"@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
@ -317,8 +317,8 @@
"doctrine": "^3.0.0", "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0", "escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.0", "eslint-scope": "^7.2.0",
"eslint-visitor-keys": "^3.4.0", "eslint-visitor-keys": "^3.4.1",
"espree": "^9.5.1", "espree": "^9.5.2",
"esquery": "^1.4.2", "esquery": "^1.4.2",
"esutils": "^2.0.2", "esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3", "fast-deep-equal": "^3.1.3",
@ -326,13 +326,12 @@
"find-up": "^5.0.0", "find-up": "^5.0.0",
"glob-parent": "^6.0.2", "glob-parent": "^6.0.2",
"globals": "^13.19.0", "globals": "^13.19.0",
"grapheme-splitter": "^1.0.4", "graphemer": "^1.4.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
"is-glob": "^4.0.0", "is-glob": "^4.0.0",
"is-path-inside": "^3.0.3", "is-path-inside": "^3.0.3",
"js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1", "json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1", "levn": "^0.4.1",
@ -381,9 +380,9 @@
} }
}, },
"node_modules/eslint-visitor-keys": { "node_modules/eslint-visitor-keys": {
"version": "3.4.0", "version": "3.4.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}, },
@ -392,13 +391,13 @@
} }
}, },
"node_modules/espree": { "node_modules/espree": {
"version": "9.5.1", "version": "9.5.2",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"dependencies": { "dependencies": {
"acorn": "^8.8.0", "acorn": "^8.8.0",
"acorn-jsx": "^5.3.2", "acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.0" "eslint-visitor-keys": "^3.4.1"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -516,6 +515,25 @@
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
}, },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/glob-parent": { "node_modules/glob-parent": {
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@ -541,10 +559,10 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/grapheme-splitter": { "node_modules/graphemer": {
"version": "1.0.4", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
}, },
"node_modules/has-flag": { "node_modules/has-flag": {
"version": "4.0.0", "version": "4.0.0",
@ -631,15 +649,6 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
}, },
"node_modules/js-sdsl": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz",
"integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/js-sdsl"
}
},
"node_modules/js-yaml": { "node_modules/js-yaml": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@ -866,25 +875,6 @@
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/rimraf/node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/run-parallel": { "node_modules/run-parallel": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@ -1032,5 +1022,704 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
} }
},
"dependencies": {
"@eslint-community/eslint-utils": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
"integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
"requires": {
"eslint-visitor-keys": "^3.3.0"
}
},
"@eslint-community/regexpp": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
"integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ=="
},
"@eslint/eslintrc": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
"integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"requires": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.5.2",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
"js-yaml": "^4.1.0",
"minimatch": "^3.1.2",
"strip-json-comments": "^3.1.1"
}
},
"@eslint/js": {
"version": "8.41.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz",
"integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA=="
},
"@humanwhocodes/config-array": {
"version": "0.11.8",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
"integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"requires": {
"@humanwhocodes/object-schema": "^1.2.1",
"debug": "^4.1.1",
"minimatch": "^3.0.5"
}
},
"@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
"integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
},
"@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
},
"@nodelib/fs.scandir": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
"requires": {
"@nodelib/fs.stat": "2.0.5",
"run-parallel": "^1.1.9"
}
},
"@nodelib/fs.stat": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
},
"@nodelib/fs.walk": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
"requires": {
"@nodelib/fs.scandir": "2.1.5",
"fastq": "^1.6.0"
}
},
"acorn": {
"version": "8.8.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
},
"acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
"integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
"requires": {}
},
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"requires": {
"path-key": "^3.1.0",
"shebang-command": "^2.0.0",
"which": "^2.0.1"
}
},
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
},
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
},
"doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
"integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"requires": {
"esutils": "^2.0.2"
}
},
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
},
"eslint": {
"version": "8.41.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz",
"integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==",
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0",
"@eslint/eslintrc": "^2.0.3",
"@eslint/js": "8.41.0",
"@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.0",
"eslint-visitor-keys": "^3.4.1",
"espree": "^9.5.2",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
"file-entry-cache": "^6.0.1",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
"graphemer": "^1.4.0",
"ignore": "^5.2.0",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
"optionator": "^0.9.1",
"strip-ansi": "^6.0.1",
"strip-json-comments": "^3.1.0",
"text-table": "^0.2.0"
}
},
"eslint-config-google": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz",
"integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==",
"requires": {}
},
"eslint-scope": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
"integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
"requires": {
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
}
},
"eslint-visitor-keys": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz",
"integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA=="
},
"espree": {
"version": "9.5.2",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
"integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"requires": {
"acorn": "^8.8.0",
"acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.1"
}
},
"esquery": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
"integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
"requires": {
"estraverse": "^5.1.0"
}
},
"esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"requires": {
"estraverse": "^5.2.0"
}
},
"estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
},
"esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
},
"fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
"integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
"requires": {
"reusify": "^1.0.4"
}
},
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
"requires": {
"flat-cache": "^3.0.4"
}
},
"find-up": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
"requires": {
"locate-path": "^6.0.0",
"path-exists": "^4.0.0"
}
},
"flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"requires": {
"flatted": "^3.1.0",
"rimraf": "^3.0.2"
}
},
"flatted": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
"integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
},
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"requires": {
"is-glob": "^4.0.3"
}
},
"globals": {
"version": "13.20.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"requires": {
"type-fest": "^0.20.2"
}
},
"graphemer": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"ignore": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
"integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
},
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
"integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
"requires": {
"parent-module": "^1.0.0",
"resolve-from": "^4.0.0"
}
},
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
},
"is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
"requires": {
"is-extglob": "^2.1.1"
}
},
"is-path-inside": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
"integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
"js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"requires": {
"argparse": "^2.0.1"
}
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
},
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"requires": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
}
},
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"requires": {
"p-locate": "^5.0.0"
}
},
"lodash.merge": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
},
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"requires": {
"brace-expansion": "^1.1.7"
}
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"requires": {
"wrappy": "1"
}
},
"optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
"requires": {
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
"type-check": "^0.4.0",
"word-wrap": "^1.2.3"
}
},
"p-limit": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
"requires": {
"yocto-queue": "^0.1.0"
}
},
"p-locate": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
"requires": {
"p-limit": "^3.0.2"
}
},
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
"integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"requires": {
"callsites": "^3.0.0"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
"path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
},
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
},
"punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
},
"queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
},
"resolve-from": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
},
"reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"requires": {
"glob": "^7.1.3"
}
},
"run-parallel": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
"requires": {
"queue-microtask": "^1.2.2"
}
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"requires": {
"shebang-regex": "^3.0.0"
}
},
"shebang-regex": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
},
"strip-json-comments": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
"integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
},
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
},
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"requires": {
"prelude-ls": "^1.2.1"
}
},
"type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
},
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"requires": {
"punycode": "^2.1.0"
}
},
"which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"requires": {
"isexe": "^2.0.0"
}
},
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
}
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"dependencies": { "dependencies": {
"eslint": "^8.39.0", "eslint": "^8.41.0",
"eslint-config-google": "^0.14.0" "eslint-config-google": "^0.14.0"
} }
} }