CDNUpdates/CDNConstants.py

230 lines
5.7 KiB
Python

"""CDNUpdates' constants module"""
import re
# pylint: disable=line-too-long
# This Semver regular expression has been written by @sindresorhus for NodeJS.
# It has been adapted to remove the starting non-fixed width look-behind (incompatible) and trailing positive look-ahead (useless here).
# <https://github.com/sindresorhus/semver-regex> (v3.1.1)
SEMVER_REGEXP_OBJECT = re.compile(
r"v?(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*)(?:\.(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*))*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?",
re.IGNORECASE
)
# This is a regular expression written by @diegoperini, and ported for Python by @adamrofer.
# <https://gist.github.com/dperini/729294>
# It has been tweaked to work with network path references and HTML tags.
LINK_REGEXP_PATTERN = r"(?:(https?:)?//)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-?)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S[^\"\s]*)?"
# pylint: enable=line-too-long
# This list stores the API links of handled CDN providers.
CDN_PROVIDERS = [
'cdnjs.cloudflare.com',
'maxcdn.bootstrapcdn.com',
'code.jquery.com',
'ajax.googleapis.com',
'cdn.jsdelivr.net',
'rawgit.com',
'cdn.rawgit.com',
'code.ionicframework.com',
'use.fontawesome.com',
'opensource.keycdn.com',
'cdn.staticfile.org',
'ajax.microsoft.com',
'ajax.aspnetcdn.com',
'cdn.ckeditor.com'
]
# The dictionaries below will store the "correspondences" between project names and...
# ... GitHub repositories identities (owner / name).
# This allows us to fetch latest version from GitHub when a provider does not offer any API.
MAXCDN_BOOTSTRAP_CORRESPONDENCES = {
'bootstrap': {
'owner': 'twbs',
'name': 'bootstrap'
},
'font-awesome': {
'owner': 'FortAwesome',
'name': 'Font-Awesome'
},
'bootlint': {
'owner': 'twbs',
'name': 'bootlint'
},
'bootswatch': {
'owner': 'thomaspark',
'name': 'bootswatch'
}
}
AJAX_GOOGLE_APIS_CORRESPONDENCES = {
'dojo': {
'owner': 'dojo',
'name': 'dojo'
},
'ext-core': {
'owner': 'ExtCore',
'name': 'ExtCore'
},
'hammerjs': {
'owner': 'hammerjs',
'name': 'hammer.js'
},
'indefinite-observable': {
'owner': 'material-motion',
'name': 'indefinite-observable-js'
},
'jquery': {
'owner': 'jquery',
'name': 'jquery'
},
'jquerymobile': {
'owner': 'jquery',
'name': 'jquery-mobile'
},
'jqueryui': {
'owner': 'jquery',
'name': 'jquery-ui'
},
'mootools': {
'owner': 'mootools',
'name': 'mootools-core'
},
'myanmar-tools': {
'owner': 'googlei18n',
'name': 'myanmar-tools'
},
'prototype': {
'owner': 'sstephenson',
'name': 'prototype'
},
'scriptaculous': {
'owner': 'madrobby',
'name': 'scriptaculous'
},
'shaka-player': {
'owner': 'google',
'name': 'shaka-player'
},
'spf': {
'owner': 'youtube',
'name': 'spfjs'
},
'swfobject': {
'owner': 'swfobject',
'name': 'swfobject'
},
'threejs': {
'owner': 'mrdoob',
'name': 'three.js'
},
'webfont': {
'owner': 'typekit',
'name': 'webfontloader'
}
}
OPENSOURCE_KEYCDN_CORRESPONDENCES = {
'fontawesome': {
'owner': 'FortAwesome',
'name': 'Font-Awesome'
},
'pure': {
'owner': 'yahoo',
'name': 'pure'
}
}
CDN_STATIC_FILE_CORRESPONDENCES = {
'react': {
'owner': 'facebook',
'name': 'react'
},
'vue': {
'owner': 'vuejs',
'name': 'vue'
},
'angular.js': {
'owner': 'angular',
'name': 'angular.js'
},
'jquery': {
'owner': 'jquery',
'name': 'jquery'
}
}
# Sources : <https://docs.microsoft.com/en-us/aspnet/ajax/cdn/>
AJAX_MICROSOFT_CORRESPONDENCES = {
'jquery': {
'owner': 'jquery',
'name': 'jquery'
},
'jquery.migrate': {
'owner': 'jquery',
'name': 'jquery-migrate'
},
'jquery.ui': {
'owner': 'jquery',
'name': 'jquery-ui'
},
'jquery.mobile': {
'owner': 'jquery',
'name': 'jquery-mobile'
},
'jquery.validate': {
'owner': 'jquery-validation',
'name': 'jquery-validation'
},
'jquery.templates': {
'owner': 'BorisMoore',
'name': 'jquery-tmpl',
'fuzzy_check': True
},
'jquery.cycle': {
'owner': 'malsup',
'name': 'cycle2'
},
'jquery.dataTables': {
'owner': 'dataTables',
'name': 'dataTables'
},
'jshint': {
'owner': 'jshint',
'name': 'jshint'
},
'modernizr': {
'owner': 'Modernizr',
'name': 'Modernizr'
},
'respond': {
'owner': 'scottjehl',
'name': 'Respond'
},
'globalize': {
'owner': 'globalizejs',
'name': 'globalize'
},
'knockout': {
'owner': 'knockout',
'name': 'knockout'
},
'bootstrap': {
'owner': 'twbs',
'name': 'bootstrap'
},
'bootstrap-touch-carousel': {
'owner': 'ixisio',
'name': 'bootstrap-touch-carousel'
},
'hammer.js': {
'owner': 'hammerjs',
'name': 'hammer.js'
},
'signalr': {
'owner': 'SignalR',
'name': 'SignalR'
}
}