{"version":3,"file":"migrate.mjs","names":[],"sources":["../src/migrate.ts"],"sourcesContent":["import {migrateV8} from './migrate/v8';\nimport {expressions} from './migrate/expressions';\nimport {migrateColors} from './migrate/migrate_colors';\nimport {eachProperty} from './visit';\nimport type {StyleSpecification} from './types.g';\n\n/**\n * Migrate a Mapbox/MapLibre GL Style to the latest version.\n *\n * @param style - a MapLibre Style\n * @returns a migrated style\n * @example\n * const fs = require('fs');\n * const migrate = require('@maplibre/maplibre-gl-style-spec').migrate;\n * const style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport function migrate(style: StyleSpecification): StyleSpecification {\n let migrated = false;\n\n if ((style.version as any) === 7) {\n style = migrateV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n migrated = !!expressions(style);\n migrated = true;\n }\n\n eachProperty(style, {paint: true, layout: true}, ({value, reference, set}) => {\n if (reference?.type === 'color') {\n set(migrateColors(value));\n }\n });\n\n if (!migrated) {\n throw new Error(`Cannot migrate from ${style.version}`);\n }\n\n return style;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,SAAgB,QAAQ,OAA+C;CACnE,IAAI,WAAW;CAEf,IAAK,MAAM,YAAoB,GAAG;EAC9B,QAAQ,UAAU,KAAK;EACvB,WAAW;CACf;CAEA,IAAI,MAAM,YAAY,GAAG;EACrB,WAAW,CAAC,CAAC,YAAY,KAAK;EAC9B,WAAW;CACf;CAEA,aAAa,OAAO;EAAC,OAAO;EAAM,QAAQ;CAAI,IAAI,EAAC,OAAO,WAAW,UAAS;EAC1E,IAAI,WAAW,SAAS,SACpB,IAAI,cAAc,KAAK,CAAC;CAEhC,CAAC;CAED,IAAI,CAAC,UACD,MAAM,IAAI,MAAM,uBAAuB,MAAM,SAAS;CAG1D,OAAO;AACX"}