diff --git a/.eslintrc.js b/.eslintrc.js
index cfd93d3e7..e4fd93ec0 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -31,6 +31,6 @@ module.exports = {
// allow debugger during development
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'cypress/no-unnecessary-waiting': 'off',
- '@typescript-eslint/no-this-alias': 'off',
+ '@typescript-eslint/no-this-alias': ['error', { allowedNames: ['self'] }],
},
};
diff --git a/funnel/assets/js/schedule_view.js b/funnel/assets/js/schedule_view.js
index c440d59f0..67f751152 100644
--- a/funnel/assets/js/schedule_view.js
+++ b/funnel/assets/js/schedule_view.js
@@ -11,29 +11,29 @@ import Modal from './utils/modalhelper';
const Schedule = {
renderScheduleTable() {
- const schedule = this;
+ const self = this;
const scheduleUI = Vue.component('schedule', {
- template: schedule.config.scriptTemplate,
+ template: self.config.scriptTemplate,
data() {
return {
- schedules: schedule.config.schedule,
- rowWidth: Object.keys(schedule.config.rooms).length,
+ schedules: self.config.schedule,
+ rowWidth: Object.keys(self.config.rooms).length,
rowHeight: '30',
timeSlotWidth: '75',
- timeZone: schedule.config.timeZone,
+ timeZone: self.config.timeZone,
rowBorder: '1',
- activeTab: Object.keys(schedule.config.rooms)[0],
+ activeTab: Object.keys(self.config.rooms)[0],
width: $(window).width(),
height: $(window).height(),
modalHtml: '',
headerHeight: '',
pageDetails: {
url: window.location.href,
- title: `Schedule – ${schedule.config.projectTitle}`,
- projectTitle: schedule.config.projectTitle,
+ title: `Schedule – ${self.config.projectTitle}`,
+ projectTitle: self.config.projectTitle,
pageTitle: 'Schedule',
- description: schedule.config.pageDescription,
+ description: self.config.pageDescription,
},
view: 'agenda',
svgIconUrl: window.Hasgeek.Config.svgIconUrl,
@@ -84,14 +84,14 @@ const Schedule = {
// On closing modal, update browser history
$('#session-modal').on($.modal.CLOSE, () => {
this.modalHtml = '';
- if (schedule.config.replaceHistoryToModalUrl) {
+ if (self.config.replaceHistoryToModalUrl) {
Spa.updateMetaTags(this.pageDetails);
if (window.history.state.openModal) {
window.history.back();
}
}
});
- if (schedule.config.changeToModalUrl) {
+ if (self.config.changeToModalUrl) {
$(window).on('popstate', () => {
if (this.modalHtml) {
$.modal.close();
@@ -103,7 +103,7 @@ const Schedule = {
this.modalHtml = sessionHtml;
$('#session-modal').modal('show');
this.handleModalShown();
- if (schedule.config.replaceHistoryToModalUrl) {
+ if (self.config.replaceHistoryToModalUrl) {
window.history.pushState(
{
openModal: true,
@@ -184,7 +184,7 @@ const Schedule = {
this.getHeight();
this.pathName = window.location.pathname;
const scrollPos = JSON.parse(window.sessionStorage.getItem('scrollPos'));
- const activeSession = schedule.config.active_session;
+ const activeSession = self.config.active_session;
if (activeSession) {
// Open session modal
const paths = window.location.href.split('/');
@@ -243,7 +243,7 @@ const Schedule = {
},
},
mounted() {
- if (schedule.config.rememberScrollPos) {
+ if (self.config.rememberScrollPos) {
this.animateWindowScrollWithHeader();
}
this.handleBrowserResize();
@@ -257,7 +257,7 @@ const Schedule = {
faSvg,
},
});
- scheduleApp.$mount(schedule.config.divElem);
+ scheduleApp.$mount(self.config.divElem);
},
addSessionToSlots() {
this.config.sessions.forEach((session) => {
@@ -316,7 +316,6 @@ const Schedule = {
};
},
init(config) {
- const self = this;
this.config = config;
this.config.rooms = {};
if (!this.config.venues.length) {
@@ -330,7 +329,7 @@ const Schedule = {
this.config.rooms[room.scoped_name].venue_title = venue.title;
});
} else {
- self.addDefaultRoom(venue);
+ this.addDefaultRoom(venue);
}
});
this.config.currentDate = this.Utils.getDateString(new Date());
diff --git a/funnel/assets/js/submission.js b/funnel/assets/js/submission.js
index 8ade0f9a1..0a0ca66d3 100644
--- a/funnel/assets/js/submission.js
+++ b/funnel/assets/js/submission.js
@@ -42,7 +42,7 @@ export const Submission = {
export const LabelsWidget = {
init() {
- const Widget = this;
+ const self = this;
// On load, if the radio has been selected, then check mark the listwidget label
$('.listwidget input[type="radio"]').each(function loadCheckMarkToLabel() {
@@ -51,12 +51,12 @@ export const LabelsWidget = {
}
});
- $('.listwidget .mui-form__label').click(function uncheckLabel() {
+ $('.listwidget .mui-form__label').on('click', function uncheckLabel() {
if ($(this).hasClass('checked')) {
$(this).removeClass('checked');
$(this).siblings().find('input[type="radio"]').prop('checked', false);
- const attr = Widget.getLabelTxt($(this).text().trim());
- Widget.updateLabels('', attr, false);
+ const attr = self.getLabelTxt($(this).text().trim());
+ self.updateLabels('', attr, false);
} else {
$(this).addClass('checked');
$(this).siblings().find('input[type="radio"]').first().click();
@@ -64,20 +64,23 @@ export const LabelsWidget = {
});
// Add check mark to listwidget label
- $('.listwidget input[type="radio"]').change(function addCheckMarkToLabel() {
+ $('.listwidget input[type="radio"]').on('change', function addCheckMarkToLabel() {
const label = $(this).parent().parent().prev('.mui-form__label');
label.addClass('checked');
- const labelTxt = `${Widget.getLabelTxt(label.text())}: ${Widget.getLabelTxt(
+ const labelTxt = `${self.getLabelTxt(label.text())}: ${self.getLabelTxt(
$(this).parent().find('label').text(),
)}`;
- const attr = Widget.getLabelTxt(label.text());
- Widget.updateLabels(labelTxt, attr, this.checked);
+ const attr = self.getLabelTxt(label.text());
+ self.updateLabels(labelTxt, attr, this.checked);
});
- $('.mui-checkbox input[type="checkbox"]').change(function clickLabelCheckbox() {
- const labelTxt = Widget.getLabelTxt($(this).parent('label').text());
- Widget.updateLabels(labelTxt, labelTxt, this.checked);
- });
+ $('.mui-checkbox input[type="checkbox"]').on(
+ 'change',
+ function clickLabelCheckbox() {
+ const labelTxt = self.getLabelTxt($(this).parent('label').text());
+ self.updateLabels(labelTxt, labelTxt, this.checked);
+ },
+ );
// Open and close dropdown
$('#label-select').on('click', () => {
diff --git a/funnel/assets/js/utils/form_widgets.js b/funnel/assets/js/utils/form_widgets.js
index 7c18fe64e..260d58961 100644
--- a/funnel/assets/js/utils/form_widgets.js
+++ b/funnel/assets/js/utils/form_widgets.js
@@ -183,12 +183,11 @@ export class MapMarker {
}
activate() {
- const self = this;
Form.preventSubmitOnEnter(this.field.locationId);
// locationpicker.jquery.js
$(`#${this.field.mapId}`).locationpicker({
- location: self.getDefaultLocation(),
+ location: this.getDefaultLocation(),
radius: 0,
zoom: 18,
inputBinding: {
@@ -197,21 +196,21 @@ export class MapMarker {
locationNameInput: $(`#${this.field.locationId}`),
},
enableAutocomplete: true,
- onchanged() {
- if ($(`#${self.field.locationId}`).val()) {
- $(`#${self.field.mapId}`).removeClass('mui--hide');
+ onchanged: () => {
+ if ($(`#${this.field.locationId}`).val()) {
+ $(`#${this.field.mapId}`).removeClass('mui--hide');
}
},
onlocationnotfound() {
// Ignore this event
},
- oninitialized() {
+ oninitialized: () => {
// Locationpicker sets latitude and longitude field value to 0,
// this is to empty the fields and hide the map
- if (!$(`#${self.field.locationId}`).val()) {
- $(`#${self.field.latitudeId}`).val('');
- $(`#${self.field.longitudeId}`).val('');
- $(`#${self.field.mapId}`).addClass('mui--hide');
+ if (!$(`#${this.field.locationId}`).val()) {
+ $(`#${this.field.latitudeId}`).val('');
+ $(`#${this.field.longitudeId}`).val('');
+ $(`#${this.field.mapId}`).addClass('mui--hide');
}
},
});
@@ -219,10 +218,10 @@ export class MapMarker {
// On clicking clear, empty latitude, longitude, location fields and hide map
$(`#${this.field.clearId}`).on('click', (event) => {
event.preventDefault();
- $(`#${self.field.latitudeId}`).val('');
- $(`#${self.field.longitudeId}`).val('');
- $(`#${self.field.locationId}`).val('');
- $(`#${self.field.mapId}`).addClass('mui--hide');
+ $(`#${this.field.latitudeId}`).val('');
+ $(`#${this.field.longitudeId}`).val('');
+ $(`#${this.field.locationId}`).val('');
+ $(`#${this.field.mapId}`).addClass('mui--hide');
});
}
diff --git a/funnel/assets/js/utils/jsonform.js b/funnel/assets/js/utils/jsonform.js
index 4a703d4e1..3d57c7e03 100644
--- a/funnel/assets/js/utils/jsonform.js
+++ b/funnel/assets/js/utils/jsonform.js
@@ -14,7 +14,6 @@ const jsonForm = Vue.component('jsonform', {
return JSON.stringify(obj);
},
activateForm() {
- const form = this;
const url = Form.getActionUrl(this.formid);
const formValues = new FormData($(`#${this.formid}`)[0]);
const onSuccess = (response) => {
@@ -32,7 +31,7 @@ const jsonForm = Vue.component('jsonform', {
dataType: 'html',
formData: JSON.stringify({
csrf_token: formValues.get('csrf_token'),
- form: form.getFormData(),
+ form: this.getFormData(),
}),
});
});
diff --git a/funnel/assets/js/utils/markmap.js b/funnel/assets/js/utils/markmap.js
index 81a6f657c..b7b2e4c41 100644
--- a/funnel/assets/js/utils/markmap.js
+++ b/funnel/assets/js/utils/markmap.js
@@ -12,7 +12,7 @@ const MarkmapEmbed = {
},
async init(container) {
const parentElement = $(container || 'body');
- const markmapEmbed = this;
+ const self = this;
if (
parentElement.find('.md-embed-markmap:not(.activating, .activated)').length > 0
) {
@@ -34,14 +34,11 @@ const MarkmapEmbed = {
parentElement
.find('.md-embed-markmap:not(.activating):not(.activated)')
.each(function embedMarkmap() {
- const markdownDiv = this;
- $(markdownDiv).addClass('activating');
- $(markdownDiv).find('.embed-loading').addClass('loading');
- const { root } = transformer.transform(
- $(markdownDiv).find('.embed-content').text(),
- );
- $(markdownDiv).find('.embed-container').append('');
- const current = $(markdownDiv).find('svg')[0];
+ $(this).addClass('activating');
+ $(this).find('.embed-loading').addClass('loading');
+ const { root } = transformer.transform($(this).find('.embed-content').text());
+ $(this).find('.embed-container').append('');
+ const current = $(this).find('svg')[0];
const markmap = Markmap.create(
current,
{
@@ -52,10 +49,10 @@ const MarkmapEmbed = {
},
root,
);
- markmapEmbed.markmaps.push(markmap);
+ self.markmaps.push(markmap);
$(current).data('markmap', markmap);
observer.observe(current);
- $(markdownDiv).addClass('activated').removeClass('activating');
+ $(this).addClass('activated').removeClass('activating');
});
window.addEventListener('resize', this.resizeMarkmapContainers.bind(this));
diff --git a/funnel/assets/js/utils/ticket_widget.js b/funnel/assets/js/utils/ticket_widget.js
index 1ce1a4dc2..2f86f9ff1 100644
--- a/funnel/assets/js/utils/ticket_widget.js
+++ b/funnel/assets/js/utils/ticket_widget.js
@@ -42,8 +42,7 @@ const Ticketing = {
},
error(response) {
- const ajaxLoad = this;
- ajaxLoad.retries -= 1;
+ this.retries -= 1;
let errorMsg;
if (response.readyState === 4) {
@@ -52,7 +51,7 @@ const Ticketing = {
);
$(widgetElem).html(errorMsg);
} else if (response.readyState === 0) {
- if (ajaxLoad.retries < 0) {
+ if (this.retries < 0) {
if (!navigator.onLine) {
errorMsg = window.gettext('This device has no internet connection');
} else {
@@ -64,8 +63,8 @@ const Ticketing = {
$(widgetElem).html(errorMsg);
} else {
setTimeout(() => {
- $.get(ajaxLoad);
- }, ajaxLoad.retryInterval);
+ $.get(this);
+ }, this.retryInterval);
}
}
},
diff --git a/funnel/assets/js/utils/typeform_embed.js b/funnel/assets/js/utils/typeform_embed.js
index 2a66aeb30..e929b4911 100644
--- a/funnel/assets/js/utils/typeform_embed.js
+++ b/funnel/assets/js/utils/typeform_embed.js
@@ -29,8 +29,7 @@ const TypeformEmbed = {
$(containerDiv)
.find('a')
.each(function isTypeformUrl() {
- const anchorTag = this;
- const txt = $(anchorTag).attr('href');
+ const txt = $(this).attr('href');
let urlSplit;
let typeformId;
let parentDiv;
@@ -40,9 +39,9 @@ const TypeformEmbed = {
urlSplit = txt.split('/');
typeformId = urlSplit.pop();
typeformId = typeformId.includes('?') ? typeformId.split('?')[0] : typeformId;
- parentDiv = $(anchorTag).parents(containerDiv);
+ parentDiv = $(this).parents(containerDiv);
if (typeformId) {
- self.addTypeformEmbed(typeformId, anchorTag, parentDiv, loadScript);
+ self.addTypeformEmbed(typeformId, this, parentDiv, loadScript);
}
}
});
diff --git a/funnel/assets/js/utils/webshare.js b/funnel/assets/js/utils/webshare.js
index 3a9b6a868..9b22e59fe 100644
--- a/funnel/assets/js/utils/webshare.js
+++ b/funnel/assets/js/utils/webshare.js
@@ -17,21 +17,20 @@ const WebShare = {
$('body').on('click', '.hg-link-btn', function clickWebShare(event) {
event.preventDefault();
- const linkElem = this;
let url =
- $(linkElem).data('url') ||
+ $(this).data('url') ||
(document.querySelector('link[rel=canonical]') &&
document.querySelector('link[rel=canonical]').href) ||
window.location.href;
const title = $(this).data('title') || document.title;
const text = $(this).data('text') || '';
- if ($(linkElem).attr('data-shortlink')) {
+ if ($(this).attr('data-shortlink')) {
mobileShare(title, url, text);
} else {
Utils.fetchShortUrl(url)
.then((shortlink) => {
url = shortlink;
- $(linkElem).attr('data-shortlink', true);
+ $(this).attr('data-shortlink', true);
})
.finally(() => {
mobileShare(title, url, text);
@@ -41,15 +40,14 @@ const WebShare = {
} else {
$('body').on('click', '.js-copy-link', function clickCopyLink(event) {
event.preventDefault();
- const linkElem = this;
- if ($(linkElem).attr('data-shortlink')) {
- Utils.copyToClipboard($(linkElem).find('.js-copy-url')[0]);
+ if ($(this).attr('data-shortlink')) {
+ Utils.copyToClipboard($(this).find('.js-copy-url')[0]);
} else {
- Utils.fetchShortUrl($(linkElem).find('.js-copy-url').first().html())
+ Utils.fetchShortUrl($(this).find('.js-copy-url').first().html())
.then((shortlink) => {
- $(linkElem).find('.js-copy-url').text(shortlink);
- $(linkElem).attr('data-shortlink', true);
- Utils.copyToClipboard($(linkElem).find('.js-copy-url')[0]);
+ $(this).find('.js-copy-url').text(shortlink);
+ $(this).attr('data-shortlink', true);
+ Utils.copyToClipboard($(this).find('.js-copy-url')[0]);
})
.catch((errMsg) => {
toastr.error(errMsg);
diff --git a/funnel/assets/service-worker-template.js b/funnel/assets/service-worker-template.js
index 8c39fba4c..51b93aa14 100644
--- a/funnel/assets/service-worker-template.js
+++ b/funnel/assets/service-worker-template.js
@@ -2,11 +2,8 @@ import { precacheAndRoute } from 'workbox-precaching';
import { registerRoute, setCatchHandler } from 'workbox-routing';
import { NetworkFirst, NetworkOnly } from 'workbox-strategies';
import { skipWaiting, clientsClaim } from 'workbox-core';
-const filteredManifest = self.__WB_MANIFEST.filter((entry) => {
- return !entry.url.match('prism-');
-});
-precacheAndRoute(filteredManifest);
+precacheAndRoute(self.__WB_MANIFEST);
skipWaiting();
clientsClaim();
diff --git a/package-lock.json b/package-lock.json
index 2c1dc93b7..b57088453 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -62,8 +62,28 @@
"@babel/eslint-parser": "^7.24.6",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/preset-env": "^7.14.7",
+ "@types/babel__core": "^7.20.5",
+ "@types/codemirror": "^5.60.15",
+ "@types/eslint": "^8.56.10",
+ "@types/eslint-config-prettier": "^6.11.3",
+ "@types/eslint-plugin-prettier": "^3.1.3",
+ "@types/file-loader": "^5.0.4",
"@types/hammerjs": "^2.0.45",
+ "@types/jquery": "^3.5.30",
+ "@types/jquery.cookie": "^1.4.35",
+ "@types/jqueryui": "^1.12.22",
+ "@types/leaflet": "^1.9.12",
+ "@types/lint-staged": "^13.3.0",
+ "@types/muicss": "^0.9.8",
+ "@types/node": "^20.14.2",
"@types/prismjs": "^1.26.4",
+ "@types/sass-loader": "^8.0.8",
+ "@types/select2": "^4.0.63",
+ "@types/sprintf-js": "^1.1.4",
+ "@types/timeago": "^1.6.3",
+ "@types/toastr": "^2.1.43",
+ "@types/vcards-js": "^2.10.5",
+ "@types/webpack": "^5.28.5",
"@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.12.0",
"babel-loader": "^9.1.3",
@@ -83,6 +103,7 @@
"prettier": "^3.3.1",
"sass": "^1.77.4",
"sass-loader": "^14.2.1",
+ "ts-node": "^10.9.2",
"typescript": "^5.4.5",
"vega-typings": "^1.3.0",
"webpack": "^5.91.0",
@@ -2300,6 +2321,30 @@
"node": ">=0.1.90"
}
},
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
+ }
+ },
"node_modules/@cypress/request": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
@@ -3286,6 +3331,89 @@
"string.prototype.matchall": "^4.0.6"
}
},
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+ "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
+ }
+ },
+ "node_modules/@types/babel__generator": {
+ "version": "7.6.8",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz",
+ "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
+ }
+ },
+ "node_modules/@types/babel__traverse": {
+ "version": "7.20.6",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz",
+ "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.20.7"
+ }
+ },
+ "node_modules/@types/codemirror": {
+ "version": "5.60.15",
+ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
+ "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/tern": "*"
+ }
+ },
"node_modules/@types/d3": {
"version": "7.4.3",
"resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz",
@@ -3559,6 +3687,23 @@
"@types/json-schema": "*"
}
},
+ "node_modules/@types/eslint-config-prettier": {
+ "version": "6.11.3",
+ "resolved": "https://registry.npmjs.org/@types/eslint-config-prettier/-/eslint-config-prettier-6.11.3.tgz",
+ "integrity": "sha512-3wXCiM8croUnhg9LdtZUJQwNcQYGWxxdOWDjPe1ykCqJFPVpzAKfs/2dgSoCtAvdPeaponcWPI7mPcGGp9dkKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/eslint-plugin-prettier": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/@types/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.3.tgz",
+ "integrity": "sha512-Jk+lgBZM0u9ETUyqe2HvykL1j6uE7L1oEqbInWtsVHT6sP+AdwLb4ncmQBqASTS+YzYOPF6hKX0zgEhblRMjqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint": "*"
+ }
+ },
"node_modules/@types/eslint-scope": {
"version": "3.7.7",
"resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
@@ -3576,6 +3721,31 @@
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"license": "MIT"
},
+ "node_modules/@types/file-loader": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/@types/file-loader/-/file-loader-5.0.4.tgz",
+ "integrity": "sha512-aB4X92oi5D2nIGI8/kolnJ47btRM2MQjQS4eJgA/VnCD12x0+kP5v7b5beVQWKHLOcquwUXvv6aMt8PmMy9uug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/webpack": "^4"
+ }
+ },
+ "node_modules/@types/file-loader/node_modules/@types/webpack": {
+ "version": "4.41.38",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.38.tgz",
+ "integrity": "sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
"node_modules/@types/geojson": {
"version": "7946.0.14",
"resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz",
@@ -3616,6 +3786,36 @@
"@types/istanbul-lib-report": "*"
}
},
+ "node_modules/@types/jquery": {
+ "version": "3.5.30",
+ "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz",
+ "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/sizzle": "*"
+ }
+ },
+ "node_modules/@types/jquery.cookie": {
+ "version": "1.4.35",
+ "resolved": "https://registry.npmjs.org/@types/jquery.cookie/-/jquery.cookie-1.4.35.tgz",
+ "integrity": "sha512-chaHxzUOnN3MxSt5PNDtGLa74Z7DGsYnnBhg2NihAY9awJ01q903T07DVHkDnY9J7LkCcxuZyHnsVvmLmdFsAg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
+ "node_modules/@types/jqueryui": {
+ "version": "1.12.22",
+ "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.22.tgz",
+ "integrity": "sha512-4r7ROoUJ5gaIWvQa2qAHyrhskJcUNM62Md8M9+4DtabEiIQ9Y0pVlW88ojyXvn4M1HNUc/47KpFJaXhrk8P/rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
@@ -3630,6 +3830,23 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/leaflet": {
+ "version": "1.9.12",
+ "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.12.tgz",
+ "integrity": "sha512-BK7XS+NyRI291HIo0HCfE18Lp8oA30H1gpi1tf0mF3TgiCEzanQjOqNZ4x126SXzzi2oNSZhZ5axJp1k0iM6jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/geojson": "*"
+ }
+ },
+ "node_modules/@types/lint-staged": {
+ "version": "13.3.0",
+ "resolved": "https://registry.npmjs.org/@types/lint-staged/-/lint-staged-13.3.0.tgz",
+ "integrity": "sha512-WxGjVP+rA4OJlEdbZdT9MS9PFKQ7kVPhLn26gC+2tnBWBEFEj/KW+IbFfz6sxdxY5U6V7BvyF+3BzCGsAMHhNg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/mdast": {
"version": "3.0.15",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz",
@@ -3645,6 +3862,16 @@
"integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==",
"license": "MIT"
},
+ "node_modules/@types/muicss": {
+ "version": "0.9.8",
+ "resolved": "https://registry.npmjs.org/@types/muicss/-/muicss-0.9.8.tgz",
+ "integrity": "sha512-p2yXnOeh3iNISd3c/3a4t9tXSuwovzBbVElzPyeX3a2rxuTPtUUN0BFRyr2k5lHh8YFwQj2V2HJLdGuqiuiysA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/node": {
"version": "20.14.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz",
@@ -3655,6 +3882,16 @@
"undici-types": "~5.26.4"
}
},
+ "node_modules/@types/node-sass": {
+ "version": "4.11.7",
+ "resolved": "https://registry.npmjs.org/@types/node-sass/-/node-sass-4.11.7.tgz",
+ "integrity": "sha512-QY0sXZGPRzJ2obo66f9zB6S0Uo9PRdcoPKPbyftSoKXub90s4ut/JK3fYHOqmhYhRRVEB3P5o5rEnq2/bWBdeg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/prismjs": {
"version": "1.26.4",
"resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz",
@@ -3662,6 +3899,24 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/prop-types": {
+ "version": "15.7.12",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz",
+ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/react": {
+ "version": "18.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
+ "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/prop-types": "*",
+ "csstype": "^3.0.2"
+ }
+ },
"node_modules/@types/resolve": {
"version": "1.20.2",
"resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz",
@@ -3669,6 +3924,44 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/sass-loader": {
+ "version": "8.0.8",
+ "resolved": "https://registry.npmjs.org/@types/sass-loader/-/sass-loader-8.0.8.tgz",
+ "integrity": "sha512-hjP8aUyTDde2blD6clAGso/+ctC+9Rch/mDpvMe/kZrpXGZBDqf1K/48jWzXOX7hbd4jXQKQMPWdbBv4MRp0yQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/node-sass": "*",
+ "@types/webpack": "^4",
+ "sass": "^1.45.0"
+ }
+ },
+ "node_modules/@types/sass-loader/node_modules/@types/webpack": {
+ "version": "4.41.38",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.38.tgz",
+ "integrity": "sha512-oOW7E931XJU1mVfCnxCVgv8GLFL768pDO5u2Gzk82i8yTIgX6i7cntyZOkZYb/JtYM8252SN9bQp9tgkVDSsRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/@types/select2": {
+ "version": "4.0.63",
+ "resolved": "https://registry.npmjs.org/@types/select2/-/select2-4.0.63.tgz",
+ "integrity": "sha512-/DXUfPSj3iVTGlRYRYPCFKKSogAGP/j+Z0fIMXbBiBtmmZj0WH7vnfNuckafq9C43KnqPPQW2TI/Rj/vTSGnQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
"node_modules/@types/sinonjs__fake-timers": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz",
@@ -3683,6 +3976,57 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/source-list-map": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.6.tgz",
+ "integrity": "sha512-5JcVt1u5HDmlXkwOD2nslZVllBBc7HDuOICfiZah2Z0is8M8g+ddAEawbmd3VjedfDHBzxCaXLs07QEmb7y54g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/sprintf-js": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@types/sprintf-js/-/sprintf-js-1.1.4.tgz",
+ "integrity": "sha512-aWK1reDYWxcjgcIIPmQi3u+OQDuYa9b+lr6eIsGWrekJ9vr1NSjr4Eab8oQ1iKuH1ltFHpXGyerAv1a3FMKxzQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tapable": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.12.tgz",
+ "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/tern": {
+ "version": "0.23.9",
+ "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz",
+ "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "*"
+ }
+ },
+ "node_modules/@types/timeago": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@types/timeago/-/timeago-1.6.3.tgz",
+ "integrity": "sha512-SVNyo6sNP3Q+uqs/5Emqjz0e59G+i8iNPlxVw7vftotJj70EFjIeX2L2iZ0IV1J8L/bQP7G76/68NPW3kNEW3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
+ "node_modules/@types/toastr": {
+ "version": "2.1.43",
+ "resolved": "https://registry.npmjs.org/@types/toastr/-/toastr-2.1.43.tgz",
+ "integrity": "sha512-sLC2fr2OXeE1iyhUixpQ64wQ2tA26awmLidn4tXTLBz4yP/VhtYUKHpmiIyDtztKkHjucdiTLH8F5uRRyhNi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/jquery": "*"
+ }
+ },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -3690,12 +4034,63 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/uglify-js": {
+ "version": "3.17.5",
+ "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.17.5.tgz",
+ "integrity": "sha512-TU+fZFBTBcXj/GpDpDaBmgWk/gn96kMZ+uocaFUlV2f8a6WdMzzI44QBCmGcCiYR0Y6ZlNRiyUyKKt5nl/lbzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "source-map": "^0.6.1"
+ }
+ },
"node_modules/@types/unist": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz",
"integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==",
"license": "MIT"
},
+ "node_modules/@types/vcards-js": {
+ "version": "2.10.5",
+ "resolved": "https://registry.npmjs.org/@types/vcards-js/-/vcards-js-2.10.5.tgz",
+ "integrity": "sha512-QkKYoDc7HcRwiJVALv3ZSl1pzX3nkGm8OiQWZVn4QM8S4xUkcZVU6ci89eF6ychyEQc3ySLDIyAa/Mymbvg3IA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/webpack": {
+ "version": "5.28.5",
+ "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-5.28.5.tgz",
+ "integrity": "sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "tapable": "^2.2.0",
+ "webpack": "^5"
+ }
+ },
+ "node_modules/@types/webpack-sources": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.3.tgz",
+ "integrity": "sha512-4nZOdMwSPHZ4pTEZzSp0AsTM4K7Qmu40UKW4tJDiOVs20UzYF9l+qUe4s0ftfN0pin06n+5cWWDJXH+sbhAiDw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ }
+ },
+ "node_modules/@types/webpack-sources/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/@types/yargs": {
"version": "17.0.32",
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz",
@@ -4234,6 +4629,16 @@
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
+ "node_modules/acorn-walk": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
+ "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -4409,6 +4814,13 @@
],
"license": "MIT"
},
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -5401,6 +5813,13 @@
"layout-base": "^1.0.0"
}
},
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/crelt": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
@@ -10681,6 +11100,13 @@
"resolved": "node_modules/@jridgewell/sourcemap-codec",
"link": true
},
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/markdown-it": {
"version": "14.1.0",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz",
@@ -13681,6 +14107,60 @@
"node": ">=6.10"
}
},
+ "node_modules/ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/ts-node/node_modules/diff": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
"node_modules/tsconfig-paths": {
"version": "3.15.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz",
@@ -14073,6 +14553,13 @@
"node": ">=8"
}
},
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/vcards-js": {
"version": "2.10.0",
"resolved": "https://registry.npmjs.org/vcards-js/-/vcards-js-2.10.0.tgz",
@@ -15438,6 +15925,16 @@
"fd-slicer": "~1.1.0"
}
},
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index fac6bb4bf..f9d5aa3ca 100644
--- a/package.json
+++ b/package.json
@@ -15,8 +15,28 @@
"@babel/eslint-parser": "^7.24.6",
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/preset-env": "^7.14.7",
+ "@types/babel__core": "^7.20.5",
+ "@types/codemirror": "^5.60.15",
+ "@types/eslint": "^8.56.10",
+ "@types/eslint-config-prettier": "^6.11.3",
+ "@types/eslint-plugin-prettier": "^3.1.3",
+ "@types/file-loader": "^5.0.4",
"@types/hammerjs": "^2.0.45",
+ "@types/jquery": "^3.5.30",
+ "@types/jquery.cookie": "^1.4.35",
+ "@types/jqueryui": "^1.12.22",
+ "@types/leaflet": "^1.9.12",
+ "@types/lint-staged": "^13.3.0",
+ "@types/muicss": "^0.9.8",
+ "@types/node": "^20.14.2",
"@types/prismjs": "^1.26.4",
+ "@types/sass-loader": "^8.0.8",
+ "@types/select2": "^4.0.63",
+ "@types/sprintf-js": "^1.1.4",
+ "@types/timeago": "^1.6.3",
+ "@types/toastr": "^2.1.43",
+ "@types/vcards-js": "^2.10.5",
+ "@types/webpack": "^5.28.5",
"@typescript-eslint/eslint-plugin": "^7.12.0",
"@typescript-eslint/parser": "^7.12.0",
"babel-loader": "^9.1.3",
@@ -36,6 +56,7 @@
"prettier": "^3.3.1",
"sass": "^1.77.4",
"sass-loader": "^14.2.1",
+ "ts-node": "^10.9.2",
"typescript": "^5.4.5",
"vega-typings": "^1.3.0",
"webpack": "^5.91.0",
diff --git a/tsconfig.json b/tsconfig.json
index 63faee187..041005abb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,7 +1,9 @@
{
"compilerOptions": {
"allowJs": true,
+ "allowSyntheticDefaultImports": true,
"alwaysStrict": true,
+ "esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"incremental": true,
"module": "NodeNext",
@@ -9,5 +11,11 @@
"pretty": true,
"strict": true,
"verbatimModuleSyntax": true
+ },
+ "ts-node": {
+ "transpileOnly": true,
+ "compilerOptions": {
+ "module": "CommonJS"
+ }
}
}
diff --git a/webpack.config.mjs b/webpack.config.mjs
index 26ffa4039..5be702fd2 100644
--- a/webpack.config.mjs
+++ b/webpack.config.mjs
@@ -103,6 +103,7 @@ export default {
path: path.resolve(__dirname, 'funnel/static/build'),
publicPath: '/static/build/',
filename: 'js/[name].[chunkhash].js',
+ compareBeforeEmit: true,
},
module: {
rules: [
@@ -160,6 +161,7 @@ export default {
new InjectManifest({
swSrc: path.resolve(__dirname, 'funnel/assets/service-worker-template.js'),
swDest: path.resolve(__dirname, 'funnel/static/build/js/service-worker.js'),
+ exclude: [/prismjs/, /\.map$/, /\.LICENSE\.txt$/],
}),
],
};