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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -3,6 +3,8 @@
/* globals
createNewModal,
enableSubmitButton,
formatDecimal,
inventreeFormDataUpload,
inventreeGet,
inventreePut,
@ -10,8 +12,12 @@
modalEnable,
modalShowSubmitButton,
getModelRenderer,
reloadBootstrapTable,
sanitizeInputString,
showAlertOrCache,
showApiError,
showMessage,
showModalSpinner,
*/
/* exported
@ -617,10 +623,12 @@ function constructFormBody(fields, options) {
if (options.preFormContent) {
let content = '';
if (typeof(options.preFormContent) === 'function') {
var content = options.preFormContent(options);
content = options.preFormContent(options);
} else {
var content = options.preFormContent;
content = options.preFormContent;
}
$(modal).find('#pre-form-content').html(content);
@ -1270,7 +1278,7 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
// Nest list must be provided!
if (!nest_list) {
console.warn(`handleNestedArrayErrors missing nesting options for field '${fieldName}'`);
console.warn(`handleNestedArrayErrors missing nesting options for field '${field_name}'`);
return;
}
@ -1287,9 +1295,9 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
var nest_id = nest_list[idx];
// 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') {
@ -1301,11 +1309,11 @@ function handleNestedArrayErrors(errors, field_name, options={}) {
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 = `
<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>`;
row.after(html);
@ -1443,7 +1451,7 @@ function addFieldErrorMessage(name, error_text, error_idx=0, options={}) {
return;
}
field_name = getFieldName(name, options);
let field_name = getFieldName(name, options);
var field_dom = null;
@ -2336,6 +2344,7 @@ function constructInput(name, parameters, options={}) {
break;
case 'raw':
func = constructRawInput;
break;
default:
// Unsupported field type!
break;

View File

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

View File

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

View File

@ -2,7 +2,9 @@
/* globals
inventreeGet,
QRCode,
showAlertOrCache,
user_settings,
*/
/* exported
@ -856,7 +858,7 @@ function insertActionButton(modal, options) {
// check if button already present
var already_present = false;
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;
}
}

View File

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

View File

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

View File

@ -1,5 +1,14 @@
{% load i18n %}
/* globals
inventreeGet,
inventreePut,
renderLink,
setupFilterList,
*/
/* exported
loadNotificationTable,
startNotificationWatcher,
@ -69,10 +78,10 @@ function loadNotificationTable(table, options={}, enableDelete=false) {
formatter: function(value, row, index, field) {
var bRead = getReadEditButton(row.pk, row.read);
let bDel = '';
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>`;
} else {
var bDel = '';
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>`;
}
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
/**
* start the regular notification checks
**/
function startNotificationWatcher() {
notificationCheck(force=true);
notificationWatcher = setInterval(notificationCheck, 1000);
notificationCheck(true);
notificationWatcher = setInterval(notificationCheck, 5000);
}
/**
@ -192,7 +202,8 @@ function updateNotificationReadState(btn, panel_caller=false) {
}
}
);
};
}
/**
* Returns the html for a read / unread button
@ -203,17 +214,23 @@ function updateNotificationReadState(btn, panel_caller=false) {
* - small: should the button be small
**/
function getReadEditButton(pk, state, small=false) {
let bReadText = '';
let bReadIcon = '';
let bReadTarget = '';
if (state) {
var bReadText = '{% trans "Mark as unread" %}';
var bReadIcon = 'fas fa-bookmark icon-red';
var bReadTarget = 'unread';
bReadText = '{% trans "Mark as unread" %}';
bReadIcon = 'fas fa-bookmark icon-red';
bReadTarget = 'unread';
} else {
var bReadText = '{% trans "Mark as read" %}';
var bReadIcon = 'far fa-bookmark icon-green';
var bReadTarget = 'read';
bReadText = '{% trans "Mark as read" %}';
bReadIcon = 'far fa-bookmark icon-green';
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>`;
}

View File

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

View File

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

View File

@ -3,6 +3,9 @@
/* globals
constructForm,
showMessage,
inventreeGet,
inventreePut,
*/
/* exported
@ -20,7 +23,7 @@ function installPlugin() {
confirm: {},
},
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});
}
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,8 +1,14 @@
{% load i18n %}
/* global
constructFormBody,
exportFormatOptions,
getFormFieldValue,
inventreeLoad,
inventreeSave,
sanitizeData,
sanitizeInputString,
user_settings,
*/
/* exported
@ -58,7 +64,7 @@ function constructOrderTableButtons(options={}) {
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) {
@ -262,7 +268,7 @@ function reloadTableFilters(table, filters, options={}) {
}
// 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
var params = {};
@ -559,7 +565,7 @@ function customGroupSorter(sortName, sortOrder, sortData) {
},
formatShowingRows: function(pageFrom, pageTo, totalRows) {
if (totalRows === undefined || totalRows === NaN) {
if (totalRows === undefined || isNaN(totalRows)) {
return '{% trans "Showing all rows" %}';
} else {
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",
"lockfileVersion": 3,
"name": "inventree",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"dependencies": {
"eslint": "^8.39.0",
"eslint": "^8.41.0",
"eslint-config-google": "^0.14.0"
}
},
@ -24,21 +24,21 @@
}
},
"node_modules/@eslint-community/regexpp": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz",
"integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==",
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz",
"integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz",
"integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==",
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz",
"integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
"espree": "^9.5.1",
"espree": "^9.5.2",
"globals": "^13.19.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
@ -54,9 +54,9 @@
}
},
"node_modules/@eslint/js": {
"version": "8.39.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
"integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
"version": "8.41.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz",
"integrity": "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
@ -299,14 +299,14 @@
}
},
"node_modules/eslint": {
"version": "8.39.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
"integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
"version": "8.41.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz",
"integrity": "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.4.0",
"@eslint/eslintrc": "^2.0.2",
"@eslint/js": "8.39.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",
@ -317,8 +317,8 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.0",
"eslint-visitor-keys": "^3.4.0",
"espree": "^9.5.1",
"eslint-visitor-keys": "^3.4.1",
"espree": "^9.5.2",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@ -326,13 +326,12 @@
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
"grapheme-splitter": "^1.0.4",
"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-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
@ -381,9 +380,9 @@
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz",
"integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==",
"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==",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
@ -392,13 +391,13 @@
}
},
"node_modules/espree": {
"version": "9.5.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz",
"integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==",
"version": "9.5.2",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
"integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==",
"dependencies": {
"acorn": "^8.8.0",
"acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.0"
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
"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",
"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": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@ -541,10 +559,10 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ=="
"node_modules/graphemer": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
},
"node_modules/has-flag": {
"version": "4.0.0",
@ -631,15 +649,6 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"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": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
@ -866,25 +875,6 @@
"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": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
@ -1032,5 +1022,704 @@
"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": {
"eslint": "^8.39.0",
"eslint": "^8.41.0",
"eslint-config-google": "^0.14.0"
}
}