2020-02-27 13:45:29 +01:00
|
|
|
/**
|
|
|
|
* Shorthands
|
2020-06-30 18:41:58 +02:00
|
|
|
* Belongs to LocalCDN (since 2020-02-26)
|
|
|
|
* (Origin: Decentraleyes)
|
2020-02-27 13:45:29 +01:00
|
|
|
*
|
|
|
|
* @author Thomas Rientjes
|
|
|
|
* @since 2018-02-24
|
2020-04-14 07:43:25 +02:00
|
|
|
*
|
2020-06-30 18:41:58 +02:00
|
|
|
* @author nobody
|
2020-04-14 07:43:25 +02:00
|
|
|
* @since 2020-02-26
|
|
|
|
*
|
2020-02-27 13:45:29 +01:00
|
|
|
* @license MPL 2.0
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
'use strict';
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Shorthands
|
|
|
|
*/
|
|
|
|
|
2020-08-23 07:35:37 +02:00
|
|
|
var shorthands = {};
|
2020-04-14 07:42:56 +02:00
|
|
|
|
2020-06-27 11:50:50 +02:00
|
|
|
shorthands.specialFiles = function (channelHost, channelPath, searchString) {
|
2020-11-05 07:08:55 +01:00
|
|
|
let lastVersion;
|
2020-04-14 07:42:56 +02:00
|
|
|
/*
|
|
|
|
NOTE:
|
|
|
|
jsDelivr allows to load several files in one request
|
|
|
|
This is just a workaround. If there are more websites which use this, we will have to do crazy things here to find and redirect these files.
|
|
|
|
|
|
|
|
It's not possible to respond to a request with multiple redirections
|
|
|
|
https://gitlab.com/nobody42/localcdn/-/issues/45
|
|
|
|
*/
|
2020-08-23 07:30:58 +02:00
|
|
|
|
|
|
|
if (Regex.JSDELIVR_COMBINE.test(channelHost + channelPath)) {
|
2020-04-14 07:42:56 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-08-23 07:35:37 +02:00
|
|
|
'versionDelivered': 'beta',
|
2020-04-14 07:42:56 +02:00
|
|
|
'path': 'resources/jsdelivr-combine-jquery-hogan-algoliasearch-autocomplete.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'cdn.jsdelivr.net/g/algoliasearch@3(algoliasearchLite.min.js),algoliasearch.helper@2') {
|
2020-04-14 07:42:56 +02:00
|
|
|
// https://gitlab.com/nobody42/localcdn/-/issues/55
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-08-23 07:35:37 +02:00
|
|
|
'versionDelivered': 'beta',
|
2020-04-14 07:42:56 +02:00
|
|
|
'path': 'resources/algoliasearch3.33.0_algoliasearchLite_algoliasearchHelper.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if (Regex.GOOGLE_MATERIAL_ICONS.test(channelHost + channelPath + searchString)) {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/google-material-design-icons/');
|
2020-06-27 11:50:50 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
2020-06-27 11:50:50 +02:00
|
|
|
'path': 'resources/google-material-design-icons/google-material-design-icons.css',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if (Regex.BOOTSTRAP_DATEPICKER_3.test(channelPath)) {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/bootstrap-datepicker/1.');
|
2020-07-13 18:50:13 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
|
|
|
'path': 'resources/bootstrap-datepicker/' + lastVersion + '/bootstrap-datepicker3.standalone.min.css',
|
2020-07-13 18:50:13 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if (Regex.BOOTSTRAP_DATEPICKER.test(channelPath)) {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/bootstrap-datepicker/1.');
|
2020-07-13 18:50:13 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
|
|
|
'path': 'resources/bootstrap-datepicker/' + lastVersion + '/bootstrap-datepicker.standalone.min.css',
|
2020-07-13 18:50:13 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if (Regex.FONT_AWESOME.test(channelHost + channelPath)) {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/fontawesome/4.');
|
2020-08-03 13:36:13 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionRequested': '4.6.3',
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
2020-08-19 10:00:26 +02:00
|
|
|
'path': 'resources/webfont/fa-loader.css',
|
2020-08-03 13:36:13 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:30:58 +02:00
|
|
|
} else if (Regex.FONT_AWESOME_WITH_CODE.test(channelHost + channelPath)) {
|
2020-10-18 07:30:00 +02:00
|
|
|
let fileExtension = channelPath.endsWith('css') ? 'css' : 'jsm';
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/fontawesome/4.');
|
2020-08-03 13:36:13 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionRequested': '4.6.3',
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
2020-10-18 07:30:00 +02:00
|
|
|
'path': 'resources/webfont/fa-loader.' + fileExtension,
|
2020-08-03 13:36:13 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-23 07:36:41 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'cdn.jsdelivr.net/npm/vue') {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/vue/2.');
|
2020-08-23 07:36:41 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionRequested': 'latest',
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
|
|
|
'path': 'resources/vue/' + lastVersion + '/vue.min.jsm',
|
2020-08-23 07:36:41 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-08-30 22:20:31 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js') {
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionRequested': 'latest',
|
|
|
|
'path': 'resources/rocket-loader/latest/rocket-loader.min.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-09-20 08:22:37 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'unpkg.com/@umds/object-assign@4.1.1-beta.24/object-assign.min.js') {
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/object-assign@4.');
|
2020-09-20 08:22:37 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionRequested': '4.1.1',
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
|
|
|
'path': 'resources/object-assign/' + lastVersion + '/object-assign.min.jsm',
|
2020-09-20 08:22:37 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-10-11 08:10:37 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'netdna.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css') {
|
|
|
|
// This CDN delivers 'Font Awesome v4.7.0' as latest version
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/fontawesome/4.');
|
2020-10-11 08:10:37 +02:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionRequested': lastVersion,
|
|
|
|
'path': 'resources/fontawesome/' + lastVersion + '/css/font-awesome.min.css',
|
2020-10-11 08:10:37 +02:00
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-10-24 08:46:02 +02:00
|
|
|
} else if ((channelHost + channelPath) === 'cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.0.0-beta.2.4/owl.carousel.min.js') {
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionDelivered': '2.0.0-beta.2.4',
|
|
|
|
'versionRequested': '2.0.0-beta.2.4',
|
|
|
|
'path': 'resources/owl-carousel/2.0.0-beta.2.4/owl.carousel.min.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-10-25 18:27:07 +01:00
|
|
|
} else if ((channelHost + channelPath).startsWith('cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/')) {
|
|
|
|
let file = helpers.extractFilenameFromPath(channelPath);
|
|
|
|
if (file.endsWith('js')) {
|
|
|
|
file = file + 'm';
|
|
|
|
}
|
2020-11-05 13:44:41 +01:00
|
|
|
lastVersion = targets.setLastVersion('/select2/4.');
|
2020-10-25 18:27:07 +01:00
|
|
|
return {
|
|
|
|
'source': channelHost,
|
2020-11-05 07:08:55 +01:00
|
|
|
'versionDelivered': lastVersion,
|
2020-10-25 18:27:07 +01:00
|
|
|
'versionRequested': '4.1.0-beta.1',
|
2020-11-05 07:08:55 +01:00
|
|
|
'path': 'resources/select2/' + lastVersion + '/' + helpers.extractFilenameFromPath(channelPath),
|
2020-10-25 18:27:07 +01:00
|
|
|
'bundle': 'Select2'
|
|
|
|
};
|
2020-11-08 20:08:58 +01:00
|
|
|
} else if (channelHost + channelPath === 'cdn.jsdelivr.net/npm/anchor-js/anchor.min.js') {
|
|
|
|
// This CDN always delivers the latest version of 'AnchorJS'
|
|
|
|
lastVersion = targets.setLastVersion('/anchor-js/4.');
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionDelivered': lastVersion,
|
|
|
|
'versionRequested': lastVersion,
|
|
|
|
'path': 'resources/anchor-js/' + lastVersion + '/anchor.min.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-11-08 21:25:39 +01:00
|
|
|
} else if (channelHost + channelPath === 'www.gstatic.com/charts/loader.js') {
|
|
|
|
// This CDN always delivers the latest version of 'Google Charts'
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'path': 'resources/google-charts/loader.jsm',
|
|
|
|
'bundle': ''
|
|
|
|
};
|
2020-11-09 18:27:17 +01:00
|
|
|
} else if (Regex.FONT_AWESOME_ONLY_FONTS.test(channelPath)) {
|
|
|
|
lastVersion = targets.setLastVersion('/fontawesome/4.');
|
|
|
|
return {
|
|
|
|
'source': channelHost,
|
|
|
|
'versionDelivered': lastVersion,
|
2020-11-09 18:32:14 +01:00
|
|
|
'path': 'resources/fontawesome/' + lastVersion + '/fonts/' + helpers.extractFilenameFromPath(channelPath),
|
2020-11-09 18:27:17 +01:00
|
|
|
'bundle': 'Font Awesome (Fonts)'
|
|
|
|
};
|
2020-04-14 07:42:56 +02:00
|
|
|
} else {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
};
|