make more cdn's and API urls/settings configurable

* CDNs for OCI, NSI, etc.
* OSM API (URL and oauth API settings)
* taginfo API
* nominatim API
This commit is contained in:
Martin Raifer
2022-10-14 18:24:29 +02:00
parent e8ceba1107
commit c8a3cf154b
12 changed files with 74 additions and 62 deletions
-8
View File
@@ -103,14 +103,6 @@ export function coreContext() {
return context;
};
/* connection options for source switcher (optional) */
let _apiConnections;
context.apiConnections = function(val) {
if (!arguments.length) return _apiConnections;
_apiConnections = val;
return context;
};
// A string or array or locale codes to prefer over the browser's settings
context.locale = function(locale) {
+12 -11
View File
@@ -1,5 +1,5 @@
import parseVersion from 'vparse';
import { presetsCdnUrl, presetsCdnVersion } from '../../config/cdn.js';
import { presetsCdnUrl, ociCdnUrl, wmfSitematrixCdnUrl } from '../../config/id.js';
// Double check this resolves to iD's `package.json`
import packageJSON from '../../package.json';
@@ -13,7 +13,8 @@ export { _mainFileFetcher as fileFetcher };
export function coreFileFetcher() {
const ociVersion = packageJSON.dependencies['osm-community-index'] || packageJSON.devDependencies['osm-community-index'];
const v = parseVersion(ociVersion);
const vMinor = `${v.major}.${v.minor}`;
const ociVersionMinor = `${v.major}.${v.minor}`;
const presetsVersionMajor = parseVersion(packageJSON.devDependencies['@openstreetmap/id-tagging-schema']).major;
let _this = {};
let _inflight = {};
@@ -24,21 +25,21 @@ export function coreFileFetcher() {
'keepRight': 'data/keepRight.min.json',
'languages': 'data/languages.min.json',
'locales': 'locales/index.min.json',
'oci_defaults': `https://cdn.jsdelivr.net/npm/osm-community-index@${vMinor}/dist/defaults.min.json`,
'oci_features': `https://cdn.jsdelivr.net/npm/osm-community-index@${vMinor}/dist/featureCollection.min.json`,
'oci_resources': `https://cdn.jsdelivr.net/npm/osm-community-index@${vMinor}/dist/resources.min.json`,
'presets_package': presetsCdnUrl.replace('{presets_version}', presetsCdnVersion) + 'package.json',
'phone_formats': 'data/phone_formats.min.json',
'qa_data': 'data/qa_data.min.json',
'shortcuts': 'data/shortcuts.min.json',
'territory_languages': 'data/territory_languages.min.json',
'oci_defaults': ociCdnUrl.replace('{version}', ociVersionMinor) + 'dist/defaults.min.json',
'oci_features': ociCdnUrl.replace('{version}', ociVersionMinor) + 'dist/featureCollection.min.json',
'oci_resources': ociCdnUrl.replace('{version}', ociVersionMinor) + 'dist/resources.min.json',
'presets_package': presetsCdnUrl.replace('{presets_version}', presetsVersionMajor) + 'package.json',
'deprecated': presetsCdnUrl + 'dist/deprecated.min.json',
'discarded': presetsCdnUrl + 'dist/discarded.min.json',
'preset_categories': presetsCdnUrl + 'dist/preset_categories.min.json',
'preset_defaults': presetsCdnUrl + 'dist/preset_defaults.min.json',
'preset_fields': presetsCdnUrl + 'dist/fields.min.json',
'preset_presets': presetsCdnUrl + 'dist/presets.min.json',
'phone_formats': 'data/phone_formats.min.json',
'qa_data': 'data/qa_data.min.json',
'shortcuts': 'data/shortcuts.min.json',
'territory_languages': 'data/territory_languages.min.json',
'wmf_sitematrix': 'https://cdn.jsdelivr.net/npm/wmf-sitematrix@0.1/wikipedia.min.json'
'wmf_sitematrix': wmfSitematrixCdnUrl.replace('{version}', '0.1') + 'wikipedia.min.json'
};
let _cachedData = {};
+3 -1
View File
@@ -4,8 +4,10 @@ import RBush from 'rbush';
import { geoExtent } from '../geo';
import { utilQsString } from '../util';
import { nominatimApiUrl } from '../../config/id.js';
var apibase = 'https://nominatim.openstreetmap.org/';
var apibase = nominatimApiUrl;
var _inflight = {};
var _nominatimCache;
+10 -7
View File
@@ -4,6 +4,8 @@ import parseVersion from 'vparse';
import { fileFetcher, locationManager } from '../core';
import { presetManager } from '../presets';
import { nsiCdnUrl } from '../../config/id.js';
// Make very sure this resolves to iD's `package.json`
// If you mess up the `../`s, the resolver may import another random package.json from somewhere else.
import packageJSON from '../../package.json';
@@ -47,14 +49,15 @@ function setNsiSources() {
const nsiVersion = packageJSON.dependencies['name-suggestion-index'] || packageJSON.devDependencies['name-suggestion-index'];
const v = parseVersion(nsiVersion);
const vMinor = `${v.major}.${v.minor}`;
const cdn = nsiCdnUrl.replace('{version}', vMinor);
const sources = {
'nsi_data': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/nsi.min.json`,
'nsi_dissolved': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/dissolved.min.json`,
'nsi_features': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/featureCollection.min.json`,
'nsi_generics': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/genericWords.min.json`,
'nsi_presets': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/presets/nsi-id-presets.min.json`,
'nsi_replacements': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/replacements.min.json`,
'nsi_trees': `https://cdn.jsdelivr.net/npm/name-suggestion-index@${vMinor}/dist/trees.min.json`
'nsi_data': cdn + 'dist/nsi.min.json',
'nsi_dissolved': cdn + 'dist/dissolved.min.json',
'nsi_features': cdn + 'dist/featureCollection.min.json',
'nsi_generics': cdn + 'dist/genericWords.min.json',
'nsi_presets': cdn + 'dist/presets/nsi-id-presets.min.json',
'nsi_replacements': cdn + 'dist/replacements.min.json',
'nsi_trees': cdn + 'dist/trees.min.json'
};
let fileMap = fileFetcher.fileMap();
+14 -3
View File
@@ -10,21 +10,24 @@ import { geoExtent, geoRawMercator, geoVecAdd, geoZoomToScale } from '../geo';
import { osmEntity, osmNode, osmNote, osmRelation, osmWay } from '../osm';
import { utilArrayChunk, utilArrayGroupBy, utilArrayUniq, utilObjectOmit, utilRebind, utilTiler, utilQsString } from '../util';
import { osmApiConnections } from '../../config/id.js';
var tiler = utilTiler();
var dispatch = d3_dispatch('apiStatusChange', 'authLoading', 'authDone', 'change', 'loading', 'loaded', 'loadedNotes');
var urlroot = 'https://www.openstreetmap.org';
var urlroot = osmApiConnections[0].url;
var redirectPath = window.location.origin + window.location.pathname;
var oauth = osmAuth({
url: urlroot,
client_id: '0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc',
client_secret: 'BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q',
client_id: osmApiConnections[0].client_id,
client_secret: osmApiConnections[0].client_secret,
scope: 'read_prefs write_prefs write_api read_gpx write_notes',
redirect_uri: redirectPath + 'land.html',
loading: authLoading,
done: authDone
});
var _apiConnections = osmApiConnections;
// hardcode default block of Google Maps
var _imageryBlocklists = [/.*\.google(apis)?\..*\/(vt|kh)[\?\/].*([xyz]=.*){3}.*/];
@@ -1276,6 +1279,14 @@ export default {
},
/* connection options for source switcher (optional) */
apiConnections: function(val) {
if (!arguments.length) return _apiConnections;
_apiConnections = val;
return this;
},
switch: function(newOptions) {
urlroot = newOptions.url;
+2 -1
View File
@@ -5,8 +5,9 @@ import { json as d3_json } from 'd3-fetch';
import { utilObjectOmit, utilQsString } from '../util';
import { localizer } from '../core/localizer';
import { taginfoApiUrl } from '../../config/id.js';
var apibase = 'https://taginfo.openstreetmap.org/api/4/';
var apibase = taginfoApiUrl;
var _inflight = {};
var _popularKeys = {};
var _taginfoCache = {};
+1 -1
View File
@@ -293,7 +293,7 @@ export function uiInit(context) {
.attr('class', 'user-list')
.call(uiContributors(context));
var apiConnections = context.apiConnections();
var apiConnections = context.connection().apiConnections();
if (apiConnections && apiConnections.length > 1) {
aboutList
.append('li')