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

View File

@@ -1,7 +0,0 @@
const presetsCdnUrl = 'https://cdn.jsdelivr.net/npm/@openstreetmap/id-tagging-schema@{presets_version}/';
const presetsCdnVersion = '3';
export {
presetsCdnUrl,
presetsCdnVersion
};

30
config/id.js Normal file
View File

@@ -0,0 +1,30 @@
// cdns for external data packages
const presetsCdnUrl = 'https://cdn.jsdelivr.net/npm/@openstreetmap/id-tagging-schema@{presets_version}/';
const ociCdnUrl = 'https://cdn.jsdelivr.net/npm/osm-community-index@{version}/';
const wmfSitematrixCdnUrl = 'https://cdn.jsdelivr.net/npm/wmf-sitematrix@{version}/';
const nsiCdnUrl = 'https://cdn.jsdelivr.net/npm/name-suggestion-index@{version}/';
// api urls and settings
const osmApiConnections = [
{ // "live" db
url: 'https://www.openstreetmap.org',
client_id: '0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc',
client_secret: 'BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q'
}, { // "dev" db
url: 'https://api06.dev.openstreetmap.org',
client_id: 'Ee1wWJ6UlpERbF6BfTNOpwn0R8k_06mvMXdDUkeHMgw',
client_secret: 'OnfWFC-JkZNHyYdr_viNn_h_RTZXRslKcUxllOXqf5g'
}
];
const taginfoApiUrl = 'https://taginfo.openstreetmap.org/api/4/';
const nominatimApiUrl = 'https://nominatim.openstreetmap.org/';
export {
presetsCdnUrl,
ociCdnUrl,
wmfSitematrixCdnUrl,
nsiCdnUrl,
osmApiConnections,
taginfoApiUrl,
nominatimApiUrl,
};

11
dist/index.html vendored
View File

@@ -43,17 +43,6 @@
} else {
var context = iD.coreContext()
.assetPath('')
.apiConnections([
{
url: 'https://www.openstreetmap.org',
client_id: '0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc',
client_secret: 'BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q'
}, {
url: 'https://api06.dev.openstreetmap.org',
client_id: 'Ee1wWJ6UlpERbF6BfTNOpwn0R8k_06mvMXdDUkeHMgw',
client_secret: 'OnfWFC-JkZNHyYdr_viNn_h_RTZXRslKcUxllOXqf5g'
}
])
.containerNode(container);
context.init();

View File

@@ -43,17 +43,6 @@
} else {
var context = iD.coreContext()
.assetPath('dist/')
.apiConnections([
{
url: 'https://www.openstreetmap.org',
client_id: '0tmNTmd0Jo1dQp4AUmMBLtGiD9YpMuXzHefitcuVStc',
client_secret: 'BTlNrNxIPitHdL4sP2clHw5KLoee9aKkA7dQbc0Bj7Q'
}, {
url: 'https://api06.dev.openstreetmap.org',
client_id: 'Ee1wWJ6UlpERbF6BfTNOpwn0R8k_06mvMXdDUkeHMgw',
client_secret: 'OnfWFC-JkZNHyYdr_viNn_h_RTZXRslKcUxllOXqf5g'
}
])
.containerNode(container);
window.context = window.id = context; // for debugging
context.init();

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) {

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 = {};

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;

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();

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;

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 = {};

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')

View File

@@ -48,8 +48,8 @@
"@mapbox/sexagesimal": "1.2.0",
"@mapbox/vector-tile": "^1.3.1",
"@tmcw/togeojson": "^5.2.1",
"@turf/bbox-clip": "^6.0.0",
"@turf/bbox": "^6.0.0",
"@turf/bbox-clip": "^6.0.0",
"abortcontroller-polyfill": "^1.4.0",
"aes-js": "^3.1.2",
"alif-toolkit": "^1.2.9",
@@ -75,6 +75,7 @@
"@fortawesome/free-solid-svg-icons": "~6.2.0",
"@ideditor/temaki": "~5.1.0",
"@mapbox/maki": "^8.0.0",
"@openstreetmap/id-tagging-schema": "^3.5.1",
"autoprefixer": "^10.0.1",
"btoa": "^1.2.1",
"chai": "^4.3.4",