You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
883 B
37 lines
883 B
|
3 years ago
|
|
||
|
|
import migrateToV8 from './migrate/v8.js';
|
||
|
|
import migrateToExpressions from './migrate/expressions.js';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Migrate a Mapbox GL Style to the latest version.
|
||
|
|
*
|
||
|
|
* @private
|
||
|
|
* @alias migrate
|
||
|
|
* @param {object} style a Mapbox GL Style
|
||
|
|
* @returns {Object} a migrated style
|
||
|
|
* @example
|
||
|
|
* var fs = require('fs');
|
||
|
|
* var migrate = require('mapbox-gl-style-spec').migrate;
|
||
|
|
* var style = fs.readFileSync('./style.json', 'utf8');
|
||
|
|
* fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));
|
||
|
|
*/
|
||
|
|
export default function(style) {
|
||
|
|
let migrated = false;
|
||
|
|
|
||
|
|
if (style.version === 7) {
|
||
|
|
style = migrateToV8(style);
|
||
|
|
migrated = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (style.version === 8) {
|
||
|
|
migrated = migrateToExpressions(style);
|
||
|
|
migrated = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!migrated) {
|
||
|
|
throw new Error('cannot migrate from', style.version);
|
||
|
|
}
|
||
|
|
|
||
|
|
return style;
|
||
|
|
}
|