{"version":3,"file":"index.cjs","sources":["../../../node_modules/json-stringify-pretty-compact/index.js","../format.ts","../visit.ts","../migrate/v8.ts","../expression/parsing_error.ts","../expression/scope.ts","../expression/types.ts","../../../node_modules/csscolorparser/csscolorparser.js","../util/interpolate.ts","../util/color.ts","../expression/types/collator.ts","../expression/types/formatted.ts","../expression/types/image_id.ts","../expression/types/image_variant.ts","../expression/types/resolved_image.ts","../expression/values.ts","../expression/definitions/literal.ts","../expression/runtime_error.ts","../expression/definitions/assertion.ts","../expression/definitions/format.ts","../expression/definitions/image.ts","../util/get_type.ts","../expression/definitions/coercion.ts","../expression/evaluation_context.ts","../expression/compound_expression.ts","../expression/definitions/collator.ts","../../../node_modules/@mapbox/point-geometry/index.js","../util/geometry_util.ts","../expression/definitions/within.ts","../../../node_modules/cheap-ruler/index.js","../../../node_modules/tinyqueue/index.js","../data/extent.ts","../expression/definitions/distance.ts","../expression/is_constant.ts","../expression/definitions/config.ts","../expression/definitions/var.ts","../expression/parsing_context.ts","../expression/stops.ts","../expression/definitions/step.ts","../../../node_modules/@mapbox/unitbezier/index.js","../util/color_spaces.ts","../expression/definitions/interpolate.ts","../expression/definitions/coalesce.ts","../expression/definitions/let.ts","../expression/definitions/at.ts","../expression/definitions/at_interpolated.ts","../expression/definitions/in.ts","../expression/definitions/index_of.ts","../expression/definitions/match.ts","../expression/definitions/case.ts","../expression/definitions/slice.ts","../expression/definitions/split.ts","../expression/definitions/comparison.ts","../expression/definitions/number_format.ts","../expression/definitions/length.ts","../util/random.ts","../expression/definitions/index.ts","../expression/expression_dependencies.ts","../util/result.ts","../util/properties.ts","../function/index.ts","../expression/index.ts","../function/convert.ts","../util/unbundle_jsonlint.ts","../feature_filter/index.ts","../feature_filter/convert.ts","../migrate/expressions.ts","../migrate.ts","../composite.ts","../util/ref_properties.ts","../deref.ts","../util/deep_equal.ts","../diff.ts","../error/validation_error.ts","../error/parsing_error.ts","../validate/validate_import.ts","../validate/validate_array.ts","../validate/validate_number.ts","../validate/validate_function.ts","../validate/validate_expression.ts","../validate/validate_boolean.ts","../validate/validate_color.ts","../validate/validate_enum.ts","../validate/validate_filter.ts","../validate/validate_property.ts","../validate/validate_appearance.ts","../validate/validate_paint_property.ts","../validate/validate_layout_property.ts","../validate/validate_layer.ts","../validate/validate_string.ts","../validate/validate_source.ts","../validate/validate_model.ts","../validate/validate_light.ts","../validate/validate_lights.ts","../validate/validate_terrain.ts","../validate/validate_fog.ts","../validate/validate_formatted.ts","../validate/validate_image.ts","../validate/validate_projection.ts","../validate/validate_iconset.ts","../validate/validate.ts","../validate/validate_object.ts","../validate/validate_glyphs_url.ts","../validate/validate_style.ts","../validate_style.min.ts","../../../node_modules/@mapbox/jsonlint-lines-primitives/lib/jsonlint.js","../read_style.ts","../validate_style.ts","../validate_mapbox_api_supported.ts","../style-spec.ts"],"sourcesContent":["// Note: This regex matches even invalid JSON strings, but since we’re\n// working on the output of `JSON.stringify` we know that only valid strings\n// are present (unless the user supplied a weird `options.indent` but in\n// that case we don’t care since the output would be invalid anyway).\nconst stringOrChar = /(\"(?:[^\\\\\"]|\\\\.)*\")|[:,]/g;\n\nexport default function stringify(passedObj, options = {}) {\n const indent = JSON.stringify(\n [1],\n undefined,\n options.indent === undefined ? 2 : options.indent\n ).slice(2, -3);\n\n const maxLength =\n indent === \"\"\n ? Infinity\n : options.maxLength === undefined\n ? 80\n : options.maxLength;\n\n let { replacer } = options;\n\n return (function _stringify(obj, currentIndent, reserved) {\n if (obj && typeof obj.toJSON === \"function\") {\n obj = obj.toJSON();\n }\n\n const string = JSON.stringify(obj, replacer);\n\n if (string === undefined) {\n return string;\n }\n\n const length = maxLength - currentIndent.length - reserved;\n\n if (string.length <= length) {\n const prettified = string.replace(\n stringOrChar,\n (match, stringLiteral) => {\n return stringLiteral || `${match} `;\n }\n );\n if (prettified.length <= length) {\n return prettified;\n }\n }\n\n if (replacer != null) {\n obj = JSON.parse(string);\n replacer = undefined;\n }\n\n if (typeof obj === \"object\" && obj !== null) {\n const nextIndent = currentIndent + indent;\n const items = [];\n let index = 0;\n let start;\n let end;\n\n if (Array.isArray(obj)) {\n start = \"[\";\n end = \"]\";\n const { length } = obj;\n for (; index < length; index++) {\n items.push(\n _stringify(obj[index], nextIndent, index === length - 1 ? 0 : 1) ||\n \"null\"\n );\n }\n } else {\n start = \"{\";\n end = \"}\";\n const keys = Object.keys(obj);\n const { length } = keys;\n for (; index < length; index++) {\n const key = keys[index];\n const keyPart = `${JSON.stringify(key)}: `;\n const value = _stringify(\n obj[key],\n nextIndent,\n keyPart.length + (index === length - 1 ? 0 : 1)\n );\n if (value !== undefined) {\n items.push(keyPart + value);\n }\n }\n }\n\n if (items.length > 0) {\n return [start, indent + items.join(`,\\n${nextIndent}`), end].join(\n `\\n${currentIndent}`\n );\n }\n }\n\n return string;\n })(passedObj, \"\", 0);\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n\nimport reference from './reference/latest';\nimport stringifyPretty from 'json-stringify-pretty-compact';\n\nfunction sortKeysBy(obj, reference) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const result: Record = {};\n for (const key in reference) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (obj[key] !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n result[key] = obj[key];\n }\n }\n for (const key in obj) {\n if (result[key] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * Format a Mapbox GL Style. Returns a stringified style with its keys\n * sorted in the same order as the reference style.\n *\n * The optional `space` argument is passed to\n * [`JSON.stringify`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)\n * to generate formatted output.\n *\n * If `space` is unspecified, a default of `2` spaces will be used.\n *\n * @private\n * @param {Object} style a Mapbox GL Style\n * @param {number} [space] space argument to pass to `JSON.stringify`\n * @returns {string} stringified formatted JSON\n * @example\n * var fs = require('fs');\n * var format = require('mapbox-gl-style-spec').format;\n * var style = fs.readFileSync('./source.json', 'utf8');\n * fs.writeFileSync('./dest.json', format(style));\n * fs.writeFileSync('./dest.min.json', format(style, 0));\n */\nfunction format(style, space = 2) {\n style = sortKeysBy(style, reference.$root);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (style.layers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n style.layers = style.layers.map((layer) => sortKeysBy(layer, reference.layer));\n }\n\n return stringifyPretty(style, {indent: space});\n}\n\nexport default format;\n","import Reference from './reference/v8.json';\n\nimport type {StylePropertySpecification} from './style-spec';\nimport type {\n StyleSpecification,\n SourceSpecification,\n LayerSpecification,\n PropertyValueSpecification\n} from './types';\n\nfunction getPropertyReference(propertyName: string): StylePropertySpecification {\n for (let i = 0; i < Reference.layout.length; i++) {\n for (const key in Reference[Reference.layout[i]]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (key === propertyName) return Reference[Reference.layout[i]][key] as StylePropertySpecification;\n }\n }\n for (let i = 0; i < Reference.paint.length; i++) {\n for (const key in Reference[Reference.paint[i]]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (key === propertyName) return Reference[Reference.paint[i]][key] as StylePropertySpecification;\n }\n }\n\n return null;\n}\n\nexport function eachSource(style: StyleSpecification, callback: (_: SourceSpecification) => void) {\n for (const k in style.sources) {\n callback(style.sources[k]);\n }\n}\n\nexport function eachLayer(style: StyleSpecification, callback: (_: LayerSpecification) => void) {\n for (const layer of style.layers) {\n callback(layer);\n }\n}\n\ntype PropertyCallback = (\n arg1: {\n path: [string, 'paint' | 'layout', string] // [layerid, paint/layout, property key];\n key: string;\n value: PropertyValueSpecification;\n reference: StylePropertySpecification;\n set: (\n arg1: PropertyValueSpecification,\n ) => void;\n },\n) => void;\n\nexport function eachProperty(\n style: StyleSpecification,\n options: {\n paint?: boolean;\n layout?: boolean;\n },\n callback: PropertyCallback\n) {\n function inner(layer: LayerSpecification, propertyType: 'paint' | 'layout') {\n if (layer.type === 'slot' || layer.type === 'clip') return;\n const properties = layer[propertyType];\n if (!properties) return;\n Object.keys(properties).forEach((key) => {\n callback({\n path: [layer.id, propertyType, key],\n key,\n value: properties[key],\n reference: getPropertyReference(key),\n set(x) {\n properties[key] = x;\n }\n });\n });\n }\n\n eachLayer(style, (layer) => {\n if (options.paint) {\n inner(layer, 'paint');\n }\n if (options.layout) {\n inner(layer, 'layout');\n }\n });\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\nimport {eachSource, eachLayer, eachProperty} from '../visit';\n\nfunction eachLayout(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('layout') === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n callback(layer[k], k);\n }\n }\n}\n\nfunction eachPaint(layer, callback) {\n for (const k in layer) {\n if (k.indexOf('paint') === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n callback(layer[k], k);\n }\n }\n}\n\nfunction resolveConstant(style, value) {\n if (typeof value === 'string' && value[0] === '@') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return resolveConstant(style, style.constants[value]);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return value;\n }\n}\n\nfunction isFunction(value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Array.isArray(value.stops);\n}\n\nfunction renameProperty(obj, from, to) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n obj[to] = obj[from]; delete obj[from];\n}\n\nexport default function (style) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n style.version = 8;\n\n // Rename properties, reverse coordinates in source and layers\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachSource(style, (source) => {\n if (source.type === 'video' && source.url !== undefined) {\n renameProperty(source, 'url', 'urls');\n }\n if (source.type === 'video') {\n source.coordinates.forEach((coord) => {\n return coord.reverse();\n });\n }\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (layout['symbol-min-distance'] !== undefined) {\n renameProperty(layout, 'symbol-min-distance', 'symbol-spacing');\n }\n });\n\n eachPaint(layer, (paint) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (paint['background-image'] !== undefined) {\n renameProperty(paint, 'background-image', 'background-pattern');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (paint['line-image'] !== undefined) {\n renameProperty(paint, 'line-image', 'line-pattern');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (paint['fill-image'] !== undefined) {\n renameProperty(paint, 'fill-image', 'fill-pattern');\n }\n });\n });\n\n // Inline Constants\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachProperty(style, {paint: true, layout: true}, (property) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = resolveConstant(style, property.value);\n\n if (isFunction(value)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n value.stops.forEach((stop) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n stop[1] = resolveConstant(style, stop[1]);\n });\n }\n\n property.set(value);\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete style.constants;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachLayer(style, (layer) => {\n // get rid of text-max-size, icon-max-size\n // turn text-size, icon-size into layout properties\n // https://github.com/mapbox/mapbox-gl-style-spec/issues/255\n\n eachLayout(layer, (layout) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete layout['text-max-size'];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete layout['icon-max-size'];\n });\n\n eachPaint(layer, (paint) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (paint['text-size']) {\n if (!layer.layout) layer.layout = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n layer.layout['text-size'] = paint['text-size'];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete paint['text-size'];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (paint['icon-size']) {\n if (!layer.layout) layer.layout = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n layer.layout['icon-size'] = paint['icon-size'];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete paint['icon-size'];\n }\n });\n });\n\n function migrateFontstackURL(input) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const inputParsed = new URL(input);\n const inputPathnameParts = inputParsed.pathname.split('/');\n\n if (inputParsed.protocol !== 'mapbox:') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return input;\n\n } else if (inputParsed.hostname === 'fontstack') {\n assert(decodeURI(inputParsed.pathname) === '/{fontstack}/{range}.pbf');\n return 'mapbox://fonts/mapbox/{fontstack}/{range}.pbf';\n\n } else if (inputParsed.hostname === 'fonts') {\n assert(inputPathnameParts[1] === 'v1');\n assert(decodeURI(inputPathnameParts[3]) === '{fontstack}');\n assert(decodeURI(inputPathnameParts[4]) === '{range}.pbf');\n return `mapbox://fonts/${inputPathnameParts[2]}/{fontstack}/{range}.pbf`;\n\n } else {\n assert(false);\n }\n\n function assert(predicate) {\n if (!predicate) {\n throw new Error(`Invalid font url: \"${input}\"`);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (style.glyphs) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n style.glyphs = migrateFontstackURL(style.glyphs);\n }\n\n function migrateFontStack(font) {\n function splitAndTrim(string) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return string.split(',').map((s) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return s.trim();\n });\n }\n\n if (Array.isArray(font)) {\n // Assume it's a previously migrated font-array.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return font;\n\n } else if (typeof font === 'string') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return splitAndTrim(font);\n\n } else if (typeof font === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n font.stops.forEach((stop) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n stop[1] = splitAndTrim(stop[1]);\n });\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return font;\n\n } else {\n throw new Error(\"unexpected font value\");\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n eachLayer(style, (layer) => {\n eachLayout(layer, (layout) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (layout['text-font']) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n layout['text-font'] = migrateFontStack(layout['text-font']);\n }\n });\n });\n\n // Reverse order of symbol layers. This is an imperfect migration.\n //\n // The order of a symbol layer in the layers list affects two things:\n // - how it is drawn relative to other layers (like oneway arrows below bridges)\n // - the placement priority compared to other layers\n //\n // It's impossible to reverse the placement priority without breaking the draw order\n // in some cases. This migration only reverses the order of symbol layers that\n // are above all other types of layers.\n //\n // Symbol layers that are at the top of the map preserve their priority.\n // Symbol layers that are below another type (line, fill) of layer preserve their draw order.\n\n let firstSymbolLayer = 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = style.layers.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const layer = style.layers[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (layer.type !== 'symbol') {\n firstSymbolLayer = i + 1;\n break;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const symbolLayers = style.layers.splice(firstSymbolLayer);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n symbolLayers.reverse();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n style.layers = style.layers.concat(symbolLayers);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return style;\n}\n","class ParsingError extends Error {\n key: string;\n override message: string;\n constructor(key: string, message: string) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\n\nexport default ParsingError;\n","import type {Expression} from './expression';\n\n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n parent: Scope | null | undefined;\n bindings: {\n [_: string]: Expression;\n };\n constructor(parent?: Scope, bindings: Array<[string, Expression]> = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n\n concat(bindings: Array<[string, Expression]>): Scope {\n return new Scope(this, bindings);\n }\n\n get(name: string): Expression {\n if (this.bindings[name]) { return this.bindings[name]; }\n if (this.parent) { return this.parent.get(name); }\n throw new Error(`${name} not found in scope.`);\n }\n\n has(name: string): boolean {\n if (this.bindings[name]) return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\n\nexport default Scope;\n","export type NullTypeT = {\n kind: 'null';\n};\nexport type NumberTypeT = {\n kind: 'number';\n};\nexport type StringTypeT = {\n kind: 'string';\n};\nexport type BooleanTypeT = {\n kind: 'boolean';\n};\nexport type ColorTypeT = {\n kind: 'color';\n};\nexport type ObjectTypeT = {\n kind: 'object';\n};\nexport type ValueTypeT = {\n kind: 'value';\n};\nexport type ErrorTypeT = {\n kind: 'error';\n};\nexport type CollatorTypeT = {\n kind: 'collator';\n};\nexport type FormattedTypeT = {\n kind: 'formatted';\n};\nexport type ResolvedImageTypeT = {\n kind: 'resolvedImage';\n};\n\nexport type EvaluationKind = 'constant' | 'source' | 'camera' | 'composite';\n\nexport type Type =\n | NullTypeT\n | NumberTypeT\n | StringTypeT\n | BooleanTypeT\n | ColorTypeT\n | ObjectTypeT\n | ValueTypeT\n | ArrayType\n | ErrorTypeT\n | CollatorTypeT\n | FormattedTypeT\n | ResolvedImageTypeT;\n\nexport type ArrayType = {\n kind: 'array';\n itemType: Type;\n N: number | null | undefined;\n};\n\nexport type NativeType = 'number' | 'string' | 'boolean' | 'null' | 'array' | 'object';\n\nexport const NullType = {kind: 'null'} as const;\nexport const NumberType = {kind: 'number'} as const;\nexport const StringType = {kind: 'string'} as const;\nexport const BooleanType = {kind: 'boolean'} as const;\nexport const ColorType = {kind: 'color'} as const;\nexport const ObjectType = {kind: 'object'} as const;\nexport const ValueType = {kind: 'value'} as const;\nexport const ErrorType = {kind: 'error'} as const;\nexport const CollatorType = {kind: 'collator'} as const;\nexport const FormattedType = {kind: 'formatted'} as const;\nexport const ResolvedImageType = {kind: 'resolvedImage'} as const;\n\nexport function array(itemType: Type, N?: number | null): ArrayType {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\n\nexport function toString(type: Type): string {\n if (type.kind === 'array') {\n const itemType = toString(type.itemType);\n return typeof type.N === 'number' ?\n `array<${itemType}, ${type.N}>` :\n type.itemType.kind === 'value' ? 'array' : `array<${itemType}>`;\n } else {\n return type.kind;\n }\n}\n\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array(ValueType),\n ResolvedImageType\n];\n\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nexport function checkSubtype(expected: Type, t: Type): string | null | undefined {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' &&\n ((t.N === 0 && t.itemType.kind === 'value') || !checkSubtype(expected.itemType, t.itemType)) &&\n (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n\n return `Expected ${toString(expected)} but found ${toString(t)} instead.`;\n}\n\nexport function isValidType(provided: Type, allowedTypes: Array): boolean {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\n\nexport function isValidNativeType(provided: unknown, allowedTypes: Array): boolean {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n\nexport function typeEquals(a: Type, b: Type): boolean {\n if (a.kind === 'array' && b.kind === 'array') {\n return a.N === b.N && typeEquals(a.itemType, b.itemType);\n } else {\n return a.kind === b.kind;\n }\n}\n","// (c) Dean McNamee , 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"rebeccapurple\": [102,51,153,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n","import Color from './color';\n\nexport function number(a: number, b: number, t: number): number {\n return (a * (1 - t)) + (b * t);\n}\n\nexport function color(from: Color, to: Color, t: number): Color {\n return new Color(\n number(from.r, to.r, t),\n number(from.g, to.g, t),\n number(from.b, to.b, t),\n number(from.a, to.a, t)\n );\n}\n\nexport function array(from: Array, to: Array, t: number): Array {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n","import {parseCSSColor} from 'csscolorparser';\nimport {number as lerp} from './interpolate';\n\nimport type {LUT} from '../types/lut';\n\n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(r: number, g: number, b: number, a: number = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n static black: Color;\n static white: Color;\n static transparent: Color;\n static red: Color;\n static blue: Color;\n\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input?: string | Color | null): Color | undefined {\n if (!input) {\n return undefined;\n }\n\n if (input instanceof Color) {\n return input;\n }\n\n if (typeof input !== 'string') {\n return undefined;\n }\n\n const rgba = parseCSSColor(input);\n if (!rgba) {\n return undefined;\n }\n\n return new Color(\n rgba[0] / 255,\n rgba[1] / 255,\n rgba[2] / 255,\n rgba[3]\n );\n }\n\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString(): string {\n const [r, g, b, a] = [\n this.r,\n this.g,\n this.b,\n this.a\n ];\n return `rgba(${Math.round(r * 255)},${Math.round(g * 255)},${Math.round(b * 255)},${a})`;\n }\n\n toNonPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor {\n const {r, g, b, a} = this;\n return new NonPremultipliedRenderColor(lut, r, g, b, a);\n }\n\n toPremultipliedRenderColor(lut: LUT | null): NonPremultipliedRenderColor {\n const {r, g, b, a} = this;\n return new PremultipliedRenderColor(lut, r * a, g * a, b * a, a);\n }\n\n clone(): Color {\n return new Color(this.r, this.g, this.b, this.a);\n }\n}\n\nexport abstract class RenderColor {\n premultiplied: boolean = false;\n\n r: number;\n g: number;\n b: number;\n a: number;\n\n constructor(lut: LUT | null, r: number, g: number, b: number, a: number, premultiplied: boolean = false) {\n this.premultiplied = premultiplied;\n if (!lut) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n } else {\n const N = lut.image.height;\n const N2 = N * N;\n\n // Normalize to cube dimensions.\n\n if (this.premultiplied) {\n r = a === 0 ? 0 : (r / a) * (N - 1);\n g = a === 0 ? 0 : (g / a) * (N - 1);\n b = a === 0 ? 0 : (b / a) * (N - 1);\n } else {\n r = r * (N - 1);\n g = g * (N - 1);\n b = b * (N - 1);\n }\n\n // Determine boundary values for the cube the color is in.\n const r0 = Math.floor(r);\n const g0 = Math.floor(g);\n const b0 = Math.floor(b);\n const r1 = Math.ceil(r);\n const g1 = Math.ceil(g);\n const b1 = Math.ceil(b);\n\n // Determine weights within the cube.\n const rw = r - r0;\n const gw = g - g0;\n const bw = b - b0;\n\n const data = lut.image.data;\n const i0 = (r0 + g0 * N2 + b0 * N) * 4;\n const i1 = (r0 + g0 * N2 + b1 * N) * 4;\n const i2 = (r0 + g1 * N2 + b0 * N) * 4;\n const i3 = (r0 + g1 * N2 + b1 * N) * 4;\n const i4 = (r1 + g0 * N2 + b0 * N) * 4;\n const i5 = (r1 + g0 * N2 + b1 * N) * 4;\n const i6 = (r1 + g1 * N2 + b0 * N) * 4;\n const i7 = (r1 + g1 * N2 + b1 * N) * 4;\n if (i0 < 0 || i7 >= data.length) {\n throw new Error(\"out of range\");\n }\n\n // Trilinear interpolation.\n this.r = lerp(\n lerp(\n lerp(data[i0], data[i1], bw),\n lerp(data[i2], data[i3], bw), gw),\n lerp(\n lerp(data[i4], data[i5], bw),\n lerp(data[i6], data[i7], bw), gw), rw) / 255 * (this.premultiplied ? a : 1);\n this.g = lerp(\n lerp(\n lerp(data[i0 + 1], data[i1 + 1], bw),\n lerp(data[i2 + 1], data[i3 + 1], bw), gw),\n lerp(\n lerp(data[i4 + 1], data[i5 + 1], bw),\n lerp(data[i6 + 1], data[i7 + 1], bw), gw), rw) / 255 * (this.premultiplied ? a : 1);\n this.b = lerp(\n lerp(\n lerp(data[i0 + 2], data[i1 + 2], bw),\n lerp(data[i2 + 2], data[i3 + 2], bw), gw),\n lerp(\n lerp(data[i4 + 2], data[i5 + 2], bw),\n lerp(data[i6 + 2], data[i7 + 2], bw), gw), rw) / 255 * (this.premultiplied ? a : 1);\n this.a = a;\n }\n }\n\n /**\n * Returns an RGBA array of values representing the color.\n * @returns An array of RGBA color values in the range [0, 255].\n */\n toArray(): [number, number, number, number] {\n const {r, g, b, a} = this;\n\n return [\n r * 255,\n g * 255,\n b * 255,\n a\n ];\n\n }\n\n /**\n * Returns an HSLA array of values representing the color, unpremultiplied by A.\n * @returns An array of HSLA color values.\n */\n toHslaArray(): [number, number, number, number] {\n let {r, g, b, a} = this;\n\n if (this.premultiplied) {\n if (a === 0) return [0, 0, 0, 0];\n const invA = 1 / a; // Single division, then multiply\n r *= invA;\n g *= invA;\n b *= invA;\n }\n\n const red = Math.min(Math.max(r, 0), 1);\n const green = Math.min(Math.max(g, 0), 1);\n const blue = Math.min(Math.max(b, 0), 1);\n\n const min = Math.min(red, green, blue);\n const max = Math.max(red, green, blue);\n const delta = max - min;\n\n const l = (min + max) * 0.5;\n\n if (delta === 0) {\n return [0, 0, l * 100, a];\n }\n\n const s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n let h: number;\n switch (max) {\n case red:\n h = ((green - blue) / delta + (green < blue ? 6 : 0)) * 60;\n break;\n case green:\n h = ((blue - red) / delta + 2) * 60;\n break;\n default: // blue\n h = ((red - green) / delta + 4) * 60;\n }\n\n return [h, s * 100, l * 100, a];\n }\n\n /**\n * Returns a RGBA array of float values representing the color.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01(): [number, number, number, number] {\n const {r, g, b, a} = this;\n\n return [\n r,\n g,\n b,\n a\n ];\n }\n\n /**\n * Returns an RGB array of values representing the color, unpremultiplied by A and multiplied by a scalar.\n *\n * @param {number} scale A scale to apply to the unpremultiplied-alpha values.\n * @returns An array of RGB color values in the range [0, 1].\n */\n toArray01Scaled(scale: number): [number, number, number] {\n const {r, g, b} = this;\n\n return [\n r * scale,\n g * scale,\n b * scale\n ];\n }\n\n /**\n * Returns an RGBA array of values representing the color converted to linear color space.\n * The color is defined by sRGB primaries, but the sRGB transfer function\n * is reversed to obtain linear energy.\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01Linear(): [number, number, number, number] {\n const {r, g, b, a} = this;\n\n return [\n Math.pow(r, 2.2),\n Math.pow(g, 2.2),\n Math.pow(b, 2.2),\n a\n ];\n }\n}\n\n/**\n * Renderable color created from a Color and an optional LUT value.\n * Represent a color value with non-premultiplied alpha.\n */\nexport class NonPremultipliedRenderColor extends RenderColor {\n constructor(lut: LUT | null, r: number, g: number, b: number, a: number) {\n super(lut, r, g, b, a, false);\n }\n}\n\n/**\n * Renderable color created from a Color and an optional LUT value.\n * Represent a color value with premultiplied alpha.\n */\nexport class PremultipliedRenderColor extends RenderColor {\n constructor(lut: LUT | null, r: number, g: number, b: number, a: number) {\n super(lut, r, g, b, a, true);\n }\n}\n\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\nColor.blue = new Color(0, 0, 1, 1);\n\nexport default Color;\n","export default class Collator {\n locale: string | null;\n sensitivity: 'base' | 'accent' | 'case' | 'variant';\n collator: Intl.Collator;\n\n constructor(caseSensitive: boolean, diacriticSensitive: boolean, locale: string | null) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [],\n {sensitivity: this.sensitivity, usage: 'search'});\n }\n\n compare(lhs: string, rhs: string): number {\n return this.collator.compare(lhs, rhs);\n }\n\n resolvedLocale(): string {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : [])\n .resolvedOptions().locale;\n }\n}\n","import type Color from '../../util/color';\nimport type ResolvedImage from '../types/resolved_image';\n\nexport class FormattedSection {\n text: string;\n image: ResolvedImage | null;\n scale: number | null;\n fontStack: string | null;\n textColor: Color | null;\n\n constructor(text: string, image: ResolvedImage | null, scale: number | null, fontStack: string | null, textColor: Color | null) {\n // combine characters so that diacritic marks are not separate code points\n this.text = text.normalize ? text.normalize() : text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\n\nexport default class Formatted {\n sections: Array;\n\n constructor(sections: Array) {\n this.sections = sections;\n }\n\n static fromString(unformatted: string): Formatted {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n\n isEmpty(): boolean {\n if (this.sections.length === 0) return true;\n return !this.sections.some(section => {\n if (section.text.length !== 0) return true;\n if (!section.image) return false;\n return section.image.hasPrimary();\n });\n }\n\n static factory(text: Formatted | string): Formatted {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n\n toString(): string {\n if (this.sections.length === 0) return '';\n return this.sections.map(section => section.text).join('');\n }\n\n serialize(): Array {\n const serialized: Array = [\"format\"];\n for (const section of this.sections) {\n if (section.image) {\n const primaryId = section.image.getPrimary().id.toString();\n serialized.push(['image', primaryId]);\n continue;\n }\n serialized.push(section.text);\n const options: {\n [key: string]: unknown;\n } = {};\n if (section.fontStack) {\n options[\"text-font\"] = [\"literal\", section.fontStack.split(',')];\n }\n if (section.scale) {\n options[\"font-scale\"] = section.scale;\n }\n if (section.textColor) {\n options[\"text-color\"] = ([\"rgba\"] as Array).concat(section.textColor.toNonPremultipliedRenderColor(null).toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","import type {Brand} from '../../types/brand';\n\nconst separator = '\\u001F';\n\nexport type ImageIdSpec = {\n name: string;\n iconsetId?: string;\n};\n\n/**\n * `StringifiedImageId` is a stringified version of the `ImageId`.\n *\n * @private\n */\nexport type StringifiedImageId = Brand;\n\n/**\n * `ImageId` is a reference to an {@link ImageVariant} in the sprite or iconset.\n *\n * @private\n */\nexport class ImageId {\n name: string;\n iconsetId?: string;\n\n constructor(id: string | ImageId | ImageIdSpec) {\n if (typeof id === 'string') {\n this.name = id;\n } else {\n this.name = id.name;\n this.iconsetId = id.iconsetId;\n }\n }\n\n static from(id: string | ImageId | ImageIdSpec): ImageId {\n return new ImageId(id);\n }\n\n static toString(id: ImageId | ImageIdSpec): StringifiedImageId {\n return (id.iconsetId ? `${id.name}${separator}${id.iconsetId}` : id.name) as StringifiedImageId;\n }\n\n static parse(str: StringifiedImageId): ImageId | null {\n const [name, iconsetId] = str.split(separator);\n return new ImageId({name, iconsetId});\n }\n\n static isEqual(a: ImageId | ImageIdSpec, b: ImageId | ImageIdSpec): boolean {\n return a.name === b.name && a.iconsetId === b.iconsetId;\n }\n\n toString(): StringifiedImageId {\n return ImageId.toString(this);\n }\n\n serialize(): ImageIdSpec {\n return {name: this.name, iconsetId: this.iconsetId};\n }\n}\n","import {ImageId} from './image_id';\n\nimport type Color from '../../util/color';\nimport type {Brand} from '../../types/brand';\nimport type {ImageIdSpec} from './image_id';\n\n/**\n * `StringifiedImageVariant` is a stringified version of the `ImageVariant`.\n *\n * @private\n */\nexport type StringifiedImageVariant = Brand;\n\n/**\n * {@link ImageVariant} rasterization options.\n *\n * @private\n */\nexport type RasterizationOptions = {\n params?: Record;\n sx?: number;\n sy?: number;\n};\n\n/**\n * `ImageVariant` is a component of {@link ResolvedImage}\n * that represents either the primary or secondary image\n * along with its rendering configuration.\n *\n * @private\n */\nexport class ImageVariant implements RasterizationOptions {\n id: ImageId;\n params?: Record;\n sx: number;\n sy: number;\n\n constructor(id: string | ImageIdSpec, options: RasterizationOptions = {}) {\n this.id = ImageId.from(id);\n this.params = options.params;\n this.sx = options.sx || 1;\n this.sy = options.sy || 1;\n }\n\n toString(): StringifiedImageVariant {\n return JSON.stringify(this) as StringifiedImageVariant;\n }\n\n static parse(str: StringifiedImageVariant): ImageVariant | null {\n let id, params, sx, sy;\n\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n ({id, params, sx, sy} = JSON.parse(str) || {});\n } catch (e) {\n return null;\n }\n\n if (!id) return null;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n return new ImageVariant(id as ImageIdSpec, {params, sx, sy});\n }\n\n scaleSelf(factor: number, yFactor: number = factor): this {\n this.sx *= factor;\n this.sy *= yFactor;\n return this;\n }\n}\n","import {ImageId} from './image_id';\nimport {ImageVariant} from './image_variant';\n\nimport type {ImageIdSpec} from './image_id';\nimport type {RasterizationOptions} from './image_variant';\n\nexport default class ResolvedImage {\n primaryId: ImageId;\n primaryOptions?: RasterizationOptions;\n secondaryId?: ImageId;\n secondaryOptions?: RasterizationOptions;\n available: boolean;\n\n constructor(\n primaryId: string | ImageIdSpec,\n primaryOptions?: RasterizationOptions,\n secondaryId?: string | ImageIdSpec,\n secondaryOptions?: RasterizationOptions,\n available: boolean = false,\n ) {\n this.primaryId = ImageId.from(primaryId);\n this.primaryOptions = primaryOptions;\n if (secondaryId) this.secondaryId = ImageId.from(secondaryId);\n this.secondaryOptions = secondaryOptions;\n this.available = available;\n }\n\n toString(): string {\n if (this.primaryId && this.secondaryId) {\n const primaryName = this.primaryId.name;\n const secondaryName = this.secondaryId.name;\n return `[${primaryName},${secondaryName}]`;\n }\n\n return this.primaryId.name;\n }\n\n hasPrimary(): boolean {\n return !!this.primaryId;\n }\n\n getPrimary(): ImageVariant {\n return new ImageVariant(this.primaryId, this.primaryOptions);\n }\n\n hasSecondary(): boolean {\n return !!this.secondaryId;\n }\n\n getSecondary(): ImageVariant | null {\n if (!this.secondaryId) {\n return null;\n }\n\n return new ImageVariant(this.secondaryId, this.secondaryOptions);\n }\n\n static from(image: string | ResolvedImage): ResolvedImage {\n return typeof image === 'string' ? ResolvedImage.build({name: image}) : image;\n }\n\n static build(\n primaryId: string | ImageIdSpec,\n secondaryId?: string | ImageIdSpec,\n primaryOptions?: RasterizationOptions,\n secondaryOptions?: RasterizationOptions\n ): ResolvedImage | null {\n if (!primaryId || (typeof primaryId === 'object' && !('name' in primaryId))) return null; // treat empty values as no image\n return new ResolvedImage(primaryId, primaryOptions, secondaryId, secondaryOptions);\n }\n}\n","import assert from 'assert';\nimport Color from '../util/color';\nimport Collator from './types/collator';\nimport Formatted from './types/formatted';\nimport ResolvedImage from './types/resolved_image';\nimport {NullType, NumberType, StringType, BooleanType, ColorType, ObjectType, ValueType, CollatorType, FormattedType, ResolvedImageType, array} from './types';\n\nimport type {Type} from './types';\n\nexport function validateRGBA(r: unknown, g: unknown, b: unknown, a?: unknown): string | null {\n if (!(\n typeof r === 'number' && r >= 0 && r <= 255 &&\n typeof g === 'number' && g >= 0 && g <= 255 &&\n typeof b === 'number' && b >= 0 && b <= 255\n )) {\n const value = (typeof a === 'number' ? [r, g, b, a] : [r, g, b]) as number[];\n return `Invalid rgba value [${value.join(', ')}]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid rgba value [${([r, g, b, a] as number[]).join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport function validateHSLA(h: unknown, s: unknown, l: unknown, a?: unknown): string | null {\n if (!(\n typeof h === 'number' && h >= 0 && h <= 360\n )) {\n const value = (typeof a === 'number' ? [h, s, l, a] : [h, s, l]) as number[];\n return `Invalid hsla value [${value.join(', ')}]: 'h' must be between 0 and 360.`;\n }\n\n if (!(\n typeof s === 'number' && s >= 0 && s <= 100 &&\n typeof l === 'number' && l >= 0 && l <= 100\n )) {\n const value = (typeof a === 'number' ? [h, s, l, a] : [h, s, l]) as number[];\n return `Invalid hsla value [${value.join(', ')}]: 's', and 'l' must be between 0 and 100.`;\n }\n\n if (!(\n typeof a === 'undefined' || (typeof a === 'number' && a >= 0 && a <= 1)\n )) {\n return `Invalid hsla value [${([h, s, l, a] as number[]).join(', ')}]: 'a' must be between 0 and 1.`;\n }\n\n return null;\n}\n\nexport type Value = null | string | boolean | number | Color | Collator | Formatted | ResolvedImage | ReadonlyArray | {readonly [key: string]: Value};\n\nexport function isValue(mixed: unknown): boolean {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function typeOf(value: Value): Type {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType: Type;\n\n for (const item of value) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n\n return array(itemType || ValueType, length);\n } else {\n assert(typeof value === 'object');\n return ObjectType;\n }\n}\n\nexport function toString(value: Value): string {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value as string | number | boolean);\n } else if (value instanceof Formatted || value instanceof ResolvedImage || value instanceof Color) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nexport {Color, Collator};\n","import assert from 'assert';\nimport {isValue, typeOf, Color} from '../values';\nimport Formatted from '../types/formatted';\n\nimport type {Type} from '../types';\nimport type {Value} from '../values';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\n\nclass Literal implements Expression {\n type: Type;\n value: Value;\n\n constructor(type: Type, value: Value) {\n this.type = type;\n this.value = value;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): void | Literal {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n\n const value = args[1] as Value;\n let type = typeOf(value);\n\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (\n type.kind === 'array' &&\n type.N === 0 &&\n expected &&\n expected.kind === 'array' &&\n (typeof expected.N !== 'number' || expected.N === 0)\n ) {\n type = expected;\n }\n\n return new Literal(type, value);\n }\n\n evaluate(): Value {\n return this.value;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\"literal\", this.value];\n } else if (this.value instanceof Color) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return [\"rgba\" as SerializedExpression].concat(this.value.toNonPremultipliedRenderColor(null).toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n assert(this.value === null ||\n typeof this.value === 'string' ||\n typeof this.value === 'number' ||\n typeof this.value === 'boolean');\n return this.value as SerializedExpression;\n }\n }\n}\n\nexport default Literal;\n","class RuntimeError {\n name: string;\n message: string;\n\n constructor(message: string) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n\n toJSON(): string {\n return this.message;\n }\n}\n\nexport default RuntimeError;\n","import assert from 'assert';\nimport {\n ObjectType,\n ValueType,\n StringType,\n NumberType,\n BooleanType,\n checkSubtype,\n toString,\n array\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nconst types = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\n\nclass Assertion implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | void {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n let i = 1;\n let type;\n\n const name = args[0] as string;\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n itemType = types[type];\n i++;\n } else {\n itemType = ValueType;\n }\n\n let N: number | null | undefined;\n if (args.length > 3) {\n if (args[2] !== null &&\n (typeof args[2] !== 'number' ||\n args[2] < 0 ||\n args[2] !== Math.floor(args[2]))\n ) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = (args[2] as number);\n i++;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n type = array(itemType, N);\n } else {\n assert(types[name], name);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n type = types[name];\n }\n\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Assertion(type, parsed);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n for (let i = 0; i < this.args.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = this.args[i].evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`The expression ${JSON.stringify(this.args[i].serialize())} evaluated to ${toString(typeOf(value))} but was expected to be of type ${toString(this.type)}.`);\n }\n }\n\n assert(false);\n return null;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' ||\n itemType.kind === 'number' ||\n itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n // @ts-expect-error - TS2345 - Argument of type 'number' is not assignable to parameter of type '\"string\" | \"number\" | \"boolean\" | \"object\" | \"error\" | \"color\" | \"value\" | \"null\" | \"collator\" | \"formatted\" | \"resolvedImage\" | \"array\"'.\n serialized.push(N);\n }\n }\n }\n // @ts-expect-error - TS2769 - No overload matches this call.\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\n\nexport default Assertion;\n","import {\n NumberType,\n ValueType,\n FormattedType,\n array,\n StringType,\n ColorType,\n ResolvedImageType,\n typeEquals,\n} from '../types';\nimport Formatted, {FormattedSection} from '../types/formatted';\nimport {toString, typeOf} from '../values';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\nexport type FormattedSectionExpression = {\n // Content of a section may be Image expression or other\n // type of expression that is coercable to 'string'.\n content: Expression;\n scale: Expression | null;\n font: Expression | null;\n textColor: Expression | null;\n};\n\nexport default class FormatExpression implements Expression {\n type: Type;\n sections: Array;\n\n constructor(sections: Array) {\n this.type = FormattedType;\n this.sections = sections;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | void {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\n\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error(`First argument must be an image or text section.`);\n }\n\n const sections: Array = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = args[i];\n\n if (nextTokenMayBeObject && typeof arg === \"object\" && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parseObjectValue(arg['font-scale'], i, 'font-scale', NumberType);\n if (!scale) return null;\n }\n\n let font = null;\n if (arg['text-font']) {\n font = context.parseObjectValue(arg['text-font'], i, 'text-font', array(StringType));\n if (!font) return null;\n }\n\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parseObjectValue(arg['text-color'], i, 'text-color', ColorType);\n if (!textColor) return null;\n }\n\n const lastExpression = sections[sections.length - 1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n lastExpression.scale = scale;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n lastExpression.font = font;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], i, ValueType);\n if (!content) return null;\n\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n\n nextTokenMayBeObject = true;\n sections.push({content, scale: null, font: null, textColor: null});\n }\n }\n\n return new FormatExpression(sections);\n }\n\n evaluate(ctx: EvaluationContext): Formatted {\n const evaluateSection = (section: FormattedSectionExpression) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const evaluatedContent = section.content.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (typeEquals(typeOf(evaluatedContent), ResolvedImageType)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n\n return new FormattedSection(\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n toString(evaluatedContent),\n null,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n section.scale ? section.scale.evaluate(ctx) : null,\n section.font ? (section.font.evaluate(ctx) as string[]).join(',') : null,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n section.textColor ? section.textColor.evaluate(ctx) : null\n );\n };\n\n return new Formatted(this.sections.map(evaluateSection));\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n\n outputDefined(): boolean {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized: SerializedExpression[] = [\"format\"];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {} as SerializedExpression;\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n","import ResolvedImage from '../types/resolved_image';\nimport {ImageId} from '../types/image_id';\nimport {ColorType, ResolvedImageType, StringType} from '../types';\n\nimport type EvaluationContext from '../evaluation_context';\nimport type Color from '../../util/color';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\nimport type {Expression, SerializedExpression} from '../expression';\n\nexport type ImageParams = Record;\nexport type IconsetParams = {id: string};\n\nexport type ImageOptions = {\n params?: ImageParams;\n iconset?: IconsetParams;\n};\n\ntype SerializedImageOptions = {\n params?: Record;\n iconset?: IconsetParams;\n};\n\nfunction isImageOptions(value: unknown): value is ImageOptions {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nexport default class ImageExpression implements Expression {\n type: Type;\n\n namePrimary: Expression;\n paramsPrimary?: ImageParams;\n iconsetIdPrimary?: string;\n\n nameSecondary?: Expression;\n paramsSecondary?: ImageParams;\n iconsetIdSecondary?: string;\n\n _imageWarnHistory: Record = {};\n\n constructor(\n inputPrimary: Expression,\n inputSecondary?: Expression | null,\n inputPrimaryOptions?: ImageOptions,\n inputSecondaryOptions?: ImageOptions\n ) {\n this.type = ResolvedImageType;\n this.namePrimary = inputPrimary;\n this.nameSecondary = inputSecondary;\n\n if (inputPrimaryOptions) {\n this.paramsPrimary = inputPrimaryOptions.params;\n this.iconsetIdPrimary = inputPrimaryOptions.iconset ? inputPrimaryOptions.iconset.id : undefined;\n }\n\n if (inputSecondaryOptions) {\n this.paramsSecondary = inputSecondaryOptions.params;\n this.iconsetIdSecondary = inputSecondaryOptions.iconset ? inputSecondaryOptions.iconset.id : undefined;\n }\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | void {\n if (args.length < 2) {\n return context.error(`Expected two or more arguments.`);\n }\n\n let nextArgId = 1;\n const imageExpression: Array<{image: Expression, options?: ImageOptions}> = [];\n\n function tryParseImage() {\n if (nextArgId < args.length) {\n const imageName = context.parse(args[nextArgId], nextArgId++, StringType);\n if (!imageName) {\n context.error(imageExpression.length ? `Secondary image variant is not a string.` : `No image name provided.`);\n return false;\n }\n\n imageExpression.push({image: imageName, options: {}});\n return true;\n }\n\n return true;\n }\n\n function tryParseOptions() {\n if (nextArgId < args.length) {\n const options = args[nextArgId];\n if (!isImageOptions(options)) {\n return true;\n }\n\n const params = options.params;\n const iconset = options.iconset;\n const optionsContext = context.concat(nextArgId);\n\n if (!params && !iconset) {\n nextArgId++;\n return true;\n }\n\n // Parse the image options params as expressions\n if (params) {\n if (typeof params !== 'object' || params.constructor !== Object) {\n optionsContext.error(`Image options \\\"params\\\" should be an object`);\n return false;\n }\n\n const parsedParams: ImageParams = {};\n const childContext = optionsContext.concat(undefined, 'params');\n for (const key in params) {\n if (!key) {\n childContext.error(`Image parameter name should be non-empty`);\n return false;\n }\n\n const value = childContext.concat(undefined, key).parse(params[key], undefined, ColorType, undefined, {typeAnnotation: 'coerce'});\n if (!value) {\n return false;\n }\n\n parsedParams[key] = value;\n }\n\n imageExpression[imageExpression.length - 1].options.params = parsedParams;\n }\n\n // Validate the iconset image options\n if (iconset) {\n if (typeof iconset !== 'object' || iconset.constructor !== Object) {\n optionsContext.error(`Image options \\\"iconset\\\" should be an object`);\n return false;\n }\n\n if (!iconset.id) {\n optionsContext.error(`Image options \\\"iconset\\\" should have an \\\"id\\\" property`);\n return false;\n }\n\n imageExpression[imageExpression.length - 1].options.iconset = iconset;\n }\n\n nextArgId++;\n return true;\n }\n\n return true;\n }\n\n // Parse the primary and secondary image expressions\n for (let i = 0; i < 2; i++) {\n if (!tryParseImage() || !tryParseOptions()) {\n return;\n }\n }\n\n return new ImageExpression(\n imageExpression[0].image,\n imageExpression[1] ? imageExpression[1].image : undefined,\n imageExpression[0].options,\n imageExpression[1] ? imageExpression[1].options : undefined\n );\n }\n\n evaluateParams(ctx: EvaluationContext, params: Record | undefined): {params: Record} {\n const result: Record = {};\n if (params) {\n for (const key in params) {\n if (params[key]) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result[key] = params[key].evaluate(ctx);\n } catch (err) {\n continue;\n }\n }\n }\n } else {\n return undefined;\n }\n\n if (Object.keys(result).length === 0) {\n return undefined;\n }\n\n return {params: result};\n }\n\n evaluate(ctx: EvaluationContext): null | ResolvedImage {\n const primaryId = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n name: this.namePrimary.evaluate(ctx),\n iconsetId: this.iconsetIdPrimary\n };\n\n const secondaryId = this.nameSecondary ? {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n name: this.nameSecondary.evaluate(ctx),\n iconsetId: this.iconsetIdSecondary\n } : undefined;\n\n const value = ResolvedImage.build(\n primaryId,\n secondaryId,\n this.paramsPrimary ? this.evaluateParams(ctx, this.paramsPrimary) : undefined,\n this.paramsSecondary ? this.evaluateParams(ctx, this.paramsSecondary) : undefined\n );\n\n if (value && ctx.availableImages) {\n const primaryId = value.getPrimary().id;\n value.available = ctx.availableImages.some((id) => ImageId.isEqual(id, primaryId));\n if (value.available) {\n // If there's a secondary variant, only mark it available if both are present\n const secondaryId = value.getSecondary() ? value.getSecondary().id : null;\n if (secondaryId) value.available = ctx.availableImages.some((id) => ImageId.isEqual(id, secondaryId));\n }\n }\n\n return value;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.namePrimary);\n\n if (this.paramsPrimary) {\n for (const key in this.paramsPrimary) {\n if (this.paramsPrimary[key]) {\n fn(this.paramsPrimary[key]);\n }\n }\n }\n\n if (this.nameSecondary) {\n fn(this.nameSecondary);\n if (this.paramsSecondary) {\n for (const key in this.paramsSecondary) {\n if (this.paramsSecondary[key]) {\n fn(this.paramsSecondary[key]);\n }\n }\n }\n }\n }\n\n outputDefined(): boolean {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n\n serializeOptions(params: ImageParams, iconsetId: string): SerializedImageOptions | undefined {\n const result: SerializedImageOptions = {};\n\n if (iconsetId) {\n result.iconset = {id: iconsetId};\n }\n\n if (params) {\n result.params = {};\n for (const key in params) {\n if (params[key]) {\n result.params[key] = params[key].serialize();\n }\n }\n }\n\n return Object.keys(result).length > 0 ? result : undefined;\n }\n\n serialize(): SerializedExpression {\n const serialized: SerializedExpression = ['image', this.namePrimary.serialize()];\n\n if (this.paramsPrimary || this.iconsetIdPrimary) {\n const options = this.serializeOptions(this.paramsPrimary, this.iconsetIdPrimary);\n if (options) serialized.push(options);\n }\n\n if (this.nameSecondary) {\n serialized.push(this.nameSecondary.serialize());\n\n if (this.paramsSecondary || this.iconsetIdSecondary) {\n const options = this.serializeOptions(this.paramsSecondary, this.iconsetIdSecondary);\n if (options) serialized.push(options);\n }\n }\n\n return serialized;\n }\n}\n","export function getType(val: unknown): \"number\" | \"string\" | \"boolean\" | \"array\" | \"null\" | \"object\" | \"function\" | \"bigint\" | \"symbol\" | \"undefined\" | \"NaN\" {\n if (isString(val)) return 'string';\n if (isNumber(val)) return 'number';\n if (isBoolean(val)) return 'boolean';\n if (Array.isArray(val)) return 'array';\n if (val === null) return 'null';\n if (isObject(val)) return 'object';\n return typeof val;\n}\n\nexport function isObject(value: unknown): value is Record {\n if (value === null || value === undefined) return false;\n if (Array.isArray(value)) return false;\n if (typeof value === 'function') return false;\n if (value instanceof String || value instanceof Number || value instanceof Boolean) {\n return false;\n }\n return typeof value === 'object';\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string' || value instanceof String;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number' || value instanceof Number;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === 'boolean' || value instanceof Boolean;\n}\n","import assert from 'assert';\nimport {BooleanType, ColorType, NumberType, StringType, ValueType, array, NullType} from '../types';\nimport {Color, isValue, toString as valueToString, typeOf, validateRGBA} from '../values';\nimport RuntimeError from '../runtime_error';\nimport Formatted from '../types/formatted';\nimport FormatExpression from '../definitions/format';\nimport ImageExpression from '../definitions/image';\nimport ResolvedImage from '../types/resolved_image';\nimport {getType} from '../../util/get_type';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type, ArrayType} from '../types';\n\nconst types = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion implements Expression {\n type: Type | ArrayType;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | void {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n\n const name = args[0] as string;\n const parsed = [];\n let type: Type | ArrayType = NullType;\n if (name === 'to-array') {\n if (!Array.isArray(args[1])) {\n return null;\n }\n const arrayLength = args[1].length;\n if (context.expectedType) {\n if (context.expectedType.kind === 'array') {\n type = array(context.expectedType.itemType, arrayLength);\n } else {\n return context.error(`Expected ${context.expectedType.kind} but found array.`);\n }\n } else if (arrayLength > 0 && isValue(args[1][0])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value = (args[1][0]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n type = array(typeOf(value), arrayLength);\n } else {\n return null;\n }\n for (let i = 0; i < arrayLength; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const member = args[1][i];\n let parsedMember;\n if (Array.isArray(member)) {\n parsedMember = context.parse(member, undefined, type.itemType);\n } else {\n const memberType = getType(member);\n if (memberType !== type.itemType.kind) {\n return context.error(`Expected ${type.itemType.kind} but found ${memberType}.`);\n }\n parsedMember = context.registry['literal'].parse(['literal', member === undefined ? null : member], context);\n }\n if (!parsedMember) return null;\n parsed.push(parsedMember);\n }\n } else {\n assert(types[name], name);\n\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n type = types[name];\n\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input) return null;\n parsed.push(input);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Coercion(type, parsed);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c) return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${JSON.stringify(input)}: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Color((input[0]) / 255, (input[1]) / 255, (input[2]) / 255, (input[3]));\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(error || `Could not parse color from value '${typeof input === 'string' ? input : String(JSON.stringify(input))}'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value = arg.evaluate(ctx);\n if (value === null) return 0;\n const num = Number(value);\n if (isNaN(num)) continue;\n return num;\n }\n throw new RuntimeError(`Could not convert ${JSON.stringify(value)} to number.`);\n } else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return Formatted.fromString(valueToString(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'resolvedImage') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return ResolvedImage.build(valueToString(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'array') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this.args.map(arg => { return arg.evaluate(ctx); });\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return valueToString(this.args[0].evaluate(ctx));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{content: this.args[0], scale: null, font: null, textColor: null}]).serialize();\n }\n\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n\n const serialized: Array = this.type.kind === 'array' ? [] : [`to-${this.type.kind}`];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coercion;\n","import {Color} from './values';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {ImageId} from './types/image_id';\nimport type {FormattedSection} from './types/formatted';\nimport type {GlobalProperties, Feature, FeatureState} from './index';\nimport type {CanonicalTileID} from '../types/tile_id';\nimport type {FeatureDistanceData} from '../feature_filter/index';\nimport type {ConfigOptions, ConfigOptionValue} from '../types/config_options';\n\nconst geometryTypes = ['Unknown', 'Point', 'LineString', 'Polygon'];\n\nclass EvaluationContext {\n globals: GlobalProperties;\n feature: Feature | null | undefined;\n featureState: FeatureState | null | undefined;\n formattedSection: FormattedSection | null | undefined;\n availableImages: ImageId[] | null | undefined;\n canonical: null | CanonicalTileID;\n featureTileCoord: Point | null | undefined;\n featureDistanceData: FeatureDistanceData | null | undefined;\n scope: string | null | undefined;\n options: ConfigOptions | null | undefined;\n iconImageUseTheme: string | null | undefined;\n\n _parseColorCache: {\n [_: string]: Color | null | undefined;\n };\n\n constructor(scope?: string | null, options?: ConfigOptions | null, iconImageUseTheme?: string) {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n this.featureTileCoord = null;\n this.featureDistanceData = null;\n this.scope = scope;\n this.options = options;\n this.iconImageUseTheme = iconImageUseTheme;\n }\n\n id(): string | number | null {\n return this.feature && this.feature.id !== undefined ? this.feature.id : null;\n }\n\n geometryType(): null | string {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n\n geometry(): Array> | null | undefined {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n\n canonicalID(): null | CanonicalTileID {\n return this.canonical;\n }\n\n properties(): {readonly [key: string]: unknown} {\n return (this.feature && this.feature.properties) || {};\n }\n\n measureLight(_: string): number {\n return this.globals.brightness || 0;\n }\n\n distanceFromCenter(): number {\n if (this.featureTileCoord && this.featureDistanceData) {\n\n const c = this.featureDistanceData.center;\n const scale = this.featureDistanceData.scale;\n const {x, y} = this.featureTileCoord;\n\n // Calculate the distance vector `d` (left handed)\n const dX = x * scale - c[0];\n const dY = y * scale - c[1];\n\n // The bearing vector `b` (left handed)\n const bX = this.featureDistanceData.bearing[0];\n const bY = this.featureDistanceData.bearing[1];\n\n // Distance is calculated as `dot(d, v)`\n const dist = (bX * dX + bY * dY);\n return dist;\n }\n\n return 0;\n }\n\n parseColor(input: string): Color | undefined {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color.parse(input);\n }\n return cached;\n }\n\n getConfig(id: string): ConfigOptionValue | null | undefined {\n return this.options ? this.options.get(id) : null;\n }\n}\n\nexport default EvaluationContext;\n","import {toString} from './types';\nimport ParsingContext from './parsing_context';\nimport assert from 'assert';\n\nimport type EvaluationContext from './evaluation_context';\nimport type {Expression, ExpressionRegistry, SerializedExpression} from './expression';\nimport type {Type} from './types';\nimport type {Value} from './values';\n\nexport type Varargs = {\n type: Type;\n};\ntype Signature = Array | Varargs;\ntype Evaluate = (arg1: EvaluationContext, arg2: Array) => Value;\ntype Definition = [Type, Signature, Evaluate] | {\n type: Type;\n overloads: Array<[Signature, Evaluate]>;\n};\n\nclass CompoundExpression implements Expression {\n name: string;\n type: Type;\n _evaluate: Evaluate;\n args: Array;\n _overloadIndex: number;\n\n static definitions: {\n [_: string]: Definition;\n };\n\n constructor(name: string, type: Type, evaluate: Evaluate, args: Array, overloadIndex: number) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n this._overloadIndex = overloadIndex;\n }\n\n evaluate(ctx: EvaluationContext): Value {\n if (!this._evaluate) { // restore evaluate function after transfer between threads\n const definition = CompoundExpression.definitions[this.name];\n this._evaluate = Array.isArray(definition) ? definition[2] : definition.overloads[this._overloadIndex][1];\n }\n return this._evaluate(ctx, this.args);\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression[] {\n return [this.name as SerializedExpression].concat(this.args.map(arg => arg.serialize()));\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | void {\n const op = args[0] as string;\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${op}\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n\n // Now check argument types against each signature\n const type = Array.isArray(definition) ?\n definition[0] : definition.type;\n\n const availableOverloads = Array.isArray(definition) ?\n [[definition[1], definition[2]]] :\n definition.overloads;\n\n const overloadParams = [];\n\n let signatureContext: ParsingContext = null;\n\n let overloadIndex = -1;\n\n for (const [params, evaluate] of availableOverloads) {\n if (Array.isArray(params) && params.length !== args.length - 1) continue; // param count doesn't match\n\n overloadParams.push(params);\n overloadIndex++;\n\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext(context.registry, context.path, null, context.scope, undefined, context._scope, context.options, context.iconImageUseTheme);\n\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs: Array = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const expectedType = Array.isArray(params) ?\n params[i - 1] :\n // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'Varargs | Evaluate'.\n params.type;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${params.length} arguments, but found ${parsedArgs.length} instead.`);\n continue;\n }\n }\n\n for (let i = 0; i < parsedArgs.length; i++) {\n // @ts-expect-error - TS2339 - Property 'type' does not exist on type 'Varargs | Evaluate'.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n\n if (signatureContext.errors.length === 0) {\n // @ts-expect-error - TS2345 - Argument of type 'Signature | Evaluate' is not assignable to parameter of type 'Evaluate'.\n return new CompoundExpression(op, type, evaluate, parsedArgs, overloadIndex);\n }\n }\n\n assert(!signatureContext || signatureContext.errors.length > 0);\n\n if (overloadParams.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloadParams.length ? overloadParams : availableOverloads.map(([params]) => params);\n const signatures = expected.map(stringifySignature).join(' | ');\n\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed) return null;\n actualTypes.push(toString(parsed.type));\n }\n context.error(`Expected arguments of type ${signatures}, but found (${actualTypes.join(', ')}) instead.`);\n }\n\n return null;\n }\n\n static register(\n registry: ExpressionRegistry,\n definitions: {\n [_: string]: Definition;\n }\n ) {\n assert(!CompoundExpression.definitions);\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\n\nfunction stringifySignature(signature: Signature): string {\n if (Array.isArray(signature)) {\n return `(${signature.map(toString).join(', ')})`;\n } else {\n return `(${toString(signature.type)}...)`;\n }\n}\n\nexport default CompoundExpression;\n","import {StringType, BooleanType, CollatorType} from '../types';\nimport Collator from '../types/collator';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\nexport default class CollatorExpression implements Expression {\n type: Type;\n caseSensitive: Expression;\n diacriticSensitive: Expression;\n locale: Expression | null;\n\n constructor(caseSensitive: Expression, diacriticSensitive: Expression, locale: Expression | null) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | undefined {\n if (args.length !== 2)\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Expression'.\n return context.error(`Expected one argument.`);\n\n const options = args[1];\n if (typeof options !== \"object\" || Array.isArray(options))\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Expression'.\n return context.error(`Collator options argument must be an object.`);\n\n const caseSensitive = options['case-sensitive'] === undefined ?\n context.parse(false, 1, BooleanType) :\n context.parseObjectValue(options['case-sensitive'], 1, 'case-sensitive', BooleanType);\n if (!caseSensitive) return null;\n\n const diacriticSensitive = options['diacritic-sensitive'] === undefined ?\n context.parse(false, 1, BooleanType) :\n context.parseObjectValue(options['diacritic-sensitive'], 1, 'diacritic-sensitive', BooleanType);\n if (!diacriticSensitive) return null;\n\n let locale: Expression = null;\n if (options['locale']) {\n locale = context.parseObjectValue(options['locale'], 1, 'locale', StringType) as Expression;\n if (!locale) return null;\n }\n\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n\n evaluate(ctx: EvaluationContext): Collator {\n return new Collator(\n this.caseSensitive.evaluate(ctx) as boolean,\n this.diacriticSensitive.evaluate(ctx) as boolean,\n this.locale ? this.locale.evaluate(ctx) as string : null\n );\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n\n outputDefined(): boolean {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n\n serialize(): SerializedExpression {\n const options: Record = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\"collator\", options];\n }\n}\n","/**\n * A standalone point geometry with useful accessor, comparison, and\n * modification methods.\n *\n * @class\n * @param {number} x the x-coordinate. This could be longitude or screen pixels, or any other sort of unit.\n * @param {number} y the y-coordinate. This could be latitude or screen pixels, or any other sort of unit.\n *\n * @example\n * const point = new Point(-77, 38);\n */\nexport default function Point(x, y) {\n this.x = x;\n this.y = y;\n}\n\nPoint.prototype = {\n /**\n * Clone this point, returning a new point that can be modified\n * without affecting the old one.\n * @return {Point} the clone\n */\n clone() { return new Point(this.x, this.y); },\n\n /**\n * Add this point's x & y coordinates to another point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n add(p) { return this.clone()._add(p); },\n\n /**\n * Subtract this point's x & y coordinates to from point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n sub(p) { return this.clone()._sub(p); },\n\n /**\n * Multiply this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n multByPoint(p) { return this.clone()._multByPoint(p); },\n\n /**\n * Divide this point's x & y coordinates by point,\n * yielding a new point.\n * @param {Point} p the other point\n * @return {Point} output point\n */\n divByPoint(p) { return this.clone()._divByPoint(p); },\n\n /**\n * Multiply this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {number} k factor\n * @return {Point} output point\n */\n mult(k) { return this.clone()._mult(k); },\n\n /**\n * Divide this point's x & y coordinates by a factor,\n * yielding a new point.\n * @param {number} k factor\n * @return {Point} output point\n */\n div(k) { return this.clone()._div(k); },\n\n /**\n * Rotate this point around the 0, 0 origin by an angle a,\n * given in radians\n * @param {number} a angle to rotate around, in radians\n * @return {Point} output point\n */\n rotate(a) { return this.clone()._rotate(a); },\n\n /**\n * Rotate this point around p point by an angle a,\n * given in radians\n * @param {number} a angle to rotate around, in radians\n * @param {Point} p Point to rotate around\n * @return {Point} output point\n */\n rotateAround(a, p) { return this.clone()._rotateAround(a, p); },\n\n /**\n * Multiply this point by a 4x1 transformation matrix\n * @param {[number, number, number, number]} m transformation matrix\n * @return {Point} output point\n */\n matMult(m) { return this.clone()._matMult(m); },\n\n /**\n * Calculate this point but as a unit vector from 0, 0, meaning\n * that the distance from the resulting point to the 0, 0\n * coordinate will be equal to 1 and the angle from the resulting\n * point to the 0, 0 coordinate will be the same as before.\n * @return {Point} unit vector point\n */\n unit() { return this.clone()._unit(); },\n\n /**\n * Compute a perpendicular point, where the new y coordinate\n * is the old x coordinate and the new x coordinate is the old y\n * coordinate multiplied by -1\n * @return {Point} perpendicular point\n */\n perp() { return this.clone()._perp(); },\n\n /**\n * Return a version of this point with the x & y coordinates\n * rounded to integers.\n * @return {Point} rounded point\n */\n round() { return this.clone()._round(); },\n\n /**\n * Return the magnitude of this point: this is the Euclidean\n * distance from the 0, 0 coordinate to this point's x and y\n * coordinates.\n * @return {number} magnitude\n */\n mag() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n\n /**\n * Judge whether this point is equal to another point, returning\n * true or false.\n * @param {Point} other the other point\n * @return {boolean} whether the points are equal\n */\n equals(other) {\n return this.x === other.x &&\n this.y === other.y;\n },\n\n /**\n * Calculate the distance from this point to another point\n * @param {Point} p the other point\n * @return {number} distance\n */\n dist(p) {\n return Math.sqrt(this.distSqr(p));\n },\n\n /**\n * Calculate the distance from this point to another point,\n * without the square root step. Useful if you're comparing\n * relative distances.\n * @param {Point} p the other point\n * @return {number} distance\n */\n distSqr(p) {\n const dx = p.x - this.x,\n dy = p.y - this.y;\n return dx * dx + dy * dy;\n },\n\n /**\n * Get the angle from the 0, 0 coordinate to this point, in radians\n * coordinates.\n * @return {number} angle\n */\n angle() {\n return Math.atan2(this.y, this.x);\n },\n\n /**\n * Get the angle from this point to another point, in radians\n * @param {Point} b the other point\n * @return {number} angle\n */\n angleTo(b) {\n return Math.atan2(this.y - b.y, this.x - b.x);\n },\n\n /**\n * Get the angle between this point and another point, in radians\n * @param {Point} b the other point\n * @return {number} angle\n */\n angleWith(b) {\n return this.angleWithSep(b.x, b.y);\n },\n\n /**\n * Find the angle of the two vectors, solving the formula for\n * the cross product a x b = |a||b|sin(θ) for θ.\n * @param {number} x the x-coordinate\n * @param {number} y the y-coordinate\n * @return {number} the angle in radians\n */\n angleWithSep(x, y) {\n return Math.atan2(\n this.x * y - this.y * x,\n this.x * x + this.y * y);\n },\n\n /** @param {[number, number, number, number]} m */\n _matMult(m) {\n const x = m[0] * this.x + m[1] * this.y,\n y = m[2] * this.x + m[3] * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n /** @param {Point} p */\n _add(p) {\n this.x += p.x;\n this.y += p.y;\n return this;\n },\n\n /** @param {Point} p */\n _sub(p) {\n this.x -= p.x;\n this.y -= p.y;\n return this;\n },\n\n /** @param {number} k */\n _mult(k) {\n this.x *= k;\n this.y *= k;\n return this;\n },\n\n /** @param {number} k */\n _div(k) {\n this.x /= k;\n this.y /= k;\n return this;\n },\n\n /** @param {Point} p */\n _multByPoint(p) {\n this.x *= p.x;\n this.y *= p.y;\n return this;\n },\n\n /** @param {Point} p */\n _divByPoint(p) {\n this.x /= p.x;\n this.y /= p.y;\n return this;\n },\n\n _unit() {\n this._div(this.mag());\n return this;\n },\n\n _perp() {\n const y = this.y;\n this.y = this.x;\n this.x = -y;\n return this;\n },\n\n /** @param {number} angle */\n _rotate(angle) {\n const cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = cos * this.x - sin * this.y,\n y = sin * this.x + cos * this.y;\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * @param {number} angle\n * @param {Point} p\n */\n _rotateAround(angle, p) {\n const cos = Math.cos(angle),\n sin = Math.sin(angle),\n x = p.x + cos * (this.x - p.x) - sin * (this.y - p.y),\n y = p.y + sin * (this.x - p.x) + cos * (this.y - p.y);\n this.x = x;\n this.y = y;\n return this;\n },\n\n _round() {\n this.x = Math.round(this.x);\n this.y = Math.round(this.y);\n return this;\n },\n\n constructor: Point\n};\n\n/**\n * Construct a point from an array if necessary, otherwise if the input\n * is already a Point, return it unchanged.\n * @param {Point | [number, number] | {x: number, y: number}} p input value\n * @return {Point} constructed point.\n * @example\n * // this\n * var point = Point.convert([0, 1]);\n * // is equivalent to\n * var point = new Point(0, 1);\n */\nPoint.convert = function (p) {\n if (p instanceof Point) {\n return /** @type {Point} */ (p);\n }\n if (Array.isArray(p)) {\n return new Point(+p[0], +p[1]);\n }\n if (p.x !== undefined && p.y !== undefined) {\n return new Point(+p.x, +p.y);\n }\n throw new Error('Expected [x, y] or {x, y} point format');\n};\n","import quickselect from 'quickselect';\nimport Point from '@mapbox/point-geometry';\n\ntype Ring = Point[] & {area?: number};\n\n// minX, minY, maxX, maxY\nexport type BBox = [number, number, number, number];\n\n/**\n * Returns the signed area for the polygon ring. Postive areas are exterior rings and\n * have a clockwise winding. Negative areas are interior rings and have a counter clockwise\n * ordering.\n */\nfunction calculateSignedArea(ring: Ring): number {\n let sum = 0;\n for (let i = 0, len = ring.length, j = len - 1, p1, p2; i < len; j = i++) {\n p1 = ring[i];\n p2 = ring[j];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n sum += (p2.x - p1.x) * (p1.y + p2.y);\n }\n return sum;\n}\n\nfunction compareAreas(a: Ring, b: Ring): number {\n return b.area - a.area;\n}\n\n// classifies an array of rings into polygons with outer rings and holes\nexport function classifyRings(rings: Array, maxRings: number): Array> {\n const len = rings.length;\n\n if (len <= 1) return [rings];\n\n const polygons: Array> = [];\n let polygon,\n ccw;\n\n for (let i = 0; i < len; i++) {\n const area = calculateSignedArea(rings[i]);\n if (area === 0) continue;\n\n rings[i].area = Math.abs(area);\n\n if (ccw === undefined) ccw = area < 0;\n\n if (ccw === area < 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (polygon) polygons.push(polygon);\n polygon = [rings[i]];\n\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (polygon).push(rings[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (polygon) polygons.push(polygon);\n\n // Earcut performance degrades with the # of rings in a polygon. For this\n // reason, we limit strip out all but the `maxRings` largest rings.\n if (maxRings > 1) {\n for (let j = 0; j < polygons.length; j++) {\n if (polygons[j].length <= maxRings) continue;\n quickselect(polygons[j], maxRings, 1, polygons[j].length - 1, compareAreas);\n polygons[j] = polygons[j].slice(0, maxRings);\n }\n }\n\n return polygons;\n}\n\nexport function updateBBox(bbox: BBox, coord: GeoJSON.Position) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\n\nexport function boxWithinBox(bbox1: BBox, bbox2: BBox): boolean {\n if (bbox1[0] <= bbox2[0]) return false;\n if (bbox1[2] >= bbox2[2]) return false;\n if (bbox1[1] <= bbox2[1]) return false;\n if (bbox1[3] >= bbox2[3]) return false;\n return true;\n}\n\nfunction onBoundary(p: GeoJSON.Position, p1: GeoJSON.Position, p2: GeoJSON.Position) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return (x1 * y2 - x2 * y1 === 0) && (x1 * x2 <= 0) && (y1 * y2 <= 0);\n}\n\nfunction rayIntersect(p: GeoJSON.Position, p1: GeoJSON.Position, p2: GeoJSON.Position) {\n return ((p1[1] > p[1]) !== (p2[1] > p[1])) && (p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0]);\n}\n\n// ray casting algorithm for detecting if point is in polygon\nexport function pointWithinPolygon(\n point: GeoJSON.Position,\n rings: Array>,\n trueOnBoundary: boolean = false,\n): boolean {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length, k = len2 - 1; j < len2; k = j++) {\n const q1 = ring[k];\n const q2 = ring[j];\n if (onBoundary(point, q1, q2)) return trueOnBoundary;\n if (rayIntersect(point, q1, q2)) inside = !inside;\n }\n }\n return inside;\n}\n\nfunction perp(v1: GeoJSON.Position, v2: GeoJSON.Position) {\n return v1[0] * v2[1] - v1[1] * v2[0];\n}\n\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1: GeoJSON.Position, p2: GeoJSON.Position, q1: GeoJSON.Position, q2: GeoJSON.Position) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = x1 * y3 - x3 * y1;\n const det2 = x2 * y3 - x3 * y2;\n if ((det1 > 0 && det2 < 0) || (det1 < 0 && det2 > 0)) return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nexport function segmentIntersectSegment(\n a: GeoJSON.Position,\n b: GeoJSON.Position,\n c: GeoJSON.Position,\n d: GeoJSON.Position,\n): boolean {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [b[0] - a[0], b[1] - a[1]];\n const vectorQ = [d[0] - c[0], d[1] - c[1]];\n if (perp(vectorQ, vectorP) === 0) return false;\n\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b)) return true;\n return false;\n}\n\nexport interface Bounds {\n min: Point;\n max: Point;\n}\n\nexport function computeBounds(points: Point[][]): Bounds {\n const min = new Point(Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY);\n const max = new Point(Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY);\n\n for (const point of points[0]) {\n if (min.x > point.x) min.x = point.x;\n if (min.y > point.y) min.y = point.y;\n if (max.x < point.x) max.x = point.x;\n if (max.y < point.y) max.y = point.y;\n }\n\n return {min, max};\n}\n","import {isValue} from '../values';\nimport {BooleanType} from '../types';\nimport {updateBBox, boxWithinBox, pointWithinPolygon, segmentIntersectSegment} from '../../util/geometry_util';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {Type} from '../types';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {CanonicalTileID} from '../../types/tile_id';\nimport type {BBox} from '../../util/geometry_util';\n\ntype GeoJSONPolygons = GeoJSON.Polygon | GeoJSON.MultiPolygon;\n\nconst EXTENT = 8192;\n\nfunction mercatorXfromLng(lng: number) {\n return (180 + lng) / 360;\n}\n\nfunction mercatorYfromLat(lat: number) {\n return (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360)))) / 360;\n}\n\nfunction getTileCoordinates(p: GeoJSON.Position, canonical: CanonicalTileID) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [Math.round(x * tilesAtZoom * EXTENT), Math.round(y * tilesAtZoom * EXTENT)];\n}\n\nfunction pointWithinPolygons(point: GeoJSON.Position, polygons: Array>>) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i])) return true;\n }\n return false;\n}\n\nfunction lineIntersectPolygon(p1: GeoJSON.Position, p2: GeoJSON.Position, polygon: Array>) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n const q1 = ring[k];\n const q2 = ring[j];\n if (segmentIntersectSegment(p1, p2, q1, q2)) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction lineStringWithinPolygon(line: Array, polygon: Array>) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\n\nfunction lineStringWithinPolygons(line: Array, polygons: Array>>) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i])) return true;\n }\n return false;\n}\n\nfunction getTilePolygon(coordinates: Array>, bbox: BBox, canonical: CanonicalTileID): Array> {\n const polygon: Array> = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring: number[][] = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n\n return polygon;\n}\n\nfunction getTilePolygons(coordinates: Array>>, bbox: BBox, canonical: CanonicalTileID): Array>> {\n const polygons: Array>> = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n\n return polygons;\n}\n\nfunction updatePoint(p: GeoJSON.Position, bbox: BBox, polyBBox: Array, worldSize: number) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = (p[0] - polyBBox[0] > halfWorldSize) ? -worldSize : (polyBBox[0] - p[0] > halfWorldSize) ? worldSize : 0;\n if (shift === 0) {\n shift = (p[0] - polyBBox[2] > halfWorldSize) ? -worldSize : (polyBBox[2] - p[0] > halfWorldSize) ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\n\nfunction resetBBox(bbox: BBox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\n\nfunction getTilePoints(geometry: Array> | null | undefined, pointBBox: BBox, polyBBox: Array, canonical: CanonicalTileID): Array {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tilePoints: Array = [];\n if (!geometry) return tilePoints;\n for (const points of geometry) {\n for (const point of points) {\n const p = [point.x + shifts[0], point.y + shifts[1]];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n\n return tilePoints;\n}\n\nfunction getTileLines(geometry: Array> | null | undefined, lineBBox: BBox, polyBBox: Array, canonical: CanonicalTileID): Array> {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [canonical.x * EXTENT, canonical.y * EXTENT];\n const tileLines: Array> = [];\n if (!geometry) return tileLines;\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p: GeoJSON.Position = [point.x + shifts[0], point.y + shifts[1]];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\n\nfunction pointsWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons): boolean {\n const pointBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox)) return false;\n\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons)) return false;\n }\n }\n\n return true;\n}\n\nfunction linesWithinPolygons(ctx: EvaluationContext, polygonGeometry: GeoJSONPolygons): boolean {\n const lineBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n const polyBBox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon)) return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox)) return false;\n\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons)) return false;\n }\n }\n return true;\n}\n\nclass Within implements Expression {\n type: Type;\n geojson: GeoJSON.GeoJSON;\n geometries: GeoJSONPolygons;\n\n constructor(geojson: GeoJSON.GeoJSON, geometries: GeoJSONPolygons) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Within | void {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${args.length - 1} instead.`);\n if (isValue(args[1])) {\n const geojson = args[1] as GeoJSON.GeoJSON;\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry as GeoJSONPolygons);\n }\n }\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"within\", this.geojson];\n }\n\n}\n\nexport default Within;\n","\nconst factors = {\n kilometers: 1,\n miles: 1000 / 1609.344,\n nauticalmiles: 1000 / 1852,\n meters: 1000,\n metres: 1000,\n yards: 1000 / 0.9144,\n feet: 1000 / 0.3048,\n inches: 1000 / 0.0254\n};\n\n// Values that define WGS84 ellipsoid model of the Earth\nconst RE = 6378.137; // equatorial radius\nconst FE = 1 / 298.257223563; // flattening\n\nconst E2 = FE * (2 - FE);\nconst RAD = Math.PI / 180;\n\n/**\n * A collection of very fast approximations to common geodesic measurements. Useful for performance-sensitive code that measures things on a city scale.\n */\nexport default class CheapRuler {\n /**\n * Creates a ruler object from tile coordinates (y and z).\n *\n * @param {number} y\n * @param {number} z\n * @param {keyof typeof factors} [units='kilometers']\n * @returns {CheapRuler}\n * @example\n * const ruler = cheapRuler.fromTile(1567, 12);\n * //=ruler\n */\n static fromTile(y, z, units) {\n const n = Math.PI * (1 - 2 * (y + 0.5) / Math.pow(2, z));\n const lat = Math.atan(0.5 * (Math.exp(n) - Math.exp(-n))) / RAD;\n return new CheapRuler(lat, units);\n }\n\n /**\n * Multipliers for converting between units.\n *\n * @example\n * // convert 50 meters to yards\n * 50 * CheapRuler.units.yards / CheapRuler.units.meters;\n */\n static get units() {\n return factors;\n }\n\n /**\n * Creates a ruler instance for very fast approximations to common geodesic measurements around a certain latitude.\n *\n * @param {number} lat latitude\n * @param {keyof typeof factors} [units='kilometers']\n * @example\n * const ruler = cheapRuler(35.05, 'miles');\n * //=ruler\n */\n constructor(lat, units) {\n if (lat === undefined) throw new Error('No latitude given.');\n if (units && !factors[units]) throw new Error(`Unknown unit ${ units }. Use one of: ${ Object.keys(factors).join(', ')}`);\n\n // Curvature formulas from https://en.wikipedia.org/wiki/Earth_radius#Meridional\n const m = RAD * RE * (units ? factors[units] : 1);\n const coslat = Math.cos(lat * RAD);\n const w2 = 1 / (1 - E2 * (1 - coslat * coslat));\n const w = Math.sqrt(w2);\n\n // multipliers for converting longitude and latitude degrees into distance\n this.kx = m * w * coslat; // based on normal radius of curvature\n this.ky = m * w * w2 * (1 - E2); // based on meridonal radius of curvature\n }\n\n /**\n * Given two points of the form [longitude, latitude], returns the distance.\n *\n * @param {[number, number]} a point [longitude, latitude]\n * @param {[number, number]} b point [longitude, latitude]\n * @returns {number} distance\n * @example\n * const distance = ruler.distance([30.5, 50.5], [30.51, 50.49]);\n * //=distance\n */\n distance(a, b) {\n const dx = wrap(a[0] - b[0]) * this.kx;\n const dy = (a[1] - b[1]) * this.ky;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns the bearing between two points in angles.\n *\n * @param {[number, number]} a point [longitude, latitude]\n * @param {[number, number]} b point [longitude, latitude]\n * @returns {number} bearing\n * @example\n * const bearing = ruler.bearing([30.5, 50.5], [30.51, 50.49]);\n * //=bearing\n */\n bearing(a, b) {\n const dx = wrap(b[0] - a[0]) * this.kx;\n const dy = (b[1] - a[1]) * this.ky;\n return Math.atan2(dx, dy) / RAD;\n }\n\n /**\n * Returns a new point given distance and bearing from the starting point.\n *\n * @param {[number, number]} p point [longitude, latitude]\n * @param {number} dist distance\n * @param {number} bearing\n * @returns {[number, number]} point [longitude, latitude]\n * @example\n * const point = ruler.destination([30.5, 50.5], 0.1, 90);\n * //=point\n */\n destination(p, dist, bearing) {\n const a = bearing * RAD;\n return this.offset(p,\n Math.sin(a) * dist,\n Math.cos(a) * dist);\n }\n\n /**\n * Returns a new point given easting and northing offsets (in ruler units) from the starting point.\n *\n * @param {[number, number]} p point [longitude, latitude]\n * @param {number} dx easting\n * @param {number} dy northing\n * @returns {[number, number]} point [longitude, latitude]\n * @example\n * const point = ruler.offset([30.5, 50.5], 10, 10);\n * //=point\n */\n offset(p, dx, dy) {\n return [\n p[0] + dx / this.kx,\n p[1] + dy / this.ky\n ];\n }\n\n /**\n * Given a line (an array of points), returns the total line distance.\n *\n * @param {[number, number][]} points [longitude, latitude]\n * @returns {number} total line distance\n * @example\n * const length = ruler.lineDistance([\n * [-67.031, 50.458], [-67.031, 50.534],\n * [-66.929, 50.534], [-66.929, 50.458]\n * ]);\n * //=length\n */\n lineDistance(points) {\n let total = 0;\n for (let i = 0; i < points.length - 1; i++) {\n total += this.distance(points[i], points[i + 1]);\n }\n return total;\n }\n\n /**\n * Given a polygon (an array of rings, where each ring is an array of points), returns the area.\n *\n * @param {[number, number][][]} polygon\n * @returns {number} area value in the specified units (square kilometers by default)\n * @example\n * const area = ruler.area([[\n * [-67.031, 50.458], [-67.031, 50.534], [-66.929, 50.534],\n * [-66.929, 50.458], [-67.031, 50.458]\n * ]]);\n * //=area\n */\n area(polygon) {\n let sum = 0;\n\n for (let i = 0; i < polygon.length; i++) {\n const ring = polygon[i];\n\n for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n sum += wrap(ring[j][0] - ring[k][0]) * (ring[j][1] + ring[k][1]) * (i ? -1 : 1);\n }\n }\n\n return (Math.abs(sum) / 2) * this.kx * this.ky;\n }\n\n /**\n * Returns the point at a specified distance along the line.\n *\n * @param {[number, number][]} line\n * @param {number} dist distance\n * @returns {[number, number]} point [longitude, latitude]\n * @example\n * const point = ruler.along(line, 2.5);\n * //=point\n */\n along(line, dist) {\n let sum = 0;\n\n if (dist <= 0) return line[0];\n\n for (let i = 0; i < line.length - 1; i++) {\n const p0 = line[i];\n const p1 = line[i + 1];\n const d = this.distance(p0, p1);\n sum += d;\n if (sum > dist) return interpolate(p0, p1, (dist - (sum - d)) / d);\n }\n\n return line[line.length - 1];\n }\n\n /**\n * Returns the distance from a point `p` to a line segment `a` to `b`.\n *\n * @pointToSegmentDistance\n * @param {[number, number]} p point [longitude, latitude]\n * @param {[number, number]} a segment point 1 [longitude, latitude]\n * @param {[number, number]} b segment point 2 [longitude, latitude]\n * @returns {number} distance\n * @example\n * const distance = ruler.pointToSegmentDistance([-67.04, 50.5], [-67.05, 50.57], [-67.03, 50.54]);\n * //=distance\n */\n pointToSegmentDistance(p, a, b) {\n let [x, y] = a;\n let dx = wrap(b[0] - x) * this.kx;\n let dy = (b[1] - y) * this.ky;\n\n if (dx !== 0 || dy !== 0) {\n const t = (wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = b[0];\n y = b[1];\n\n } else if (t > 0) {\n x += (dx / this.kx) * t;\n y += (dy / this.ky) * t;\n }\n }\n\n dx = wrap(p[0] - x) * this.kx;\n dy = (p[1] - y) * this.ky;\n\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns an object of the form {point, index, t}, where point is closest point on the line\n * from the given point, index is the start index of the segment with the closest point,\n * and t is a parameter from 0 to 1 that indicates where the closest point is on that segment.\n *\n * @param {[number, number][]} line\n * @param {[number, number]} p point [longitude, latitude]\n * @returns {{point: [number, number], index: number, t: number}} {point, index, t}\n * @example\n * const point = ruler.pointOnLine(line, [-67.04, 50.5]).point;\n * //=point\n */\n pointOnLine(line, p) {\n let minDist = Infinity;\n let minX = line[0][0];\n let minY = line[0][1];\n let minI = 0;\n let minT = 0;\n\n for (let i = 0; i < line.length - 1; i++) {\n\n let x = line[i][0];\n let y = line[i][1];\n let dx = wrap(line[i + 1][0] - x) * this.kx;\n let dy = (line[i + 1][1] - y) * this.ky;\n let t = 0;\n\n if (dx !== 0 || dy !== 0) {\n t = (wrap(p[0] - x) * this.kx * dx + (p[1] - y) * this.ky * dy) / (dx * dx + dy * dy);\n\n if (t > 1) {\n x = line[i + 1][0];\n y = line[i + 1][1];\n\n } else if (t > 0) {\n x += (dx / this.kx) * t;\n y += (dy / this.ky) * t;\n }\n }\n\n dx = wrap(p[0] - x) * this.kx;\n dy = (p[1] - y) * this.ky;\n\n const sqDist = dx * dx + dy * dy;\n if (sqDist < minDist) {\n minDist = sqDist;\n minX = x;\n minY = y;\n minI = i;\n minT = t;\n }\n }\n\n return {\n point: [minX, minY],\n index: minI,\n t: Math.max(0, Math.min(1, minT))\n };\n }\n\n /**\n * Returns a part of the given line between the start and the stop points (or their closest points on the line).\n *\n * @param {[number, number]} start point [longitude, latitude]\n * @param {[number, number]} stop point [longitude, latitude]\n * @param {[number, number][]} line\n * @returns {[number, number][]} line part of a line\n * @example\n * const line2 = ruler.lineSlice([-67.04, 50.5], [-67.05, 50.56], line1);\n * //=line2\n */\n lineSlice(start, stop, line) {\n let p1 = this.pointOnLine(line, start);\n let p2 = this.pointOnLine(line, stop);\n\n if (p1.index > p2.index || (p1.index === p2.index && p1.t > p2.t)) {\n const tmp = p1;\n p1 = p2;\n p2 = tmp;\n }\n\n const slice = [p1.point];\n\n const l = p1.index + 1;\n const r = p2.index;\n\n if (!equals(line[l], slice[0]) && l <= r)\n slice.push(line[l]);\n\n for (let i = l + 1; i <= r; i++) {\n slice.push(line[i]);\n }\n\n if (!equals(line[r], p2.point))\n slice.push(p2.point);\n\n return slice;\n }\n\n /**\n * Returns a part of the given line between the start and the stop points indicated by distance along the line.\n *\n * @param {number} start start distance\n * @param {number} stop stop distance\n * @param {[number, number][]} line\n * @returns {[number, number][]} part of a line\n * @example\n * const line2 = ruler.lineSliceAlong(10, 20, line1);\n * //=line2\n */\n lineSliceAlong(start, stop, line) {\n let sum = 0;\n const slice = [];\n\n for (let i = 0; i < line.length - 1; i++) {\n const p0 = line[i];\n const p1 = line[i + 1];\n const d = this.distance(p0, p1);\n\n sum += d;\n\n if (sum > start && slice.length === 0) {\n slice.push(interpolate(p0, p1, (start - (sum - d)) / d));\n }\n\n if (sum >= stop) {\n slice.push(interpolate(p0, p1, (stop - (sum - d)) / d));\n return slice;\n }\n\n if (sum > start) slice.push(p1);\n }\n\n return slice;\n }\n\n /**\n * Given a point, returns a bounding box object ([w, s, e, n]) created from the given point buffered by a given distance.\n *\n * @param {[number, number]} p point [longitude, latitude]\n * @param {number} buffer\n * @returns {[number, number, number, number]} bbox ([w, s, e, n])\n * @example\n * const bbox = ruler.bufferPoint([30.5, 50.5], 0.01);\n * //=bbox\n */\n bufferPoint(p, buffer) {\n const v = buffer / this.ky;\n const h = buffer / this.kx;\n return [\n p[0] - h,\n p[1] - v,\n p[0] + h,\n p[1] + v\n ];\n }\n\n /**\n * Given a bounding box, returns the box buffered by a given distance.\n *\n * @param {[number, number, number, number]} bbox ([w, s, e, n])\n * @param {number} buffer\n * @returns {[number, number, number, number]} bbox ([w, s, e, n])\n * @example\n * const bbox = ruler.bufferBBox([30.5, 50.5, 31, 51], 0.2);\n * //=bbox\n */\n bufferBBox(bbox, buffer) {\n const v = buffer / this.ky;\n const h = buffer / this.kx;\n return [\n bbox[0] - h,\n bbox[1] - v,\n bbox[2] + h,\n bbox[3] + v\n ];\n }\n\n /**\n * Returns true if the given point is inside in the given bounding box, otherwise false.\n *\n * @param {[number, number]} p point [longitude, latitude]\n * @param {[number, number, number, number]} bbox ([w, s, e, n])\n * @returns {boolean}\n * @example\n * const inside = ruler.insideBBox([30.5, 50.5], [30, 50, 31, 51]);\n * //=inside\n */\n insideBBox(p, bbox) { // eslint-disable-line\n return wrap(p[0] - bbox[0]) >= 0 &&\n wrap(p[0] - bbox[2]) <= 0 &&\n p[1] >= bbox[1] &&\n p[1] <= bbox[3];\n }\n}\n\n/**\n * @param {[number, number]} a\n * @param {[number, number]} b\n */\nfunction equals(a, b) {\n return a[0] === b[0] && a[1] === b[1];\n}\n\n/**\n * @param {[number, number]} a\n * @param {[number, number]} b\n * @param {number} t\n * @returns {[number, number]}\n */\nfunction interpolate(a, b, t) {\n const dx = wrap(b[0] - a[0]);\n const dy = b[1] - a[1];\n return [\n a[0] + dx * t,\n a[1] + dy * t\n ];\n}\n\n/**\n * normalize a degree value into [-180..180] range\n * @param {number} deg\n */\nfunction wrap(deg) {\n while (deg < -180) deg += 360;\n while (deg > 180) deg -= 360;\n return deg;\n}\n","\nexport default class TinyQueue {\n constructor(data = [], compare = (a, b) => (a < b ? -1 : a > b ? 1 : 0)) {\n this.data = data;\n this.length = this.data.length;\n this.compare = compare;\n\n if (this.length > 0) {\n for (let i = (this.length >> 1) - 1; i >= 0; i--) this._down(i);\n }\n }\n\n push(item) {\n this.data.push(item);\n this._up(this.length++);\n }\n\n pop() {\n if (this.length === 0) return undefined;\n\n const top = this.data[0];\n const bottom = this.data.pop();\n\n if (--this.length > 0) {\n this.data[0] = bottom;\n this._down(0);\n }\n\n return top;\n }\n\n peek() {\n return this.data[0];\n }\n\n _up(pos) {\n const {data, compare} = this;\n const item = data[pos];\n\n while (pos > 0) {\n const parent = (pos - 1) >> 1;\n const current = data[parent];\n if (compare(item, current) >= 0) break;\n data[pos] = current;\n pos = parent;\n }\n\n data[pos] = item;\n }\n\n _down(pos) {\n const {data, compare} = this;\n const halfLength = this.length >> 1;\n const item = data[pos];\n\n while (pos < halfLength) {\n let bestChild = (pos << 1) + 1; // initially it is the left child\n const right = bestChild + 1;\n\n if (right < this.length && compare(data[right], data[bestChild]) < 0) {\n bestChild = right;\n }\n if (compare(data[bestChild], item) >= 0) break;\n\n data[pos] = data[bestChild];\n pos = bestChild;\n }\n\n data[pos] = item;\n }\n}\n","/**\n * The maximum value of a coordinate in the internal tile coordinate system. Coordinates of\n * all source features normalized to this extent upon load.\n *\n * The value is a consequence of the following:\n *\n * * Vertex buffer store positions as signed 16 bit integers.\n * * One bit is lost for signedness to support tile buffers.\n * * One bit is lost because the line vertex buffer used to pack 1 bit of other data into the int.\n * * One bit is lost to support features extending past the extent on the right edge of the tile.\n * * This leaves us with 2^13 = 8192\n *\n * @private\n * @readonly\n */\nexport default 8192;\n","import {isValue} from '../values';\nimport {NumberType} from '../types';\nimport {classifyRings, updateBBox, boxWithinBox, pointWithinPolygon, segmentIntersectSegment} from '../../util/geometry_util';\nimport CheapRuler from \"cheap-ruler\";\nimport TinyQueue from \"tinyqueue\";\nimport EXTENT from '../../data/extent';\n\nimport type Point from \"@mapbox/point-geometry\";\nimport type ParsingContext from '../parsing_context';\nimport type {BBox} from '../../util/geometry_util';\nimport type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type {CanonicalTileID} from '../../types/tile_id';\nimport type EvaluationContext from '../evaluation_context';\n\ntype DistanceGeometry = GeoJSON.Point | GeoJSON.MultiPoint | GeoJSON.LineString | GeoJSON.MultiLineString | GeoJSON.Polygon | GeoJSON.MultiPolygon;\n\n// Inclusive index range for multipoint or linestring container\ntype IndexRange = [number, number];\ntype DistPair = {\n dist: number;\n range1: IndexRange;\n range2: IndexRange;\n};\nfunction compareMax(a: DistPair, b: DistPair) {\n return b.dist - a.dist;\n}\n\nconst MIN_POINT_SIZE = 100;\nconst MIN_LINE_POINT_SIZE = 50;\n\nfunction isDefaultBBOX(bbox: BBox) {\n const defualtBBox = [Infinity, Infinity, -Infinity, -Infinity];\n if (defualtBBox.length !== bbox.length) {\n return false;\n }\n for (let i = 0; i < defualtBBox.length; i++) {\n if (defualtBBox[i] !== bbox[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getRangeSize(range: IndexRange) {\n return range[1] - range[0] + 1;\n}\n\nfunction isRangeSafe(range: IndexRange, threshold: number) {\n const ret = range[1] >= range[0] && range[1] < threshold;\n if (!ret) {\n console.warn(\"Distance Expression: Index is out of range\");\n }\n return ret;\n}\n\n// Split the point set(points or linestring) into two halves, using IndexRange to do in-place splitting.\n// If geometry is a line, the last point(here is the second index) of range1 needs to be included as the first point(here is the first index) of range2.\n// If geometry are points, just split the points equally(if possible) into two new point sets(here are two index ranges).\nfunction splitRange(range: IndexRange, isLine: boolean) {\n if (range[0] > range[1]) return [null, null];\n const size = getRangeSize(range);\n if (isLine) {\n if (size === 2) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2);\n const range1: IndexRange = [range[0], range[0] + size1];\n const range2: IndexRange = [range[0] + size1, range[1]];\n return [range1, range2];\n } else {\n if (size === 1) {\n return [range, null];\n }\n const size1 = Math.floor(size / 2) - 1;\n const range1: IndexRange = [range[0], range[0] + size1];\n const range2: IndexRange = [range[0] + size1 + 1, range[1]];\n return [range1, range2];\n }\n}\n\nfunction getBBox(pointSets: Array<[number, number]>, range: IndexRange) {\n const bbox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n if (!isRangeSafe(range, pointSets.length)) return bbox;\n for (let i = range[0]; i <= range[1]; ++i) {\n updateBBox(bbox, pointSets[i]);\n }\n return bbox;\n}\n\nfunction getPolygonBBox(polygon: Array>) {\n const bbox: BBox = [Infinity, Infinity, -Infinity, -Infinity];\n for (let i = 0; i < polygon.length; ++i) {\n for (let j = 0; j < polygon[i].length; ++j) {\n updateBBox(bbox, polygon[i][j]);\n }\n }\n return bbox;\n}\n\n// Calculate the distance between two bounding boxes.\n// Calculate the delta in x and y direction, and use two fake points {0.0, 0.0} and {dx, dy} to calculate the distance.\n// Distance will be 0.0 if bounding box are overlapping.\nfunction bboxToBBoxDistance(bbox1: BBox, bbox2: BBox, ruler: CheapRuler) {\n if (isDefaultBBOX(bbox1) || isDefaultBBOX(bbox2)) {\n return NaN;\n }\n let dx = 0.0;\n let dy = 0.0;\n // bbox1 in left side\n if (bbox1[2] < bbox2[0]) {\n dx = bbox2[0] - bbox1[2];\n }\n // bbox1 in right side\n if (bbox1[0] > bbox2[2]) {\n dx = bbox1[0] - bbox2[2];\n }\n // bbox1 in above side\n if (bbox1[1] > bbox2[3]) {\n dy = bbox1[1] - bbox2[3];\n }\n // bbox1 in down side\n if (bbox1[3] < bbox2[1]) {\n dy = bbox2[1] - bbox1[3];\n }\n return ruler.distance([0.0, 0.0], [dx, dy]);\n}\n\nfunction lngFromMercatorX(x: number): number {\n return x * 360 - 180;\n}\n\nfunction latFromMercatorY(y: number): number {\n const y2 = 180 - y * 360;\n return 360 / Math.PI * Math.atan(Math.exp(y2 * Math.PI / 180)) - 90;\n}\n\nfunction getLngLatPoint(coord: Point, canonical: CanonicalTileID): [number, number] {\n const tilesAtZoom = Math.pow(2, canonical.z);\n const x = (coord.x / EXTENT + canonical.x) / tilesAtZoom;\n const y = (coord.y / EXTENT + canonical.y) / tilesAtZoom;\n return [lngFromMercatorX(x), latFromMercatorY(y)];\n}\n\nfunction getLngLatPoints(coordinates: Array, canonical: CanonicalTileID): Array<[number, number]> {\n const coords: Array<[number, number]> = [];\n for (let i = 0; i < coordinates.length; ++i) {\n coords.push(getLngLatPoint(coordinates[i], canonical));\n }\n return coords;\n}\n\nfunction pointToLineDistance(point: [number, number], line: Array<[number, number]>, ruler: CheapRuler) {\n const nearestPoint = ruler.pointOnLine(line, point).point;\n return ruler.distance(point, nearestPoint);\n}\n\nfunction pointsToLineDistance(points: Array<[number, number]>, rangeA: IndexRange, line: Array<[number, number]>, rangeB: IndexRange, ruler: CheapRuler) {\n const subLine = line.slice(rangeB[0], rangeB[1] + 1);\n let dist = Infinity;\n for (let i = rangeA[0]; i <= rangeA[1]; ++i) {\n if ((dist = Math.min(dist, pointToLineDistance(points[i], subLine, ruler))) === 0.0) return 0.0;\n }\n return dist;\n}\n\n// precondition is two segments are not intersecting with each other\nfunction segmentToSegmentDistance(p1: [number, number], p2: [number, number], q1: [number, number], q2: [number, number], ruler: CheapRuler) {\n const dist1 = Math.min(\n ruler.pointToSegmentDistance(p1, q1, q2),\n ruler.pointToSegmentDistance(p2, q1, q2)\n );\n const dist2 = Math.min(\n ruler.pointToSegmentDistance(q1, p1, p2),\n ruler.pointToSegmentDistance(q2, p1, p2)\n );\n\n return Math.min(dist1, dist2);\n}\n\nfunction lineToLineDistance(line1: Array<[number, number]>, range1: IndexRange, line2: Array<[number, number]>, range2: IndexRange, ruler: CheapRuler) {\n if (!isRangeSafe(range1, line1.length) || !isRangeSafe(range2, line2.length)) {\n return NaN;\n }\n let dist = Infinity;\n for (let i = range1[0]; i < range1[1]; ++i) {\n for (let j = range2[0]; j < range2[1]; ++j) {\n if (segmentIntersectSegment(line1[i], line1[i + 1], line2[j], line2[j + 1])) return 0.0;\n dist = Math.min(dist, segmentToSegmentDistance(line1[i], line1[i + 1], line2[j], line2[j + 1], ruler));\n }\n }\n return dist;\n}\n\nfunction pointsToPointsDistance(pointSet1: Array<[number, number]>, range1: IndexRange, pointSet2: Array<[number, number]>, range2: IndexRange, ruler: CheapRuler) {\n if (!isRangeSafe(range1, pointSet1.length) || !isRangeSafe(range2, pointSet2.length)) {\n return NaN;\n }\n let dist = Infinity;\n for (let i = range1[0]; i <= range1[1]; ++i) {\n for (let j = range2[0]; j <= range2[1]; ++j) {\n if ((dist = Math.min(dist, ruler.distance(pointSet1[i], pointSet2[j]))) === 0.0) return dist;\n }\n }\n return dist;\n}\n\nfunction pointToPolygonDistance(point: [number, number], polygon: Array>, ruler: CheapRuler) {\n if (pointWithinPolygon(point, polygon, true /*trueOnBoundary*/)) return 0.0;\n let dist = Infinity;\n for (const ring of polygon) {\n const ringLen = ring.length;\n if (ringLen < 2) {\n console.warn(\"Distance Expression: Invalid polygon!\");\n return NaN;\n }\n if (ring[0] !== ring[ringLen - 1]) {\n if ((dist = Math.min(dist, ruler.pointToSegmentDistance(point, ring[ringLen - 1], ring[0]))) === 0.0) return dist;\n }\n if ((dist = Math.min(dist, pointToLineDistance(point, ring, ruler))) === 0.0) return dist;\n }\n return dist;\n}\n\nfunction lineToPolygonDistance(line: Array<[number, number]>, range: IndexRange, polygon: Array>, ruler: CheapRuler) {\n if (!isRangeSafe(range, line.length)) {\n return NaN;\n }\n for (let i = range[0]; i <= range[1]; ++i) {\n if (pointWithinPolygon(line[i], polygon, true /*trueOnBoundary*/)) return 0.0;\n }\n let dist = Infinity;\n for (let i = range[0]; i < range[1]; ++i) {\n for (const ring of polygon) {\n for (let j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n if (segmentIntersectSegment(line[i], line[i + 1], ring[k], ring[j])) return 0.0;\n dist = Math.min(dist, segmentToSegmentDistance(line[i], line[i + 1], ring[k], ring[j], ruler));\n }\n }\n }\n return dist;\n}\n\nfunction polygonIntersect(polygon1: Array>, polygon2: Array>) {\n for (const ring of polygon1) {\n for (let i = 0; i <= ring.length - 1; ++i) {\n if (pointWithinPolygon(ring[i], polygon2, true /*trueOnBoundary*/)) return true;\n }\n }\n return false;\n}\n\nfunction polygonToPolygonDistance(polygon1: Array>, polygon2: Array>, ruler: CheapRuler, currentMiniDist: number = Infinity) {\n const bbox1 = getPolygonBBox(polygon1);\n const bbox2 = getPolygonBBox(polygon2);\n if (currentMiniDist !== Infinity && bboxToBBoxDistance(bbox1, bbox2, ruler) >= currentMiniDist) {\n return currentMiniDist;\n }\n if (boxWithinBox(bbox1, bbox2)) {\n if (polygonIntersect(polygon1, polygon2)) return 0.0;\n } else if (polygonIntersect(polygon2, polygon1)) {\n return 0.0;\n }\n let dist = currentMiniDist;\n for (const ring1 of polygon1) {\n for (let i = 0, len1 = ring1.length, l = len1 - 1; i < len1; l = i++) {\n for (const ring2 of polygon2) {\n for (let j = 0, len2 = ring2.length, k = len2 - 1; j < len2; k = j++) {\n if (segmentIntersectSegment(ring1[l], ring1[i], ring2[k], ring2[j])) return 0.0;\n dist = Math.min(dist, segmentToSegmentDistance(ring1[l], ring1[i], ring2[k], ring2[j], ruler));\n }\n }\n }\n }\n return dist;\n}\n\nfunction updateQueue(distQueue: TinyQueue, miniDist: number, ruler: CheapRuler, pointSet1: Array<[number, number]>, pointSet2: Array<[number, number]>, r1: IndexRange | null, r2: IndexRange | null) {\n if (r1 === null || r2 === null) return;\n const tempDist = bboxToBBoxDistance(getBBox(pointSet1, r1), getBBox(pointSet2, r2), ruler);\n // Insert new pair to the queue if the bbox distance is less than miniDist, the pair with biggest distance will be at the top\n if (tempDist < miniDist) distQueue.push({dist: tempDist, range1: r1, range2: r2});\n}\n\n// Divide and conquer, the time complexity is O(n*lgn), faster than Brute force O(n*n)\n// Most of the time, use index for in-place processing.\nfunction pointSetToPolygonDistance(pointSets: Array<[number, number]>, isLine: boolean, polygon: Array>, ruler: CheapRuler, currentMiniDist: number = Infinity) {\n let miniDist = Math.min(ruler.distance(pointSets[0], polygon[0][0]), currentMiniDist);\n if (miniDist === 0.0) return miniDist;\n const initialDistPair: DistPair = {\n dist: 0,\n range1: [0, pointSets.length - 1],\n range2: [0, 0]\n };\n const distQueue = new TinyQueue([initialDistPair], compareMax);\n\n const setThreshold = isLine ? MIN_LINE_POINT_SIZE : MIN_POINT_SIZE;\n const polyBBox = getPolygonBBox(polygon);\n\n while (distQueue.length) {\n const distPair = distQueue.pop();\n if (distPair.dist >= miniDist) continue;\n const range = distPair.range1;\n // In case the set size are relatively small, we could use brute-force directly\n if (getRangeSize(range) <= setThreshold) {\n if (!isRangeSafe(range, pointSets.length)) return NaN;\n if (isLine) {\n const tempDist = lineToPolygonDistance(pointSets, range, polygon, ruler);\n if ((miniDist = Math.min(miniDist, tempDist)) === 0.0) return miniDist;\n } else {\n for (let i = range[0]; i <= range[1]; ++i) {\n const tempDist = pointToPolygonDistance(pointSets[i], polygon, ruler);\n if ((miniDist = Math.min(miniDist, tempDist)) === 0.0) return miniDist;\n }\n }\n } else {\n const newRanges = splitRange(range, isLine);\n if (newRanges[0] !== null) {\n const tempDist = bboxToBBoxDistance(getBBox(pointSets, newRanges[0]), polyBBox, ruler);\n if (tempDist < miniDist) distQueue.push({dist: tempDist, range1: newRanges[0], range2: [0, 0]});\n }\n if (newRanges[1] !== null) {\n const tempDist = bboxToBBoxDistance(getBBox(pointSets, newRanges[1]), polyBBox, ruler);\n if (tempDist < miniDist) distQueue.push({dist: tempDist, range1: newRanges[1], range2: [0, 0]});\n }\n }\n }\n return miniDist;\n}\n\nfunction pointSetsDistance(pointSet1: Array<[number, number]>, isLine1: boolean, pointSet2: Array<[number, number]>, isLine2: boolean, ruler: CheapRuler, currentMiniDist: number = Infinity) {\n let miniDist = Math.min(currentMiniDist, ruler.distance(pointSet1[0], pointSet2[0]));\n if (miniDist === 0.0) return miniDist;\n const initialDistPair: DistPair = {\n dist: 0,\n range1: [0, pointSet1.length - 1],\n range2: [0, pointSet2.length - 1]\n };\n const distQueue = new TinyQueue([initialDistPair], compareMax);\n\n const set1Threshold = isLine1 ? MIN_LINE_POINT_SIZE : MIN_POINT_SIZE;\n const set2Threshold = isLine2 ? MIN_LINE_POINT_SIZE : MIN_POINT_SIZE;\n\n while (distQueue.length) {\n const distPair = distQueue.pop();\n if (distPair.dist >= miniDist) continue;\n const rangeA = distPair.range1;\n const rangeB = distPair.range2;\n // In case the set size are relatively small, we could use brute-force directly\n if (getRangeSize(rangeA) <= set1Threshold && getRangeSize(rangeB) <= set2Threshold) {\n if (!isRangeSafe(rangeA, pointSet1.length) || !isRangeSafe(rangeB, pointSet2.length)) {\n return NaN;\n }\n if (isLine1 && isLine2) {\n miniDist = Math.min(miniDist, lineToLineDistance(pointSet1, rangeA, pointSet2, rangeB, ruler));\n } else if (!isLine1 && !isLine2) {\n miniDist = Math.min(miniDist, pointsToPointsDistance(pointSet1, rangeA, pointSet2, rangeB, ruler));\n } else if (isLine1 && !isLine2) {\n miniDist = Math.min(miniDist, pointsToLineDistance(pointSet2, rangeB, pointSet1, rangeA, ruler));\n } else if (!isLine1 && isLine2) {\n miniDist = Math.min(miniDist, pointsToLineDistance(pointSet1, rangeA, pointSet2, rangeB, ruler));\n }\n if (miniDist === 0.0) return miniDist;\n } else {\n const newRangesA = splitRange(rangeA, isLine1);\n const newRangesB = splitRange(rangeB, isLine2);\n updateQueue(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[0]);\n updateQueue(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[0], newRangesB[1]);\n updateQueue(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[0]);\n updateQueue(distQueue, miniDist, ruler, pointSet1, pointSet2, newRangesA[1], newRangesB[1]);\n }\n }\n return miniDist;\n}\n\nfunction pointSetToLinesDistance(pointSet: Array<[number, number]>, isLine: boolean, lines: Array>, ruler: CheapRuler, currentMiniDist: number = Infinity) {\n let dist = currentMiniDist;\n const bbox1 = getBBox(pointSet, [0, pointSet.length - 1]);\n for (const line of lines) {\n if (dist !== Infinity && bboxToBBoxDistance(bbox1, getBBox(line, [0, line.length - 1]), ruler) >= dist) continue;\n dist = Math.min(dist, pointSetsDistance(pointSet, isLine, line, true /*isLine*/, ruler, dist));\n if (dist === 0.0) return dist;\n }\n return dist;\n}\n\nfunction pointSetToPolygonsDistance(points: Array<[number, number]>, isLine: boolean, polygons: Array>>, ruler: CheapRuler, currentMiniDist: number = Infinity) {\n let dist = currentMiniDist;\n const bbox1 = getBBox(points, [0, points.length - 1]);\n for (const polygon of polygons) {\n if (dist !== Infinity && bboxToBBoxDistance(bbox1, getPolygonBBox(polygon), ruler) >= dist) continue;\n const tempDist = pointSetToPolygonDistance(points, isLine, polygon, ruler, dist);\n if (isNaN(tempDist)) return tempDist;\n if ((dist = Math.min(dist, tempDist)) === 0.0) return dist;\n }\n return dist;\n}\n\nfunction polygonsToPolygonsDistance(polygons1: Array>>, polygons2: Array>>, ruler: CheapRuler) {\n let dist = Infinity;\n for (const polygon1 of polygons1) {\n for (const polygon2 of polygons2) {\n const tempDist = polygonToPolygonDistance(polygon1, polygon2, ruler, dist);\n if (isNaN(tempDist)) return tempDist;\n if ((dist = Math.min(dist, tempDist)) === 0.0) return dist;\n }\n }\n return dist;\n}\n\nfunction pointsToGeometryDistance(originGeometry: Array>, canonical: CanonicalTileID, geometry: DistanceGeometry) {\n const lngLatPoints: Array<[number, number]> = [];\n for (const points of originGeometry) {\n for (const point of points) {\n lngLatPoints.push(getLngLatPoint(point, canonical));\n }\n }\n const ruler = new CheapRuler(lngLatPoints[0][1], 'meters');\n if (geometry.type === 'Point' || geometry.type === 'MultiPoint' || geometry.type === 'LineString') {\n return pointSetsDistance(lngLatPoints, false /*isLine*/,\n (geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates) as Array<[number, number]>,\n geometry.type === 'LineString' /*isLine*/, ruler);\n }\n if (geometry.type === 'MultiLineString') {\n return pointSetToLinesDistance(lngLatPoints, false /*isLine*/, geometry.coordinates as Array>, ruler);\n }\n if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\n return pointSetToPolygonsDistance(lngLatPoints, false /*isLine*/,\n (geometry.type === 'Polygon' ? [geometry.coordinates] : geometry.coordinates) as Array>>, ruler);\n }\n return null;\n}\n\nfunction linesToGeometryDistance(originGeometry: Array>, canonical: CanonicalTileID, geometry: DistanceGeometry) {\n const lngLatLines: Array> = [];\n for (const line of originGeometry) {\n const lngLatLine: Array<[number, number]> = [];\n for (const point of line) {\n lngLatLine.push(getLngLatPoint(point, canonical));\n }\n lngLatLines.push(lngLatLine);\n }\n const ruler = new CheapRuler(lngLatLines[0][0][1], 'meters');\n if (geometry.type === 'Point' || geometry.type === 'MultiPoint' || geometry.type === 'LineString') {\n return pointSetToLinesDistance(\n (geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates) as Array<[number, number]>,\n geometry.type === 'LineString' /*isLine*/, lngLatLines, ruler);\n }\n if (geometry.type === 'MultiLineString') {\n let dist = Infinity;\n for (let i = 0; i < geometry.coordinates.length; i++) {\n const tempDist = pointSetToLinesDistance(geometry.coordinates[i] as Array<[number, number]>, true /*isLine*/, lngLatLines, ruler, dist);\n if (isNaN(tempDist)) return tempDist;\n if ((dist = Math.min(dist, tempDist)) === 0.0) return dist;\n }\n return dist;\n }\n if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\n let dist = Infinity;\n for (let i = 0; i < lngLatLines.length; i++) {\n const tempDist = pointSetToPolygonsDistance(lngLatLines[i], true /*isLine*/,\n (geometry.type === 'Polygon' ? [geometry.coordinates] : geometry.coordinates) as Array>>,\n ruler, dist);\n if (isNaN(tempDist)) return tempDist;\n if ((dist = Math.min(dist, tempDist)) === 0.0) return dist;\n }\n return dist;\n }\n return null;\n}\n\nfunction polygonsToGeometryDistance(originGeometry: Array>, canonical: CanonicalTileID, geometry: DistanceGeometry) {\n const lngLatPolygons: Array>> = [];\n for (const polygon of classifyRings(originGeometry, 0)) {\n const lngLatPolygon: Array> = [];\n for (let i = 0; i < polygon.length; ++i) {\n lngLatPolygon.push(getLngLatPoints(polygon[i], canonical));\n }\n lngLatPolygons.push(lngLatPolygon);\n }\n const ruler = new CheapRuler(lngLatPolygons[0][0][0][1], 'meters');\n if (geometry.type === 'Point' || geometry.type === 'MultiPoint' || geometry.type === 'LineString') {\n return pointSetToPolygonsDistance(\n (geometry.type === 'Point' ? [geometry.coordinates] : geometry.coordinates) as Array<[number, number]>,\n geometry.type === 'LineString' /*isLine*/, lngLatPolygons, ruler);\n }\n if (geometry.type === 'MultiLineString') {\n let dist = Infinity;\n for (let i = 0; i < geometry.coordinates.length; i++) {\n const tempDist = pointSetToPolygonsDistance(geometry.coordinates[i] as Array<[number, number]>, true /*isLine*/, lngLatPolygons, ruler, dist);\n if (isNaN(tempDist)) return tempDist;\n if ((dist = Math.min(dist, tempDist)) === 0.0) return dist;\n }\n return dist;\n }\n if (geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\n return polygonsToPolygonsDistance(\n (geometry.type === 'Polygon' ? [geometry.coordinates] : geometry.coordinates) as Array>>,\n lngLatPolygons, ruler);\n }\n return null;\n}\n\nfunction isTypeValid(type: string) {\n return (\n type === \"Point\" ||\n type === \"MultiPoint\" ||\n type === \"LineString\" ||\n type === \"MultiLineString\" ||\n type === \"Polygon\" ||\n type === \"MultiPolygon\"\n );\n}\nclass Distance implements Expression {\n type: Type;\n geojson: GeoJSON.GeoJSON;\n geometries: DistanceGeometry;\n\n constructor(geojson: GeoJSON.GeoJSON, geometries: DistanceGeometry) {\n this.type = NumberType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Distance | null | void {\n if (args.length !== 2) {\n return context.error(`'distance' expression requires either one argument, but found ' ${args.length - 1} instead.`);\n }\n if (isValue(args[1])) {\n const geojson = args[1] as GeoJSON.GeoJSON;\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n if (isTypeValid(geojson.features[i].geometry.type)) {\n return new Distance(geojson, geojson.features[i].geometry as DistanceGeometry);\n }\n }\n } else if (geojson.type === 'Feature') {\n if (isTypeValid(geojson.geometry.type)) {\n return new Distance(geojson, geojson.geometry as DistanceGeometry);\n }\n } else if (isTypeValid(geojson.type)) {\n return new Distance(geojson, geojson as DistanceGeometry);\n }\n }\n return context.error(\n \"'distance' expression needs to be an array with format [\\'Distance\\', GeoJSONObj].\"\n );\n }\n\n evaluate(ctx: EvaluationContext): number | null {\n const geometry = ctx.geometry();\n const canonical = ctx.canonicalID();\n if (geometry != null && canonical != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsToGeometryDistance(geometry, canonical, this.geometries);\n }\n if (ctx.geometryType() === 'LineString') {\n return linesToGeometryDistance(geometry, canonical, this.geometries);\n }\n if (ctx.geometryType() === 'Polygon') {\n return polygonsToGeometryDistance(geometry, canonical, this.geometries);\n }\n console.warn(\"Distance Expression: currently only evaluates valid Point/LineString/Polygon geometries.\");\n } else {\n console.warn(\"Distance Expression: requirs valid feature and canonical information.\");\n }\n return null;\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): Array {\n return ['distance', this.geojson];\n }\n}\n\nexport default Distance;\n","import CompoundExpression from './compound_expression';\nimport Within from './definitions/within';\nimport Distance from './definitions/distance';\nimport Config from './definitions/config';\n\nimport type {Expression} from './expression';\n\nfunction isFeatureConstant(e: Expression): boolean {\n if (e instanceof CompoundExpression) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (\n e.name === 'properties' ||\n e.name === 'geometry-type' ||\n e.name === 'id'\n ) {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n\n if (e instanceof Within) {\n return false;\n }\n\n if (e instanceof Distance) {\n return false;\n }\n\n if (e instanceof Config) {\n return e.featureConstant;\n }\n\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isStateConstant(e: Expression): boolean {\n if (e instanceof CompoundExpression) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) { result = false; }\n });\n return result;\n}\n\nfunction isGlobalPropertyConstant(e: Expression, properties: Array): boolean {\n if (e instanceof CompoundExpression && properties.indexOf(e.name) >= 0) { return false; }\n let result = true;\n e.eachChild((arg) => {\n if (result && !isGlobalPropertyConstant(arg, properties)) { result = false; }\n });\n return result;\n}\n\nexport {isFeatureConstant, isGlobalPropertyConstant, isStateConstant};\n","import {typeEquals, ValueType} from '../types';\nimport {Color, typeOf, toString as valueToString} from '../values';\nimport Formatted from '../types/formatted';\nimport ResolvedImage from '../types/resolved_image';\nimport * as isConstant from '../is_constant';\nimport Literal from './literal';\n\nimport type {Type} from '../types';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nconst FQIDSeparator = '\\u001F';\n\nexport function makeConfigFQID(id: string, ownScope?: string | null, contextScope?: string | null): string {\n return [id, ownScope, contextScope].filter(Boolean).join(FQIDSeparator);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction coerceValue(type: string, value: any): any {\n switch (type) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n case 'string': return valueToString(value);\n case 'number': return +value;\n case 'boolean': return !!value;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n case 'color': return Color.parse(value);\n case 'formatted': {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return Formatted.fromString(valueToString(value));\n }\n case 'resolvedImage': {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return ResolvedImage.build(valueToString(value));\n }\n }\n return value;\n}\n\nfunction clampToAllowedNumber(value: number, min?: number, max?: number, step?: number): number {\n if (step !== undefined) {\n value = step * Math.round(value / step);\n }\n if (min !== undefined && value < min) {\n value = min;\n }\n if (max !== undefined && value > max) {\n value = max;\n }\n return value;\n}\n\nclass Config implements Expression {\n type: Type;\n key: string;\n scope: string | null | undefined;\n featureConstant: boolean;\n\n constructor(type: Type, key: string, scope?: string, featureConstant: boolean = false) {\n this.type = type;\n this.key = key;\n this.scope = scope;\n this.featureConstant = featureConstant;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Config | null | void {\n let type = context.expectedType;\n if (type === null || type === undefined) {\n type = ValueType;\n }\n if (args.length < 2 || args.length > 3) {\n return context.error(`Invalid number of arguments for 'config' expression.`);\n }\n\n const configKey = context.parse(args[1], 1);\n if (!(configKey instanceof Literal)) {\n return context.error(`Key name of 'config' expression must be a string literal.`);\n }\n\n let featureConstant = true;\n let configScopeValue: string | undefined;\n const configKeyValue = valueToString(configKey.value);\n\n if (args.length >= 3) {\n const configScope = context.parse(args[2], 2);\n if (!(configScope instanceof Literal)) {\n return context.error(`Scope of 'config' expression must be a string literal.`);\n }\n\n configScopeValue = valueToString(configScope.value);\n }\n\n if (context.options) {\n const fqid = makeConfigFQID(configKeyValue, configScopeValue, context._scope);\n const config = context.options.get(fqid);\n if (config) {\n featureConstant = isConstant.isFeatureConstant(config.value || config.default);\n }\n }\n\n return new Config(type, configKeyValue, configScopeValue, featureConstant);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n const fqid = makeConfigFQID(this.key, this.scope, ctx.scope);\n const config = ctx.getConfig(fqid);\n if (!config) return null;\n\n const {type, value, values, minValue, maxValue, stepValue} = config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const defaultValue = config.default.evaluate(ctx);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n let result = defaultValue;\n if (value) {\n // temporarily override scope to parent to evaluate config expressions passed from the parent\n const originalScope = ctx.scope;\n ctx.scope = (originalScope || '').split(FQIDSeparator).slice(1).join(FQIDSeparator);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = value.evaluate(ctx);\n ctx.scope = originalScope;\n }\n if (type) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = coerceValue(type, result);\n }\n\n if (result !== undefined && (minValue !== undefined || maxValue !== undefined || stepValue !== undefined)) {\n if (typeof result === 'number') {\n result = clampToAllowedNumber(result, minValue, maxValue, stepValue);\n } else if (Array.isArray(result)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n result = result.map((item) => (typeof item === 'number' ? clampToAllowedNumber(item, minValue, maxValue, stepValue) : item));\n }\n }\n\n if (value !== undefined && result !== undefined && values && !values.includes(result)) {\n // The result is not among the allowed values. Instead, use the default value from the option.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = defaultValue;\n if (type) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = coerceValue(type, result);\n }\n }\n\n // @ts-expect-error - TS2367 - This comparison appears to be unintentional because the types 'string' and 'Type' have no overlap.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if ((type && type !== this.type) || (result !== undefined && !typeEquals(typeOf(result), this.type))) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = coerceValue(this.type.kind, result);\n }\n\n return result;\n }\n\n eachChild() { }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const res = [\"config\", this.key];\n if (this.scope) {\n res.concat(this.scope);\n }\n return res;\n }\n}\n\nexport default Config;\n","import type {Type} from '../types';\nimport type {Expression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Var implements Expression {\n type: Type;\n name: string;\n boundExpression: Expression;\n\n constructor(name: string, boundExpression: Expression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): void | Var {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${name}\". Make sure \"${name}\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n\n return new Var(name, context.scope.get(name));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n return this.boundExpression.evaluate(ctx);\n }\n\n eachChild() {}\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): Array {\n return [\"var\", this.name];\n }\n}\n\nexport default Var;\n","import Scope from './scope';\nimport {checkSubtype} from './types';\nimport ParsingError from './parsing_error';\nimport Literal from './definitions/literal';\nimport Assertion from './definitions/assertion';\nimport Coercion from './definitions/coercion';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport CollatorExpression from './definitions/collator';\nimport Within from './definitions/within';\nimport Distance from './definitions/distance';\nimport Config from './definitions/config';\nimport {isGlobalPropertyConstant, isFeatureConstant} from './is_constant';\nimport Var from './definitions/var';\n\nimport type {Expression, ExpressionRegistry} from './expression';\nimport type {Type} from './types';\nimport type {ConfigOptions} from '../types/config_options';\n\n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n registry: ExpressionRegistry;\n path: Array;\n key: string;\n scope: Scope;\n errors: Array;\n _scope: string | null | undefined;\n options: ConfigOptions | null | undefined;\n iconImageUseTheme: string;\n\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n expectedType: Type | null | undefined;\n\n constructor(\n registry: ExpressionRegistry,\n path: Array = [],\n expectedType?: Type | null,\n scope: Scope = new Scope(),\n errors: Array = [],\n _scope?: string | null,\n options?: ConfigOptions | null,\n iconImageUseTheme?: string\n ) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => { if (typeof part === 'string') { return `['${part}']`; } return `[${part}]`; }).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n this._scope = _scope;\n this.options = options;\n this.iconImageUseTheme = iconImageUseTheme;\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(\n expr: unknown,\n index?: number,\n expectedType?: Type | null,\n bindings?: Array<[string, Expression]>,\n options: {\n typeAnnotation?: 'assert' | 'coerce' | 'omit';\n } = {},\n ): Expression | null | void {\n if (index || expectedType) {\n return this.concat(index, null, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if parent object being is an argument of another expression\n * @param key key of parent object being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parseObjectValue(\n expr: unknown,\n index: number,\n key: string,\n expectedType?: Type | null,\n bindings?: Array<[string, Expression]>,\n options: {\n typeAnnotation?: 'assert' | 'coerce' | 'omit';\n } = {},\n ): Expression | null | void {\n return this.concat(index, key, expectedType, bindings)._parse(expr, options);\n }\n\n _parse(\n expr: unknown,\n options: {\n typeAnnotation?: 'assert' | 'coerce' | 'omit';\n },\n ): Expression | null | void {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = ['literal', expr];\n }\n\n function annotate(parsed: Expression, type: Type, typeAnnotation: 'assert' | 'coerce' | 'omit') {\n if (typeAnnotation === 'assert') {\n return new Assertion(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion(type, [parsed]);\n } else {\n return parsed;\n }\n }\n\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n\n const Expr = typeof expr[0] === 'string' ? this.registry[expr[0]] : undefined;\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed) return null;\n\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal) && (parsed.type.kind !== 'resolvedImage') && isConstant(parsed)) {\n const ec = new EvaluationContext(this._scope, this.options, this.iconImageUseTheme);\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n parsed = new Literal(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error((e as Error).message);\n return null;\n }\n }\n\n return parsed;\n }\n\n // Try to parse as array\n return Coercion.parse(['to-array', expr], this);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${typeof expr} instead.`);\n }\n }\n\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(\n index?: number | null,\n key?: string | null,\n expectedType?: Type | null,\n bindings?: Array<[string, Expression]>,\n ): ParsingContext {\n let path = typeof index === 'number' ? this.path.concat(index) : this.path;\n path = typeof key === 'string' ? path.concat(key) : path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(\n this.registry,\n path,\n expectedType || null,\n scope,\n this.errors,\n this._scope,\n this.options,\n this.iconImageUseTheme\n );\n }\n\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error: string, ...keys: Array) {\n const key = `${this.key}${keys.map(k => `[${k}]`).join('')}`;\n this.errors.push(new ParsingError(key, error));\n }\n\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected: Type, t: Type): string | null | undefined {\n const error = checkSubtype(expected, t);\n if (error) this.error(error);\n return error;\n }\n}\n\nexport default ParsingContext;\n\nfunction isConstant(expression: Expression) {\n if (expression instanceof Var) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n } else if (expression instanceof Within) {\n return false;\n } else if (expression instanceof Distance) {\n return false;\n } else if (expression instanceof Config) {\n return false;\n }\n\n const isTypeAnnotation = expression instanceof Coercion ||\n expression instanceof Assertion;\n\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n\n return isFeatureConstant(expression) &&\n isGlobalPropertyConstant(expression, ['zoom', 'heatmap-density', 'worldview', 'line-progress', 'raster-value', 'sky-radial-progress', 'accumulated', 'is-supported-script', 'pitch', 'distance-from-center', 'measure-light', 'raster-particle-speed']);\n}\n","import RuntimeError from './runtime_error';\n\nimport type {Expression} from './expression';\n\nexport type Stops = Array<[number, Expression]>;\n\n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nexport function findStopLessThanOrEqualTo(stops: Array, input: number): number {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) { // Search complete\n return currentIndex;\n }\n\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError('Input is not a number.');\n }\n }\n\n return 0;\n}\n","import {NumberType} from '../types';\nimport {findStopLessThanOrEqualTo} from '../stops';\n\nimport type {Stops} from '../stops';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Step implements Expression {\n type: Type;\n\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, input: Expression, stops: Stops) {\n this.type = type;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Step | null | void {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n const input = context.parse(args[1], 1, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n\n const labelKey = i;\n const valueKey = i + 1;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n return new Step(outputType, input, stops);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n\n const value = (this.input.evaluate(ctx) as number);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"step\", this.input.serialize()];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n\nexport default Step;\n","'use strict';\n\nmodule.exports = UnitBezier;\n\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3.0 * p1x;\n this.bx = 3.0 * (p2x - p1x) - this.cx;\n this.ax = 1.0 - this.cx - this.bx;\n\n this.cy = 3.0 * p1y;\n this.by = 3.0 * (p2y - p1y) - this.cy;\n this.ay = 1.0 - this.cy - this.by;\n\n this.p1x = p1x;\n this.p1y = p1y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\n\nUnitBezier.prototype = {\n sampleCurveX: function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n },\n\n sampleCurveY: function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n },\n\n sampleCurveDerivativeX: function (t) {\n return (3.0 * this.ax * t + 2.0 * this.bx) * t + this.cx;\n },\n\n solveCurveX: function (x, epsilon) {\n if (epsilon === undefined) epsilon = 1e-6;\n\n if (x < 0.0) return 0.0;\n if (x > 1.0) return 1.0;\n\n var t = x;\n\n // First try a few iterations of Newton's method - normally very fast.\n for (var i = 0; i < 8; i++) {\n var x2 = this.sampleCurveX(t) - x;\n if (Math.abs(x2) < epsilon) return t;\n\n var d2 = this.sampleCurveDerivativeX(t);\n if (Math.abs(d2) < 1e-6) break;\n\n t = t - x2 / d2;\n }\n\n // Fall back to the bisection method for reliability.\n var t0 = 0.0;\n var t1 = 1.0;\n t = x;\n\n for (i = 0; i < 20; i++) {\n x2 = this.sampleCurveX(t);\n if (Math.abs(x2 - x) < epsilon) break;\n\n if (x > x2) {\n t0 = t;\n } else {\n t1 = t;\n }\n\n t = (t1 - t0) * 0.5 + t0;\n }\n\n return t;\n },\n\n solve: function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n }\n};\n","import Color from './color';\nimport {number as interpolateNumber} from './interpolate';\n\ntype LABColor = {\n l: number;\n a: number;\n b: number;\n alpha: number;\n};\n\ntype HCLColor = {\n h: number;\n c: number;\n l: number;\n alpha: number;\n};\n\n// Constants\nconst Xn = 0.950470, // D65 standard referent\n Yn = 1,\n Zn = 1.088830,\n t0 = 4 / 29,\n t1 = 6 / 29,\n t2 = 3 * t1 * t1,\n t3 = t1 * t1 * t1,\n deg2rad = Math.PI / 180,\n rad2deg = 180 / Math.PI;\n\n// Utilities\nfunction xyz2lab(t: number) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t: number) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction xyz2rgb(x: number) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2xyz(x: number) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\n// LAB\nfunction rgbToLab(rgbColor: Color): LABColor {\n const b = rgb2xyz(rgbColor.r),\n a = rgb2xyz(rgbColor.g),\n l = rgb2xyz(rgbColor.b),\n x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn),\n y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.0721750 * l) / Yn),\n z = xyz2lab((0.0193339 * b + 0.1191920 * a + 0.9503041 * l) / Zn);\n\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\n\nfunction labToRgb(labColor: LABColor): Color {\n let y = (labColor.l + 16) / 116,\n x = isNaN(labColor.a) ? y : y + labColor.a / 500,\n z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color(\n xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.9692660 * x + 1.8760108 * y + 0.0415560 * z),\n xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z),\n labColor.alpha\n );\n}\n\nfunction interpolateLab(from: LABColor, to: LABColor, t: number): LABColor {\n return {\n l: interpolateNumber(from.l, to.l, t),\n a: interpolateNumber(from.a, to.a, t),\n b: interpolateNumber(from.b, to.b, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\n// HCL\nfunction rgbToHcl(rgbColor: Color): HCLColor {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\n\nfunction hclToRgb(hclColor: HCLColor): Color {\n const h = hclColor.h * deg2rad,\n c = hclColor.c,\n l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\n\nfunction interpolateHue(a: number, b: number, t: number) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\n\nfunction interpolateHcl(from: HCLColor, to: HCLColor, t: number): HCLColor {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: interpolateNumber(from.c, to.c, t),\n l: interpolateNumber(from.l, to.l, t),\n alpha: interpolateNumber(from.alpha, to.alpha, t)\n };\n}\n\nexport const lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n} as const;\n\nexport const hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n} as const;\n","import UnitBezier from '@mapbox/unitbezier';\nimport * as interpolate from '../../util/interpolate';\nimport {toString, NumberType, ColorType} from '../types';\nimport {findStopLessThanOrEqualTo} from '../stops';\nimport {hcl, lab} from '../../util/color_spaces';\n\nimport type Color from '../../util/color';\nimport type {Stops} from '../stops';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nexport type InterpolationType =\n | {name: 'linear'}\n | {name: 'exponential'; base: number}\n | {name: 'cubic-bezier'; controlPoints: [number, number, number, number]};\n\nexport type InterpolationOperator =\n | 'interpolate'\n | 'interpolate-hcl'\n | 'interpolate-lab';\n\nclass Interpolate implements Expression {\n type: Type;\n\n operator: InterpolationOperator;\n interpolation: InterpolationType;\n input: Expression;\n labels: Array;\n outputs: Array;\n\n constructor(type: Type, operator: InterpolationOperator, interpolation: InterpolationType, input: Expression, stops: Stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n\n static interpolationFactor(\n interpolation: InterpolationType,\n input: number,\n lower: number,\n upper: number,\n ): number {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Interpolate | null | void {\n let [operator, interpolation, input, ...rest] = args;\n\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n\n if (interpolation[0] === 'linear') {\n interpolation = {name: 'linear'};\n } else if (interpolation[0] === 'exponential') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (\n controlPoints.length !== 4 ||\n controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)\n ) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n\n interpolation = {\n name: 'cubic-bezier',\n controlPoints\n };\n } else {\n return context.error(`Unknown interpolation type ${String(interpolation[0])}`, 1, 0);\n }\n\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n }\n\n if (args.length - 1 > 3 && (args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n\n input = context.parse(input, 2, NumberType);\n if (!input) return null;\n\n const stops: Stops = [];\n\n let outputType: Type = null;\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n\n const labelKey = i + 3;\n const valueKey = i + 4;\n\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n stops.push([label, parsed]);\n }\n\n if (outputType.kind !== 'number' &&\n outputType.kind !== 'color' &&\n !(\n outputType.kind === 'array' &&\n outputType.itemType.kind === 'number' &&\n typeof outputType.N === 'number'\n )\n ) {\n return context.error(`Type ${toString(outputType)} is not interpolatable.`);\n }\n\n return new Interpolate(outputType, operator as InterpolationOperator, interpolation as InterpolationType, input as Expression, stops);\n }\n\n evaluate(ctx: EvaluationContext): Color {\n const labels = this.labels;\n const outputs = this.outputs;\n\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx) as Color;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const value: number = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx) as Color;\n }\n\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx) as Color;\n }\n\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const outputLower: Color = outputs[index].evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const outputUpper: Color = outputs[index + 1].evaluate(ctx);\n\n if (this.operator === 'interpolate') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t);\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined());\n }\n\n serialize(): SerializedExpression {\n let interpolation: [InterpolationType['name'], ...number[]];\n if (this.interpolation.name === 'linear') {\n interpolation = ['linear'];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = ['linear'];\n } else {\n interpolation = ['exponential', this.interpolation.base];\n }\n } else {\n interpolation = ['cubic-bezier', ...this.interpolation.controlPoints];\n }\n\n const serialized = [this.operator, interpolation, this.input.serialize()];\n\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(\n this.labels[i],\n this.outputs[i].serialize()\n );\n }\n return serialized;\n }\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input: number, base: number, lowerValue: number, upperValue: number) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n\nexport default Interpolate;\n","import assert from 'assert';\nimport {checkSubtype, ValueType} from '../types';\nimport ResolvedImage from '../types/resolved_image';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Coalesce implements Expression {\n type: Type;\n args: Array;\n\n constructor(type: Type, args: Array) {\n this.type = type;\n this.args = args;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Coalesce | null | undefined {\n if (args.length < 2) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Coalesce'.\n return context.error(\"Expectected at least one argument.\");\n }\n let outputType: Type = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs: Expression[] = [];\n\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, {typeAnnotation: 'omit'});\n if (!parsed) return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n assert(outputType);\n\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType &&\n parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n\n return needsAnnotation ?\n new Coalesce(ValueType, parsedArgs) :\n new Coalesce(outputType, parsedArgs);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n let result = null;\n let argCount = 0;\n let firstImage: ResolvedImage | undefined;\n for (const arg of this.args) {\n argCount++;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n // set to first image\n if (!firstImage) {\n firstImage = result;\n }\n result = null;\n // if we reach the end, return the first image\n if (argCount === this.args.length) {\n return firstImage;\n }\n }\n\n if (result !== null) break;\n }\n return result;\n }\n\n eachChild(fn: (_: Expression) => void) {\n this.args.forEach(fn);\n }\n\n outputDefined(): boolean {\n return this.args.every(arg => arg.outputDefined());\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"coalesce\"];\n // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Coalesce;\n","import type {Type} from '../types';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\nclass Let implements Expression {\n type: Type;\n bindings: Array<[string, Expression]>;\n result: Expression;\n\n constructor(bindings: Array<[string, Expression]>, result: Expression) {\n this.type = result.type;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n return this.result.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Let | null | void {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${args.length - 1} instead.`);\n\n const bindings: Array<[string, Expression]> = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${typeof name} instead.`, i);\n }\n\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n\n const value = context.parse(args[i + 1], i + 1);\n if (!value) return null;\n\n bindings.push([name, value]);\n }\n\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result) return null;\n\n return new Let(bindings, result);\n }\n\n outputDefined(): boolean {\n return this.result.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized: SerializedExpression[] = [\"let\"];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\n\nexport default Let;\n","import {array, ValueType, NumberType} from '../types';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type, ArrayType} from '../types';\nimport type {Value} from '../values';\n\nclass At implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): At | null | void {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t = input.type as ArrayType;\n return new At(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext): Value {\n const index = (this.index.evaluate(ctx) as number);\n const array = (this.input.evaluate(ctx) as Array);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: negative index`);\n }\n\n if (index >= array.length) {\n throw new RuntimeError(`Array index out of bounds: index exceeds array size`);\n }\n\n if (index !== Math.floor(index)) {\n throw new RuntimeError(`Array index must be an integer. Use at-interpolated for fractional indices`);\n }\n\n return array[index];\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"at\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default At;\n","import {array, ValueType, NumberType} from '../types';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type, ArrayType} from '../types';\nimport type {Value} from '../values';\n\nclass AtInterpolated implements Expression {\n type: Type;\n index: Expression;\n input: Expression;\n\n constructor(type: Type, index: Expression, input: Expression) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): AtInterpolated | null | void {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array(context.expectedType || ValueType));\n\n if (!index || !input) return null;\n\n const t = input.type as ArrayType;\n return new AtInterpolated(t.itemType, index, input);\n }\n\n evaluate(ctx: EvaluationContext): Value {\n const index = (this.index.evaluate(ctx) as number);\n const array = (this.input.evaluate(ctx) as Array);\n\n if (index < 0) {\n throw new RuntimeError(`Array index out of bounds: ${index} < 0.`);\n }\n\n if (index > array.length - 1) {\n throw new RuntimeError(`Array index out of bounds: ${index} > ${array.length - 1}.`);\n }\n\n if (index === Math.floor(index)) {\n return array[index];\n }\n\n // Interpolation logic for non-integer indices\n const lowerIndex = Math.floor(index);\n const upperIndex = Math.ceil(index);\n\n const lowerValue = array[lowerIndex];\n const upperValue = array[upperIndex];\n\n if (typeof lowerValue !== 'number' || typeof upperValue !== 'number') {\n throw new RuntimeError(`Cannot interpolate between non-number values at index ${index}.`);\n }\n\n // Linear interpolation\n const fraction = index - lowerIndex;\n return lowerValue * (1 - fraction) + upperValue * fraction;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.index);\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"at-interpolated\", this.index.serialize(), this.input.serialize()];\n }\n}\n\nexport default AtInterpolated;\n","import {\n BooleanType,\n StringType,\n ValueType,\n NullType,\n toString,\n NumberType,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass In implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n\n constructor(needle: Expression, haystack: Expression) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): In | null | undefined {\n if (args.length !== 3) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'In'.\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'In'.\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n return new In(needle, haystack);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const needle = (this.needle.evaluate(ctx));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const haystack = (this.haystack.evaluate(ctx));\n\n if (haystack == null) return false;\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n // Type assertions safe due to isValidNativeType checks above\n return (haystack as string | unknown[]).indexOf(needle as string) >= 0;\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n return [\"in\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default In;\n","import {\n BooleanType,\n StringType,\n ValueType,\n NullType,\n toString,\n NumberType,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass IndexOf implements Expression {\n type: Type;\n needle: Expression;\n haystack: Expression;\n fromIndex: Expression | null | undefined;\n\n constructor(needle: Expression, haystack: Expression, fromIndex?: Expression) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): IndexOf | null | undefined {\n if (args.length <= 2 || args.length >= 5) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'IndexOf'.\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const needle = context.parse(args[1], 1, ValueType);\n\n const haystack = context.parse(args[2], 2, ValueType);\n\n if (!needle || !haystack) return null;\n if (!isValidType(needle.type, [BooleanType, StringType, NumberType, NullType, ValueType])) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'IndexOf'.\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${toString(needle.type)} instead`);\n }\n\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex) return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const needle = (this.needle.evaluate(ctx));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const haystack = (this.haystack.evaluate(ctx));\n\n if (!isValidNativeType(needle, ['boolean', 'string', 'number', 'null'])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected first argument to be of type boolean, string, number or null, but found ${toString(typeOf(needle))} instead.`);\n }\n\n if (!isValidNativeType(haystack, ['string', 'array'])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected second argument to be of type array or string, but found ${toString(typeOf(haystack))} instead.`);\n }\n\n // Type assertions safe due to isValidNativeType checks above\n if (this.fromIndex) {\n const fromIndex = (this.fromIndex.evaluate(ctx) as number);\n return (haystack as string | unknown[]).indexOf(needle as string, fromIndex);\n }\n\n return (haystack as string | unknown[]).indexOf(needle as string);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize(), fromIndex];\n }\n return [\"index-of\", this.needle.serialize(), this.haystack.serialize()];\n }\n}\n\nexport default IndexOf;\n","import assert from 'assert';\nimport {typeOf} from '../values';\nimport {typeEquals, ValueType} from '../types';\n\nimport type {Type} from '../types';\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\n\n// Map input label values to output expression index\ntype Cases = Partial>;\n\nclass Match implements Expression {\n type: Type;\n inputType: Type;\n\n input: Expression;\n cases: Cases;\n outputs: Array;\n otherwise: Expression;\n\n constructor(inputType: Type, outputType: Type, input: Expression, cases: Cases, outputs: Array, otherwise: Expression) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Match | null | void {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n\n let inputType: Type | undefined;\n let outputType: Type | null | undefined;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cases: Record = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n\n const labelContext = context.concat(i);\n if ((labels as unknown[]).length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n\n for (const label of (labels as unknown[])) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);\n\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n\n cases[String(label)] = outputs.length;\n }\n\n const result = context.parse(value, i, outputType);\n if (!result) return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n if (!input) return null;\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(inputType && outputType);\n\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype((inputType), input.type)) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n const input = (this.input.evaluate(ctx)) as number | string;\n const output = (typeEquals(typeOf(input), this.inputType) && this.outputs[this.cases[input]]) || this.otherwise;\n return output.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"match\", this.input.serialize()];\n\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput: Array<[number, Array]> = [];\n const outputLookup: {\n [index: number]: number;\n } = {}; // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([this.cases[label], [label]]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n\n const coerceLabel = (label: number | string) => (this.inputType.kind === 'number' ? Number(label) : label);\n\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\n\nexport default Match;\n","import assert from 'assert';\nimport {BooleanType} from '../types';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\ntype Branches = Array<[Expression, Expression]>;\n\nclass Case implements Expression {\n type: Type;\n\n branches: Branches;\n otherwise: Expression;\n\n constructor(type: Type, branches: Branches, otherwise: Expression) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Case | null | undefined {\n if (args.length < 4)\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Case'.\n return context.error(`Expected at least 3 arguments, but found only ${args.length - 1}.`);\n if (args.length % 2 !== 0)\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Case'.\n return context.error(`Expected an odd number of arguments.`);\n\n let outputType: Type | null | undefined;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test) return null;\n\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result) return null;\n\n branches.push([test, result]);\n\n outputType = outputType || result.type;\n }\n\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise) return null;\n\n assert(outputType);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Case(outputType, branches, otherwise);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n\n eachChild(fn: (_: Expression) => void) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n\n outputDefined(): boolean {\n return this.branches.every(([_, out]: [Expression, Expression]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"case\"];\n // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Case;\n","import {\n ValueType,\n NumberType,\n StringType,\n array,\n toString,\n isValidType,\n isValidNativeType,\n} from '../types';\nimport RuntimeError from '../runtime_error';\nimport {typeOf} from '../values';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Slice implements Expression {\n type: Type;\n input: Expression;\n beginIndex: Expression;\n endIndex: Expression | null | undefined;\n\n constructor(type: Type, input: Expression, beginIndex: Expression, endIndex?: Expression) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Slice | null | undefined {\n if (args.length <= 2 || args.length >= 5) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Slice'.\n return context.error(`Expected 3 or 4 arguments, but found ${args.length - 1} instead.`);\n }\n\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n\n if (!input || !beginIndex) return null;\n\n if (!isValidType(input.type, [array(ValueType), StringType, ValueType])) {\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Slice'.\n return context.error(`Expected first argument to be of type array or string, but found ${toString(input.type)} instead`);\n }\n\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex) return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n evaluate(ctx: EvaluationContext): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const input = (this.input.evaluate(ctx));\n const beginIndex = (this.beginIndex.evaluate(ctx) as number);\n\n if (!isValidNativeType(input, ['string', 'array'])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected first argument to be of type array or string, but found ${toString(typeOf(input))} instead.`);\n }\n\n if (this.endIndex) {\n const endIndex = (this.endIndex.evaluate(ctx) as number);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return input.slice(beginIndex, endIndex);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return input.slice(beginIndex);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize(), endIndex];\n }\n return [\"slice\", this.input.serialize(), this.beginIndex.serialize()];\n }\n}\n\nexport default Slice;\n","import {\n StringType,\n array,\n} from '../types';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Split implements Expression {\n type: Type;\n str: Expression;\n delimiter: Expression;\n\n constructor(str: Expression, delimiter: Expression) {\n this.type = array(StringType);\n this.str = str;\n this.delimiter = delimiter;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Split | void {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${args.length - 1} instead.`);\n }\n\n const str = context.parse(args[1], 1, StringType);\n const delimiter = context.parse(args[2], 2, StringType);\n\n if (!str || !delimiter) return;\n\n return new Split(str, delimiter);\n }\n\n evaluate(ctx: EvaluationContext): string[] {\n const str = (this.str.evaluate(ctx) as string);\n const delimiter = (this.delimiter.evaluate(ctx) as string);\n\n return str.split(delimiter);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.str);\n fn(this.delimiter);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n return [\"split\", this.str.serialize(), this.delimiter.serialize()];\n }\n}\n\nexport default Split;\n","import {toString, ValueType, BooleanType, CollatorType} from '../types';\nimport Assertion from './assertion';\nimport {typeOf} from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression, SerializedExpression, ExpressionRegistration} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\ntype ComparisonOperator = '==' | '!=' | '<' | '>' | '<=' | '>=';\n\nfunction isComparableType(op: ComparisonOperator, type: Type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' ||\n type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'null' ||\n type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' ||\n type.kind === 'number' ||\n type.kind === 'value';\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction eq(ctx: EvaluationContext, a: any, b: any): boolean { return a === b; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction neq(ctx: EvaluationContext, a: any, b: any): boolean { return a !== b; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction lt(ctx: EvaluationContext, a: any, b: any): boolean { return a < b; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction gt(ctx: EvaluationContext, a: any, b: any): boolean { return a > b; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction lteq(ctx: EvaluationContext, a: any, b: any): boolean { return a <= b; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction gteq(ctx: EvaluationContext, a: any, b: any): boolean { return a >= b; }\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\nfunction eqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) === 0; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction neqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return !eqCollate(ctx, a, b, c); }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\nfunction ltCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) < 0; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\nfunction gtCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) > 0; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\nfunction lteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) <= 0; }\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\nfunction gteqCollate(ctx: EvaluationContext, a: any, b: any, c: any): boolean { return c.compare(a, b) >= 0; }\n\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(\n op: ComparisonOperator,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n compareBasic: (arg1: EvaluationContext, arg2?: any, arg3?: any) => boolean,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n compareWithCollator: (arg1: EvaluationContext, arg2?: any, arg3?: any, arg4?: any) => boolean,\n): ExpressionRegistration {\n const isOrderComparison = op !== '==' && op !== '!=';\n\n return class Comparison implements Expression {\n type: Type;\n lhs: Expression;\n rhs: Expression;\n collator: Expression | null | undefined;\n hasUntypedArgument: boolean;\n\n constructor(lhs: Expression, rhs: Expression, collator?: Expression | null) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | null | void {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n\n const op = args[0] as ComparisonOperator;\n\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs) return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${op}\" comparisons are not supported for type '${toString(lhs.type)}'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs) return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${op}\" comparisons are not supported for type '${toString(rhs.type)}'.`);\n }\n\n if (\n lhs.type.kind !== rhs.type.kind &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot compare types '${toString(lhs.type)}' and '${toString(rhs.type)}'.`);\n }\n\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion(lhs.type, [rhs]);\n }\n }\n\n let collator = null;\n if (args.length === 4) {\n if (\n lhs.type.kind !== 'string' &&\n rhs.type.kind !== 'string' &&\n lhs.type.kind !== 'value' &&\n rhs.type.kind !== 'value'\n ) {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator) return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Comparison(lhs, rhs, collator);\n }\n\n evaluate(ctx: EvaluationContext): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const lhs = this.lhs.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const rhs = this.rhs.evaluate(ctx);\n\n if (isOrderComparison && this.hasUntypedArgument) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const lt = typeOf(lhs);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError(`Expected arguments for \"${op}\" to be (string, string) or (number, number), but found (${lt.kind}, ${rt.kind}) instead.`);\n }\n }\n\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const lt = typeOf(lhs);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n\n return this.collator ?\n compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) :\n compareBasic(ctx, lhs, rhs);\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n\n outputDefined(): boolean {\n return true;\n }\n\n serialize(): SerializedExpression {\n const serialized: SerializedExpression[] = [op];\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n };\n}\n\nexport const Equals: ReturnType = makeComparison('==', eq, eqCollate);\nexport const NotEquals: ReturnType = makeComparison('!=', neq, neqCollate);\nexport const LessThan: ReturnType = makeComparison('<', lt, ltCollate);\nexport const GreaterThan: ReturnType = makeComparison('>', gt, gtCollate);\nexport const LessThanOrEqual: ReturnType = makeComparison('<=', lteq, lteqCollate);\nexport const GreaterThanOrEqual: ReturnType = makeComparison('>=', gteq, gteqCollate);\n","import {StringType, NumberType} from '../types';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type EvaluationContext from '../evaluation_context';\nimport type ParsingContext from '../parsing_context';\nimport type {Type} from '../types';\n\nexport default class NumberFormat implements Expression {\n type: Type;\n number: Expression;\n locale: Expression | null; // BCP 47 language tag\n currency: Expression | null; // ISO 4217 currency code, required if style=currency\n unit: Expression | null; // Simple units sanctioned for use in ECMAScript, required if style=unit. https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n minFractionDigits: Expression | null; // Default 0\n maxFractionDigits: Expression | null; // Default 3\n\n constructor(number: Expression,\n locale: Expression | null,\n currency: Expression | null,\n unit: Expression | null,\n minFractionDigits: Expression | null,\n maxFractionDigits: Expression | null) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.unit = unit;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Expression | void {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n\n const number = context.parse(args[1], 1, NumberType);\n if (!number) return null;\n\n const options = args[2];\n if (typeof options !== \"object\" || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n\n let locale = null;\n if (options['locale']) {\n locale = context.parseObjectValue(options['locale'], 2, 'locale', StringType);\n if (!locale) return null;\n }\n\n let currency = null;\n if (options['currency']) {\n currency = context.parseObjectValue(options['currency'], 2, 'currency', StringType);\n if (!currency) return null;\n }\n\n let unit = null;\n if (options['unit']) {\n unit = context.parseObjectValue(options['unit'], 2, 'unit', StringType);\n if (!unit) return null;\n }\n\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parseObjectValue(options['min-fraction-digits'], 2, 'min-fraction-digits', NumberType);\n if (!minFractionDigits) return null;\n }\n\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parseObjectValue(options['max-fraction-digits'], 2, 'max-fraction-digits', NumberType);\n if (!maxFractionDigits) return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new NumberFormat(number, locale, currency, unit, minFractionDigits, maxFractionDigits);\n }\n\n evaluate(ctx: EvaluationContext): string {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [],\n {\n style:\n (this.currency && \"currency\") ||\n (this.unit && \"unit\") ||\n \"decimal\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n unit: this.unit ? this.unit.evaluate(ctx) : undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n }).format(this.number.evaluate(ctx));\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.unit) {\n fn(this.unit);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options: Record = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.unit) {\n options['unit'] = this.unit.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\"number-format\", this.number.serialize(), options];\n }\n}\n","import {NumberType, toString} from '../types';\nimport {typeOf} from '../values';\nimport RuntimeError from '../runtime_error';\n\nimport type {Expression, SerializedExpression} from '../expression';\nimport type ParsingContext from '../parsing_context';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Type} from '../types';\n\nclass Length implements Expression {\n type: Type;\n input: Expression;\n\n constructor(input: Expression) {\n this.type = NumberType;\n this.input = input;\n }\n\n static parse(args: ReadonlyArray, context: ParsingContext): Length | null | undefined {\n if (args.length !== 2)\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Length'.\n return context.error(`Expected 1 argument, but found ${args.length - 1} instead.`);\n\n const input = context.parse(args[1], 1);\n if (!input) return null;\n\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n // @ts-expect-error - TS2322 - Type 'void' is not assignable to type 'Length'.\n return context.error(`Expected argument of type string or array, but found ${toString(input.type)} instead.`);\n\n return new Length(input);\n }\n\n evaluate(ctx: EvaluationContext): number {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n throw new RuntimeError(`Expected value to be of type string or array, but found ${toString(typeOf(input))} instead.`);\n }\n }\n\n eachChild(fn: (_: Expression) => void) {\n fn(this.input);\n }\n\n outputDefined(): boolean {\n return false;\n }\n\n serialize(): SerializedExpression {\n const serialized = [\"length\"];\n // @ts-expect-error - TS2345 - Argument of type 'SerializedExpression' is not assignable to parameter of type 'string'.\n this.eachChild(child => { serialized.push(child.serialize()); });\n return serialized;\n }\n}\n\nexport default Length;\n","// Seeded pseudo random generator function\nexport function mulberry32(a: number): () => number {\n return function () {\n a |= 0;\n a = (a + 0x6d2b79f5) | 0;\n let t = Math.imul(a ^ (a >>> 15), 1 | a);\n t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n };\n}\n","import {\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n ObjectType,\n ValueType,\n ErrorType,\n CollatorType,\n array,\n toString as typeToString,\n} from '../types';\nimport {typeOf, Color, validateRGBA, validateHSLA, toString as valueToString} from '../values';\nimport CompoundExpression from '../compound_expression';\nimport RuntimeError from '../runtime_error';\nimport Let from './let';\nimport Var from './var';\nimport Literal from './literal';\nimport Assertion from './assertion';\nimport Coercion from './coercion';\nimport At from './at';\nimport AtInterpolated from './at_interpolated';\nimport In from './in';\nimport IndexOf from './index_of';\nimport Match from './match';\nimport Case from './case';\nimport Slice from './slice';\nimport Split from './split';\nimport Step from './step';\nimport Interpolate from './interpolate';\nimport Coalesce from './coalesce';\nimport {\n Equals,\n NotEquals,\n LessThan,\n GreaterThan,\n LessThanOrEqual,\n GreaterThanOrEqual\n} from './comparison';\nimport CollatorExpression from './collator';\nimport NumberFormat from './number_format';\nimport FormatExpression from './format';\nimport ImageExpression from './image';\nimport Length from './length';\nimport Within from './within';\nimport Config from './config';\nimport Distance from './distance';\nimport {mulberry32} from '../../util/random';\n\nimport type {Type} from '../types';\nimport type {Value} from '../values';\nimport type EvaluationContext from '../evaluation_context';\nimport type {Varargs} from '../compound_expression';\nimport type {Expression, ExpressionRegistry} from '../expression';\n\nconst expressions: ExpressionRegistry = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion,\n 'at': At,\n 'at-interpolated': AtInterpolated,\n 'boolean': Assertion,\n 'case': Case,\n 'coalesce': Coalesce,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In,\n 'index-of': IndexOf,\n 'interpolate': Interpolate,\n 'interpolate-hcl': Interpolate,\n 'interpolate-lab': Interpolate,\n 'length': Length,\n 'let': Let,\n 'literal': Literal,\n 'match': Match,\n 'number': Assertion,\n 'number-format': NumberFormat,\n 'object': Assertion,\n 'slice': Slice,\n 'step': Step,\n 'string': Assertion,\n 'to-boolean': Coercion,\n 'to-color': Coercion,\n 'to-number': Coercion,\n 'to-string': Coercion,\n 'var': Var,\n 'within': Within,\n 'distance': Distance,\n 'config': Config,\n 'split': Split\n};\n\nfunction rgba(ctx: EvaluationContext, [r, g, b, a]: Expression[]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n r = r.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n g = g.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n b = b.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error) throw new RuntimeError(error);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return new Color(r as unknown as number / 255, g as unknown as number / 255, b as unknown as number / 255, alpha);\n}\n\nfunction hsla(ctx: EvaluationContext, [h, s, l, a]: Expression[]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n h = h.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n s = s.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n l = l.evaluate(ctx);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateHSLA(h, s, l, alpha);\n if (error) throw new RuntimeError(error);\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const colorFunction = `hsla(${h}, ${s}%, ${l}%, ${alpha})`;\n const color = Color.parse(colorFunction);\n if (!color) throw new RuntimeError(`Failed to parse HSLA color: ${colorFunction}`);\n return color;\n}\n\nfunction has(key: keyof T, obj: T): boolean {\n return key in obj;\n}\n\nfunction get(key: keyof T, obj: T): T[keyof T] | null {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\n\nfunction binarySearch(v: unknown, a: Record, i: number, j: number): boolean {\n while (i <= j) {\n const m = (i + j) >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\n\nfunction varargs(type: Type): Varargs {\n return {type};\n}\n\nfunction hashString(str: string) {\n let hash = 0;\n if (str.length === 0) {\n return hash;\n }\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return hash;\n}\n\nCompoundExpression.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [v]) => { throw new RuntimeError(v.evaluate(ctx)); }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [v]) => typeToString(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return v.evaluate(ctx).toNonPremultipliedRenderColor(null).toArray();\n }\n ],\n 'to-hsla': [\n array(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return v.evaluate(ctx).toNonPremultipliedRenderColor(null).toHslaArray();\n }\n ],\n 'rgb': [\n ColorType,\n [NumberType, NumberType, NumberType],\n rgba\n ],\n 'rgba': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n rgba\n ],\n 'hsl': [\n ColorType,\n [NumberType, NumberType, NumberType],\n hsla\n ],\n 'hsla': [\n ColorType,\n [NumberType, NumberType, NumberType, NumberType],\n hsla\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ], [\n [StringType, ObjectType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {}) as Value\n ],\n 'properties': [\n ObjectType,\n [],\n (ctx) => ctx.properties() as Value\n ],\n 'geometry-type': [\n StringType,\n [],\n (ctx) => ctx.geometryType()\n ],\n 'worldview': [\n StringType,\n [],\n (ctx) => ctx.globals.worldview || \"\"\n ],\n 'is-active-floor': [\n BooleanType,\n varargs(StringType),\n (ctx, args) => {\n const hasActiveFloors = ctx.globals.activeFloors && ctx.globals.activeFloors.size > 0;\n if (!hasActiveFloors) { return false; }\n const floorIds: Set = ctx.globals.activeFloors;\n return args.some(arg => {\n const value = arg.evaluate(ctx) as string;\n return floorIds.has(value);\n });\n }\n ],\n 'id': [\n ValueType,\n [],\n (ctx) => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n (ctx) => ctx.globals.zoom\n ],\n 'pitch': [\n NumberType,\n [],\n (ctx) => ctx.globals.pitch || 0\n ],\n 'distance-from-center': [\n NumberType,\n [],\n (ctx) => ctx.distanceFromCenter()\n ],\n 'measure-light': [\n NumberType,\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [s]) => ctx.measureLight(s.evaluate(ctx))\n ],\n 'heatmap-density': [\n NumberType,\n [],\n (ctx) => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.lineProgress || 0\n ],\n 'raster-value': [\n NumberType,\n [],\n (ctx) => ctx.globals.rasterValue || 0\n ],\n 'raster-particle-speed': [\n NumberType,\n [],\n (ctx) => ctx.globals.rasterParticleSpeed || 0\n ],\n 'sky-radial-progress': [\n NumberType,\n [],\n (ctx) => ctx.globals.skyRadialProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n (ctx) => (ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated)\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ], [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [NumberType, NumberType],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [NumberType, NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.log2(n.evaluate(ctx))\n ],\n 'sin': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [StringType, ValueType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n (ctx, [k, v]) => ctx.properties()[(k).value] === (v).value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === (v).value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === (v).value\n ],\n 'filter-<': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const a = ctx.properties()[(k).value];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const a = ctx.properties()[(k).value];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const a = ctx.properties()[(k).value];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [StringType, ValueType],\n (ctx, [k, v]) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const a = ctx.properties()[(k).value];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const b = (v).value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => (k).value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n (ctx) => (ctx.id() !== null && ctx.id() !== undefined)\n ],\n 'filter-type-in': [\n BooleanType,\n [array(StringType)],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [v]) => (v).value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array(ValueType)],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [v]) => (v).value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is an array literal\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [k, v]) => (v).value.indexOf(ctx.properties()[(k).value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [StringType, array(ValueType)],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n (ctx, [k, v]) => binarySearch(ctx.properties()[(k).value], (v).value, 0, (v).value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [BooleanType, BooleanType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (ctx, args) => args.map(arg => valueToString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ],\n 'random': [\n NumberType,\n [NumberType, NumberType, ValueType],\n (ctx, args) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment\n const [min, max, seed] = args.map(arg => arg.evaluate(ctx));\n if (min > max) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return min;\n }\n if (min === max) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return min;\n }\n let seedVal;\n if (typeof seed === 'string') {\n seedVal = hashString(seed);\n } else if (typeof seed === 'number') {\n seedVal = seed;\n } else {\n throw new RuntimeError(`Invalid seed input: ${seed}`);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const random = mulberry32(seedVal)();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return min + random * (max - min);\n }\n ],\n});\n\nexport default expressions;\n","import CompoundExpression from \"./compound_expression\";\nimport Config from \"./definitions/config\";\n\nimport type {Expression} from \"./expression\";\n\nfunction getConfigDependencies(e: Expression): Set {\n if (e instanceof Config) {\n const singleConfig = new Set([e.key]);\n return singleConfig;\n }\n\n let result = new Set();\n e.eachChild(arg => {\n result = new Set([...result, ...getConfigDependencies(arg)]);\n });\n return result;\n}\n\nfunction isIndoorDependent(e: Expression): boolean {\n if (e instanceof CompoundExpression && e.name === 'is-active-floor') {\n return true;\n }\n\n let result = false;\n e.eachChild(arg => {\n if (!result && isIndoorDependent(arg)) {\n result = true;\n }\n });\n return result;\n}\n\nexport {getConfigDependencies, isIndoorDependent};\n","/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nexport type Result = {\n result: 'success';\n value: T;\n} | {\n result: 'error';\n value: E;\n};\n\nexport function success(value: T): Result {\n return {result: 'success', value};\n}\n\nexport function error(value: E): Result {\n return {result: 'error', value};\n}\n","import type {ExpressionSpecification, StylePropertySpecification} from '../style-spec';\n\ntype ExpressionParameter = ExpressionSpecification['parameters'][number];\n\nfunction expressionHasParameter(\n expression: ExpressionSpecification | null | undefined,\n parameter: ExpressionParameter,\n): boolean {\n return !!expression && !!expression.parameters && expression.parameters.indexOf(parameter) > -1;\n}\n\nexport function supportsPropertyExpression(spec: StylePropertySpecification): boolean {\n return spec['property-type'] === 'data-driven';\n}\n\nexport function supportsLightExpression(spec: StylePropertySpecification): boolean {\n return expressionHasParameter(spec.expression, 'measure-light');\n}\n\nexport function supportsZoomExpression(spec: StylePropertySpecification): boolean {\n return expressionHasParameter(spec.expression, 'zoom');\n}\n\nexport function supportsLineProgressExpression(spec: StylePropertySpecification): boolean {\n return expressionHasParameter(spec.expression, 'line-progress');\n}\n\nexport function supportsInterpolation(spec: StylePropertySpecification): boolean {\n return !!spec.expression && spec.expression.interpolated;\n}\n","/* eslint-disable @typescript-eslint/ban-ts-comment */\n// @ts-nocheck\n\nimport * as colorSpaces from '../util/color_spaces';\nimport Color from '../util/color';\nimport {getType, isNumber} from '../util/get_type';\nimport * as interpolate from '../util/interpolate';\nimport Interpolate from '../expression/definitions/interpolate';\nimport Formatted from '../expression/types/formatted';\nimport ResolvedImage from '../expression/types/resolved_image';\nimport {supportsInterpolation} from '../util/properties';\nimport {findStopLessThanOrEqualTo} from '../expression/stops';\n\nexport function isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction identityFunction(x) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return x;\n}\n\nexport function createFunction(parameters, propertySpec) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const isColor = propertySpec.type === 'color';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const zoomAndFeatureDependent = parameters.stops && typeof parameters.stops[0][0] === 'object';\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n const type = parameters.type || (supportsInterpolation(propertySpec) ? 'exponential' : 'interval');\n\n if (isColor) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n parameters = Object.assign({}, parameters);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (parameters.stops) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n parameters.stops = parameters.stops.map((stop) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n return [stop[0], Color.parse(stop[1])];\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (parameters.default) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n parameters.default = Color.parse(parameters.default);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n parameters.default = Color.parse(propertySpec.default);\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb' && !colorSpaces[parameters.colorSpace]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n throw new Error(`Unknown color space: ${parameters.colorSpace}`);\n }\n\n let innerFun;\n let hashedStops;\n let categoricalKeyType;\n if (type === 'exponential') {\n innerFun = evaluateExponentialFunction;\n } else if (type === 'interval') {\n innerFun = evaluateIntervalFunction;\n } else if (type === 'categorical') {\n innerFun = evaluateCategoricalFunction;\n\n // For categorical functions, generate an Object as a hashmap of the stops for fast searching\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n hashedStops = Object.create(null);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (const stop of parameters.stops) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n hashedStops[stop[0]] = stop[1];\n }\n\n // Infer key type based on first stop key-- used to encforce strict type checking later\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n categoricalKeyType = typeof parameters.stops[0][0];\n\n } else if (type === 'identity') {\n innerFun = evaluateIdentityFunction;\n } else {\n throw new Error(`Unknown function type \"${type}\"`);\n }\n\n if (zoomAndFeatureDependent) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const featureFunctions: Record = {};\n const zoomStops = [];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let s = 0; s < parameters.stops.length; s++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const stop = parameters.stops[s];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const zoom = stop[0].zoom;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (featureFunctions[zoom] === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n featureFunctions[zoom] = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n zoom,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n type: parameters.type,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n property: parameters.property,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n default: parameters.default,\n stops: []\n };\n zoomStops.push(zoom);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n featureFunctions[zoom].stops.push([stop[0].value, stop[1]]);\n }\n\n const featureFunctionStops = [];\n for (const z of zoomStops) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n featureFunctionStops.push([featureFunctions[z].zoom, createFunction(featureFunctions[z], propertySpec)]);\n }\n\n const interpolationType = {name: 'linear'};\n return {\n kind: 'composite',\n interpolationType,\n\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n zoomStops: featureFunctionStops.map(s => s[0]),\n evaluate({zoom}, properties) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return evaluateExponentialFunction({\n stops: featureFunctionStops,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n base: parameters.base\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n }, propertySpec, zoom).evaluate(zoom, properties);\n }\n };\n } else if (zoomDependent) {\n const interpolationType = type === 'exponential' ?\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n {name: 'exponential', base: parameters.base !== undefined ? parameters.base : 1} : null;\n return {\n kind: 'camera',\n interpolationType,\n\n interpolationFactor: Interpolate.interpolationFactor.bind(undefined, interpolationType),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n zoomStops: parameters.stops.map(s => s[0]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n evaluate: ({zoom}) => innerFun(parameters, propertySpec, zoom, hashedStops, categoricalKeyType)\n };\n } else {\n return {\n kind: 'source',\n evaluate(_, feature) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const value = feature && feature.properties ? feature.properties[parameters.property] : undefined;\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return coalesce(parameters.default, propertySpec.default);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return innerFun(parameters, propertySpec, value, hashedStops, categoricalKeyType);\n }\n };\n }\n}\n\nfunction coalesce(a, b, c) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (a !== undefined) return a;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (b !== undefined) return b;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (c !== undefined) return c;\n}\n\nfunction evaluateCategoricalFunction(parameters, propertySpec, input, hashedStops, keyType) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const evaluated = typeof input === keyType ? hashedStops[input] : undefined; // Enforce strict typing on input\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return coalesce(evaluated, parameters.default, propertySpec.default);\n}\n\nfunction evaluateIntervalFunction(parameters, propertySpec, input) {\n // Edge cases\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (!isNumber(input)) return coalesce(parameters.default, propertySpec.default);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const n = parameters.stops.length;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (n === 1) return parameters.stops[0][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return parameters.stops[index][1];\n}\n\nfunction evaluateExponentialFunction(parameters, propertySpec, input) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const base = parameters.base !== undefined ? parameters.base : 1;\n\n // Edge cases\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (!isNumber(input)) return coalesce(parameters.default, propertySpec.default);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const n = parameters.stops.length;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (n === 1) return parameters.stops[0][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (input <= parameters.stops[0][0]) return parameters.stops[0][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n if (input >= parameters.stops[n - 1][0]) return parameters.stops[n - 1][1];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const index = findStopLessThanOrEqualTo(parameters.stops.map((stop) => stop[0]), input);\n const t = interpolationFactor(\n input, base,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n parameters.stops[index][0],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n parameters.stops[index + 1][0]);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const outputLower = parameters.stops[index][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const outputUpper = parameters.stops[index + 1][1];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n let interp = interpolate[propertySpec.type] || identityFunction;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (parameters.colorSpace && parameters.colorSpace !== 'rgb') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const colorspace = colorSpaces[parameters.colorSpace];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n interp = (a, b) => colorspace.reverse(colorspace.interpolate(colorspace.forward(a), colorspace.forward(b), t));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof outputLower.evaluate === 'function') {\n return {\n evaluate(...args) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const evaluatedLower = outputLower.evaluate.apply(undefined, args);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n const evaluatedUpper = outputUpper.evaluate.apply(undefined, args);\n // Special case for fill-outline-color, which has no spec default.\n if (evaluatedLower === undefined || evaluatedUpper === undefined) {\n return undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return interp(evaluatedLower, evaluatedUpper, t);\n }\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call\n return interp(outputLower, outputUpper, t);\n}\n\nfunction evaluateIdentityFunction(parameters, propertySpec, input) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (propertySpec.type === 'color') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n input = Color.parse(input);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (propertySpec.type === 'formatted') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n input = Formatted.fromString(input.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (propertySpec.type === 'resolvedImage') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n input = ResolvedImage.build(input.toString());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (getType(input) !== propertySpec.type && (propertySpec.type !== 'enum' || !propertySpec.values[input])) {\n input = undefined;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access\n return coalesce(input, parameters.default, propertySpec.default);\n}\n\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n *\n * How it works:\n * Two consecutive stop values define a (scaled and shifted) exponential\n * function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n */\nfunction interpolationFactor(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\n","import assert from 'assert';\nimport ParsingError from './parsing_error';\nimport ParsingContext from './parsing_context';\nimport EvaluationContext from './evaluation_context';\nimport CompoundExpression from './compound_expression';\nimport Step from './definitions/step';\nimport Interpolate from './definitions/interpolate';\nimport Coalesce from './definitions/coalesce';\nimport Let from './definitions/let';\nimport definitions from './definitions/index';\nimport * as isConstant from './is_constant';\nimport * as expressionDependencies from './expression_dependencies';\nimport RuntimeError from './runtime_error';\nimport {success, error} from '../util/result';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsLightExpression,\n supportsInterpolation,\n supportsLineProgressExpression\n} from '../util/properties';\nimport {isFunction, createFunction} from '../function/index';\nimport {Color} from './values';\nimport {ColorType, StringType, NumberType, BooleanType, ValueType, FormattedType, ResolvedImageType, array} from './types';\n\nimport type {Type, EvaluationKind} from './types';\nimport type {Value} from './values';\nimport type {Expression} from './expression';\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {Result} from '../util/result';\nimport type {InterpolationType} from './definitions/interpolate';\nimport type {PropertyValueSpecification} from '../types';\nimport type {FormattedSection} from './types/formatted';\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../types/tile_id';\nimport type {FeatureDistanceData} from '../feature_filter/index';\nimport type {ConfigOptions} from '../types/config_options';\nimport type {ImageId} from './types/image_id';\n\nexport interface Feature {\n readonly type: 0 | 1 | 2 | 3 | 'Unknown' | 'Point' | 'LineString' | 'Polygon';\n readonly id?: string | number | null;\n readonly properties: Record;\n readonly patterns?: Record;\n readonly geometry?: Array>;\n}\n\nexport type FeatureState = {\n [_: string]: unknown;\n};\n\nexport interface GlobalProperties {\n zoom: number;\n pitch?: number;\n heatmapDensity?: number;\n lineProgress?: number;\n rasterValue?: number;\n rasterParticleSpeed?: number;\n skyRadialProgress?: number;\n readonly isSupportedScript?: (_: string) => boolean;\n accumulated?: Value;\n brightness?: number;\n worldview?: string;\n activeFloors?: Set;\n}\n\nexport class StyleExpression {\n expression: Expression;\n _scope?: string;\n _options?: ConfigOptions;\n _iconImageUseTheme?: string;\n _evaluator?: EvaluationContext;\n _defaultValue: Value;\n _warningHistory: {[key: string]: boolean};\n _enumValues?: {[_: string]: unknown};\n configDependencies: Set;\n isIndoorDependent: boolean;\n\n constructor(expression: Expression, propertySpec?: StylePropertySpecification, scope?: string, options?: ConfigOptions, iconImageUseTheme?: string) {\n this.expression = expression;\n this._warningHistory = {};\n this._scope = scope;\n this._options = options;\n this._iconImageUseTheme = iconImageUseTheme;\n this._evaluator = new EvaluationContext(scope, options, iconImageUseTheme);\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n this.configDependencies = expressionDependencies.getConfigDependencies(expression);\n this.isIndoorDependent = expressionDependencies.isIndoorDependent(expression);\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n featureTileCoord?: Point,\n featureDistanceData?: FeatureDistanceData,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n\n return this.expression.evaluate(this._evaluator);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n featureTileCoord?: Point,\n featureDistanceData?: FeatureDistanceData,\n iconImageUseTheme?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n if (!this._evaluator) {\n // `_evaluator` is explicitly omitted from serialization in src/util/web_worker_transfer.ts\n this._evaluator = new EvaluationContext(this._scope, this._options, this._iconImageUseTheme);\n }\n\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n this._evaluator.iconImageUseTheme = iconImageUseTheme || null;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\n if (val === null || val === undefined || (typeof val === 'number' && val !== val)) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError(`Expected value to be one of ${Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ')}, but found ${JSON.stringify(val)} instead.`);\n }\n return val;\n } catch (e) {\n const error = e as Error;\n if (!this._warningHistory[error.message]) {\n this._warningHistory[error.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(`Failed to evaluate expression \"${JSON.stringify(this.expression.serialize())}\". ${error.message}`);\n }\n }\n return this._defaultValue;\n }\n }\n}\n\nexport function isExpression(expression: unknown): boolean {\n return Array.isArray(expression) && expression.length > 0 &&\n typeof expression[0] === 'string' && expression[0] in definitions;\n}\n\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nexport function createExpression(\n expression: unknown,\n propertySpec?: StylePropertySpecification | null,\n scope?: string | null,\n options?: ConfigOptions | null,\n iconImageUseTheme?: string | null\n): Result> {\n const parser = new ParsingContext(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined, undefined, undefined, scope, options, iconImageUseTheme);\n\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined,\n propertySpec && propertySpec.type === 'string' ? {typeAnnotation: 'coerce'} : undefined);\n\n if (!parsed) {\n assert(parser.errors.length > 0);\n return error(parser.errors);\n }\n\n return success(new StyleExpression(parsed, propertySpec, scope, options, iconImageUseTheme));\n}\n\nexport class ZoomConstantExpression {\n kind: Kind;\n isStateDependent: boolean;\n configDependencies: Set;\n isIndoorDependent: boolean;\n _styleExpression: StyleExpression;\n isLightConstant: boolean | null | undefined;\n isLineProgressConstant: boolean | null | undefined;\n\n constructor(kind: Kind, expression: StyleExpression, isLightConstant?: boolean | null, isLineProgressConstant?: boolean | null) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isLightConstant = isLightConstant;\n this.isLineProgressConstant = isLineProgressConstant;\n this.isStateDependent = kind !== ('constant' as EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.configDependencies = expressionDependencies.getConfigDependencies(expression.expression);\n this.isIndoorDependent = expressionDependencies.isIndoorDependent(expression.expression);\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n iconImageUseTheme?: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection, undefined, undefined, iconImageUseTheme);\n }\n}\n\nexport class ZoomDependentExpression {\n kind: Kind;\n zoomStops: Array;\n isStateDependent: boolean;\n isIndoorDependent: boolean;\n isLightConstant: boolean | null | undefined;\n isLineProgressConstant: boolean | null | undefined;\n configDependencies: Set;\n\n _styleExpression: StyleExpression;\n interpolationType: InterpolationType | null | undefined;\n\n constructor(kind: Kind, expression: StyleExpression, zoomStops: Array, interpolationType?: InterpolationType, isLightConstant?: boolean | null, isLineProgressConstant?: boolean | null) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== ('camera' as EvaluationKind) && !isConstant.isStateConstant(expression.expression);\n this.isIndoorDependent = expressionDependencies.isIndoorDependent(expression.expression);\n this.isLightConstant = isLightConstant;\n this.isLineProgressConstant = isLineProgressConstant;\n this.configDependencies = expressionDependencies.getConfigDependencies(expression.expression);\n this.interpolationType = interpolationType;\n }\n\n evaluateWithoutErrorHandling(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n evaluate(\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): any {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n\n interpolationFactor(input: number, lower: number, upper: number): number {\n if (this.interpolationType) {\n return Interpolate.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\n\nexport type ConstantExpression = {\n kind: 'constant';\n configDependencies: Set;\n isIndoorDependent: boolean;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n iconImageUseTheme?: string\n ) => T;\n};\n\nexport type SourceExpression = {\n kind: 'source';\n isStateDependent: boolean;\n isIndoorDependent: boolean;\n isLightConstant: boolean | null | undefined;\n isLineProgressConstant: boolean | null | undefined;\n configDependencies: Set;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n ) => T;\n};\n\nexport type CameraExpression = {\n kind: 'camera';\n isStateDependent: boolean;\n isIndoorDependent: boolean;\n configDependencies: Set;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n ) => T;\n readonly interpolationFactor: (input: number, lower: number, upper: number) => number;\n zoomStops: Array;\n interpolationType: InterpolationType | null | undefined;\n};\n\nexport interface CompositeExpression {\n kind: 'composite';\n isStateDependent: boolean;\n isIndoorDependent: boolean;\n isLightConstant: boolean | null | undefined;\n isLineProgressConstant: boolean | null | undefined;\n configDependencies: Set;\n readonly evaluate: (\n globals: GlobalProperties,\n feature?: Feature,\n featureState?: FeatureState,\n canonical?: CanonicalTileID,\n availableImages?: ImageId[],\n formattedSection?: FormattedSection,\n iconImageUseTheme?: string\n ) => T;\n readonly interpolationFactor: (input: number, lower: number, upper: number) => number;\n zoomStops: Array;\n interpolationType: InterpolationType | null | undefined;\n}\n\nexport type StylePropertyExpression = ConstantExpression | SourceExpression | CameraExpression | CompositeExpression;\n\nexport function createPropertyExpression(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expression: any,\n propertySpec: StylePropertySpecification,\n scope?: string | null,\n options?: ConfigOptions | null,\n iconImageUseTheme?: string | null\n): Result> {\n expression = createExpression(expression, propertySpec, scope, options, iconImageUseTheme);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (expression.result === 'error') {\n return expression as Result>;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const parsed = expression.value.expression;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const isFeatureConstant = isConstant.isFeatureConstant(parsed);\n if (!isFeatureConstant && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError('', 'data expressions not supported')]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const isZoomConstant = isConstant.isGlobalPropertyConstant(parsed, ['zoom', 'pitch', 'distance-from-center']);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError('', 'zoom expressions not supported')]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const isLightConstant = isConstant.isGlobalPropertyConstant(parsed, ['measure-light']);\n if (!isLightConstant && !supportsLightExpression(propertySpec)) {\n return error([new ParsingError('', 'measure-light expression not supported')]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const isLineProgressConstant = isConstant.isGlobalPropertyConstant(parsed, ['line-progress']);\n if (!isLineProgressConstant && !supportsLineProgressExpression(propertySpec)) {\n return error([new ParsingError('', 'line-progress expression not supported')]);\n }\n\n const canRelaxZoomRestriction = propertySpec.expression && propertySpec.expression.relaxZoomRestriction;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant && !canRelaxZoomRestriction) {\n return error([new ParsingError('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression, or in the properties of atmosphere.')]);\n } else if (zoomCurve instanceof ParsingError) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n\n if (!zoomCurve) {\n return success((isFeatureConstant && isLineProgressConstant) ?\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n (new ZoomConstantExpression('constant', expression.value, isLightConstant, isLineProgressConstant) as ConstantExpression) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n (new ZoomConstantExpression('source', expression.value, isLightConstant, isLineProgressConstant) as SourceExpression));\n }\n\n const interpolationType = zoomCurve instanceof Interpolate ? zoomCurve.interpolation : undefined;\n\n return success((isFeatureConstant && isLineProgressConstant) ?\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n (new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant) as CameraExpression) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n (new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType, isLightConstant, isLineProgressConstant) as CompositeExpression));\n}\n\n// serialization wrapper for old-style stop functions normalized to the\n// expression interface\nexport class StylePropertyFunction {\n _parameters: PropertyValueSpecification;\n _specification: StylePropertySpecification;\n\n kind: EvaluationKind;\n evaluate: (globals: GlobalProperties, feature?: Feature) => T;\n interpolationFactor: (input: number, lower: number, upper: number) => number | null | undefined;\n zoomStops: Array | null | undefined;\n\n constructor(parameters: PropertyValueSpecification, specification: StylePropertySpecification) {\n this._parameters = parameters;\n this._specification = specification;\n Object.assign(this, createFunction(this._parameters, this._specification));\n }\n\n static deserialize(\n serialized: {\n _parameters: PropertyValueSpecification;\n _specification: StylePropertySpecification;\n },\n ): StylePropertyFunction {\n return new StylePropertyFunction(serialized._parameters, serialized._specification);\n }\n\n static serialize(input: StylePropertyFunction): {\n _parameters: PropertyValueSpecification;\n _specification: StylePropertySpecification;\n } {\n return {\n _parameters: input._parameters,\n _specification: input._specification\n };\n }\n}\n\nexport function normalizePropertyExpression(\n value: PropertyValueSpecification,\n specification: StylePropertySpecification,\n scope?: string | null,\n options?: ConfigOptions | null,\n iconImageUseTheme?: string | null\n): StylePropertyExpression {\n if (isFunction(value)) {\n return new StylePropertyFunction(value, specification) as unknown as StylePropertyExpression;\n\n } else if (isExpression(value) || (Array.isArray(value) && value.length > 0)) {\n const expression = createPropertyExpression(value, specification, scope, options, iconImageUseTheme);\n if (expression.result === 'error') {\n // this should have been caught in validation\n throw new Error(expression.value.map(err => `${err.key}: ${err.message}`).join(', '));\n }\n return expression.value;\n\n } else {\n let constant = value;\n if (typeof value === 'string' && specification.type === 'color') {\n constant = Color.parse(value) as PropertyValueSpecification;\n }\n return {\n kind: 'constant',\n configDependencies: new Set(),\n isIndoorDependent: false,\n evaluate: () => constant\n } as ConstantExpression;\n }\n}\n\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression: Expression): Step | Interpolate | ParsingError | null {\n let result: Step | Interpolate | ParsingError | null = null;\n if (expression instanceof Let) {\n result = findZoomCurve(expression.result);\n\n } else if (expression instanceof Coalesce) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n\n } else if ((expression instanceof Step || expression instanceof Interpolate) &&\n expression.input instanceof CompoundExpression &&\n expression.input.name === 'zoom') {\n\n result = expression;\n }\n\n if (result instanceof ParsingError) {\n return result;\n }\n\n expression.eachChild((child) => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError) {\n result = childResult;\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n\n return result;\n}\n\nfunction getExpectedType(spec: StylePropertySpecification): Type {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n\n if (spec.type === 'array') {\n return array(types[spec.value] || ValueType, spec.length);\n }\n\n return types[spec.type];\n}\n\nfunction getDefaultValue(spec: StylePropertySpecification): Value {\n if (spec.type === 'color' && (isFunction(spec.default) || Array.isArray(spec.default))) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n","import assert from 'assert';\n\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {\n FunctionSpecification,\n PropertyFunctionStop,\n ZoomAndPropertyFunctionStop,\n ExpressionSpecification,\n} from '../types';\n\nfunction convertLiteral(value: unknown) {\n return typeof value === 'object' ? ['literal', value] : value;\n}\n\nexport default function convertFunction(parameters: FunctionSpecification, propertySpec: StylePropertySpecification): ExpressionSpecification {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n\n stops = stops.map((stop) => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [stop[0], convertTokenString(stop[1])];\n }\n return [stop[0], convertLiteral(stop[1])];\n }) as FunctionSpecification['stops'];\n\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops as Array>);\n } else if (zoomDependent) {\n\n return convertZoomFunction(parameters, propertySpec, stops as PropertyFunctionStop[]);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops as PropertyFunctionStop[]);\n }\n}\n\nfunction convertIdentityFunction(parameters: FunctionSpecification, propertySpec: StylePropertySpecification): ExpressionSpecification {\n const get: ExpressionSpecification = ['get', parameters.property];\n\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? ['string', get] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression: ExpressionSpecification = [propertySpec.type === 'color' ? 'to-color' : propertySpec.type, get, convertLiteral(parameters.default)];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\n\nfunction getInterpolateOperator(parameters: FunctionSpecification) {\n switch (parameters.colorSpace) {\n case 'hcl': return 'interpolate-hcl';\n case 'lab': return 'interpolate-lab';\n default: return 'interpolate';\n }\n}\n\nfunction convertZoomAndPropertyFunction(\n parameters: FunctionSpecification,\n propertySpec: StylePropertySpecification,\n stops: Array>,\n): ExpressionSpecification {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const featureFunctionParameters: Record = {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const featureFunctionStops: Record = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default,\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n featureFunctionStops[zoom].push([stop[0].value, stop[1]]);\n }\n\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({} as FunctionSpecification, propertySpec);\n if (functionType === 'exponential') {\n const expression: ExpressionSpecification = [getInterpolateOperator(parameters), ['linear'], ['zoom']];\n\n for (const z of zoomStops) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n\n return expression;\n } else {\n const expression: ExpressionSpecification = ['step', ['zoom']];\n\n for (const z of zoomStops) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n }\n}\n\nfunction coalesce(a: unknown, b: unknown) {\n if (a !== undefined) return a;\n if (b !== undefined) return b;\n}\n\nfunction getFallback(parameters: FunctionSpecification, propertySpec: StylePropertySpecification) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\n\nfunction convertPropertyFunction(\n parameters: FunctionSpecification,\n propertySpec: StylePropertySpecification,\n stops: Array>,\n): ExpressionSpecification {\n const type = getFunctionType(parameters, propertySpec);\n const get: ExpressionSpecification = ['get', parameters.property];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n assert(parameters.stops.length > 0 && parameters.stops.length <= 2);\n const expression: ExpressionSpecification = ['case'];\n for (const stop of stops) {\n expression.push(['==', get, stop[0]], stop[1]);\n }\n\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'categorical') {\n const expression: ExpressionSpecification = ['match', get];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'interval') {\n const expression: ExpressionSpecification = ['step', ['number', get]];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression: ExpressionSpecification = [\n getInterpolateOperator(parameters),\n base === 1 ? [\"linear\"] : [\"exponential\", base],\n [\"number\", get]\n ];\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n ['==', ['typeof', get], 'number'],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${type}`);\n }\n}\n\nfunction convertZoomFunction(parameters: FunctionSpecification, propertySpec: StylePropertySpecification, stops: Array>, input: Array = ['zoom']): ExpressionSpecification {\n const type = getFunctionType(parameters, propertySpec);\n let expression: ExpressionSpecification;\n let isStep = false;\n if (type === 'interval') {\n expression = ['step', input];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [getInterpolateOperator(parameters), base === 1 ? [\"linear\"] : [\"exponential\", base], input];\n\n } else {\n throw new Error(`Unknown zoom function type \"${type}\"`);\n }\n\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n\n fixupDegenerateStepCurve(expression);\n\n return expression;\n}\n\nfunction fixupDegenerateStepCurve(expression: ExpressionSpecification) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\n\nfunction appendStopPair(curve: ExpressionSpecification, input: unknown, output: unknown, isStep: boolean) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\n\nfunction getFunctionType(parameters: FunctionSpecification, propertySpec: StylePropertySpecification): string {\n if (parameters.type) {\n return parameters.type;\n } else {\n assert(propertySpec.expression);\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n}\n\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nexport function convertTokenString(s: string): string | ExpressionSpecification {\n const result: ExpressionSpecification = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0) result.push(literal);\n result.push(['get', match[1]]);\n }\n\n if (result.length === 1) {\n return s;\n }\n\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return ['to-string', result[1]];\n }\n\n return result;\n}\n\n","// Turn jsonlint-lines-primitives objects into primitive objects\nexport function unbundle(value: unknown): unknown {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\n\nexport function deepUnbundle(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue: {\n [key: string]: unknown;\n } = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n\n return unbundle(value);\n}\n","import latest from '../reference/latest';\nimport {deepUnbundle} from '../util/unbundle_jsonlint';\nimport {createExpression} from '../expression/index';\nimport {isFeatureConstant} from '../expression/is_constant';\nimport assert from 'assert';\n\nimport type Point from '@mapbox/point-geometry';\nimport type {CanonicalTileID} from '../types/tile_id';\nimport type {GlobalProperties, Feature} from '../expression/index';\nimport type {FilterSpecification, ExpressionSpecification} from '../types';\nimport type {ConfigOptions} from '../types/config_options';\n\nexport type FeatureDistanceData = {\n bearing: [number, number];\n center: [number, number];\n scale: number;\n};\nexport type FilterExpression = (\n globalProperties: GlobalProperties,\n feature: Feature,\n canonical?: CanonicalTileID,\n featureTileCoord?: Point,\n featureDistanceData?: FeatureDistanceData,\n) => boolean;\n\nexport type FeatureFilter = {\n filter: FilterExpression;\n dynamicFilter?: FilterExpression;\n needGeometry: boolean;\n needFeature: boolean;\n};\n\nexport default createFilter;\nexport {isExpressionFilter, isDynamicFilter, extractStaticFilter};\n\nfunction isExpressionFilter(filter: unknown): boolean {\n if (filter === true || filter === false) {\n return true;\n }\n\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n\n case '!in':\n case '!has':\n case 'none':\n return false;\n\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n\n default:\n return true;\n }\n}\n\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter?: FilterSpecification, scope: string = \"\", options: ConfigOptions | null = null, layerType: string = 'fill'): FeatureFilter {\n if (filter === null || filter === undefined) {\n return {filter: () => true, needGeometry: false, needFeature: false};\n }\n\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter) as ExpressionSpecification;\n }\n\n const filterExp = (filter as string[] | string | boolean);\n\n let staticFilter = true;\n try {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n staticFilter = extractStaticFilter(filterExp);\n } catch (e) {\n console.warn(\n`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(filterExp, null, 2)}\n `);\n }\n\n // Compile the static component of the filter\n let filterFunc = null;\n let filterSpec = null;\n if (layerType !== 'background' && layerType !== 'sky' && layerType !== 'slot') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n filterSpec = latest[`filter_${layerType}`];\n assert(filterSpec);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const compiledStaticFilter = createExpression(staticFilter, filterSpec, scope, options);\n\n if (compiledStaticFilter.result === 'error') {\n throw new Error(compiledStaticFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n filterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n }\n }\n\n // If the static component is not equal to the entire filter then we have a dynamic component\n // Compile the dynamic component separately\n let dynamicFilterFunc = null;\n let needFeature = null;\n if (staticFilter !== filterExp) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const compiledDynamicFilter = createExpression(filterExp, filterSpec, scope, options);\n\n if (compiledDynamicFilter.result === 'error') {\n throw new Error(compiledDynamicFilter.value.map(err => `${err.key}: ${err.message}`).join(', '));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n dynamicFilterFunc = (globalProperties: GlobalProperties, feature: Feature, canonical?: CanonicalTileID, featureTileCoord?: Point, featureDistanceData?: FeatureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n }\n }\n\n filterFunc = (filterFunc as FilterExpression);\n const needGeometry = geometryNeeded(staticFilter);\n\n return {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n filter: filterFunc,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n needGeometry,\n needFeature: !!needFeature\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractStaticFilter(filter: any): any {\n if (!isDynamicFilter(filter)) {\n return filter;\n }\n\n // Shallow copy so we can replace expressions in-place\n let result = deepUnbundle(filter);\n\n // 1. Union branches\n unionDynamicBranches(result);\n\n // 2. Collapse dynamic conditions to `true`\n result = collapseDynamicBooleanExpressions(result);\n\n return result;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction collapseDynamicBooleanExpressions(expression: any): any {\n if (!Array.isArray(expression)) {\n return expression;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const collapsed = collapsedExpression(expression);\n if (collapsed === true) {\n return collapsed;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n return collapsed.map((subExpression) => collapseDynamicBooleanExpressions(subExpression));\n }\n}\n\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array} filter the filter expression mutated in-place.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction unionDynamicBranches(filter: any) {\n let isBranchingDynamically = false;\n const branches = [];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (filter[0] === 'case') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = 1; i < filter.length - 1; i += 2) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n branches.push(filter[i + 1]);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n branches.push(filter[filter.length - 1]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (filter[0] === 'match') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = 2; i < filter.length - 1; i += 2) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n branches.push(filter[i + 1]);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n branches.push(filter[filter.length - 1]);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (filter[0] === 'step') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = 1; i < filter.length - 1; i += 2) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n branches.push(filter[i + 1]);\n }\n }\n\n if (isBranchingDynamically) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n filter.length = 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n filter.push('any', ...branches);\n }\n\n // traverse and recurse into children\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = 1; i < filter.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n unionDynamicBranches(filter[i]);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isDynamicFilter(filter: any): boolean {\n // Base Cases\n if (!Array.isArray(filter)) {\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (isRootExpressionDynamic(filter[0])) {\n return true;\n }\n\n for (let i = 1; i < filter.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const child = filter[i];\n if (isDynamicFilter(child)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isRootExpressionDynamic(expression: string): boolean {\n return expression === 'pitch' ||\n expression === 'distance-from-center';\n}\n\nconst dynamicConditionExpressions = new Set([\n 'in',\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'to-boolean'\n]);\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction collapsedExpression(expression: any): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n if (dynamicConditionExpressions.has(expression[0])) {\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (let i = 1; i < expression.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const param = expression[i];\n if (isDynamicFilter(param)) {\n return true;\n }\n }\n }\n return expression;\n}\n\n// Comparison function to sort numbers and strings\nfunction compare(a: number, b: number) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction geometryNeeded(filter: Array | boolean) {\n if (!Array.isArray(filter)) return false;\n if (filter[0] === 'within' || filter[0] === 'distance') return true;\n for (let index = 1; index < filter.length; index++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (geometryNeeded(filter[index])) return true;\n }\n return false;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction convertFilter(filter?: Array | null): unknown {\n if (!filter) return true;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n const converted =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === '==' ? convertComparisonOp(filter[1], filter[2], '==') :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) :\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === '>=' ? convertComparisonOp(filter[1], filter[2], op) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === 'any' ? convertDisjunctionOp(filter.slice(1)) :\n // @ts-expect-error - TS2769 - No overload matches this call.\n op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) :\n // @ts-expect-error - TS2769 - No overload matches this call.\n op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === 'in' ? convertInOp(filter[1], filter.slice(2)) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === 'has' ? convertHasOp(filter[1]) :\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n op === '!has' ? convertNegation(convertHasOp(filter[1])) :\n true;\n return converted;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction convertComparisonOp(property: string, value: any, op: string) {\n switch (property) {\n case '$type':\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [`filter-type-${op}`, value];\n case '$id':\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [`filter-id-${op}`, value];\n default:\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return [`filter-${op}`, property, value];\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction convertDisjunctionOp(filters: Array>) {\n// @ts-expect-error - TS2769 - No overload matches this call.\n return ['any'].concat(filters.map(convertFilter));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction convertInOp(property: string, values: Array) {\n if (values.length === 0) { return false; }\n switch (property) {\n case '$type':\n return [`filter-type-in`, ['literal', values]];\n case '$id':\n return [`filter-id-in`, ['literal', values]];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return ['filter-in-large', property, ['literal', values.sort(compare)]];\n } else {\n return ['filter-in-small', property, ['literal', values]];\n }\n }\n}\n\nfunction convertHasOp(property: string) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [`filter-has`, property];\n }\n}\n\nfunction convertNegation(filter: unknown) {\n return ['!', filter];\n}\n","import {isExpressionFilter} from './index';\n\nimport type {FilterSpecification, ExpressionSpecification} from '../types';\n\ntype ExpectedTypes = {\n [_: string]: 'string' | 'number' | 'boolean';\n};\n\n/**\n * Convert the given legacy filter to (the JSON representation of) an\n * equivalent expression\n * @private\n */\nexport default function convertFilter(filter: FilterSpecification): unknown {\n return _convertFilter(filter, {});\n}\n\n/*\n * Convert the given filter to an expression, storing the expected types for\n * any feature properties referenced in expectedTypes.\n *\n * These expected types are needed in order to construct preflight type checks\n * needed for handling 'any' filters. A preflight type check is necessary in\n * order to mimic legacy filters' semantics around expected type mismatches.\n * For example, consider the legacy filter:\n *\n * [\"any\", [\"all\", [\">\", \"y\", 0], [\">\", \"y\", 0]], [\">\", \"x\", 0]]\n *\n * Naively, we might convert this to the expression:\n *\n * [\"any\", [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]], [\">\", [\"get\", \"x\"], 0]]\n *\n * But if we tried to evaluate this against, say `{x: 1, y: null, z: 0}`, the\n * [\">\", [\"get\", \"y\"], 0] would cause an evaluation error, leading to the\n * entire filter returning false. Legacy filter semantics, though, ask for\n * [\">\", \"y\", 0] to simply return `false` when `y` is of the wrong type,\n * allowing the subsequent terms of the outer \"any\" expression to be evaluated\n * (resulting, in this case, in a `true` value, because x > 0).\n *\n * We account for this by inserting a preflight type-checking expression before\n * each \"any\" term, allowing us to avoid evaluating the actual converted filter\n * if any type mismatches would cause it to produce an evalaution error:\n *\n * [\"any\",\n * [\"case\",\n * [\"all\", [\"==\", [\"typeof\", [\"get\", \"y\"]], \"number\"], [\"==\", [\"typeof\", [\"get\", \"z\"], \"number]],\n * [\"all\", [\">\", [\"get\", \"y\"], 0], [\">\", [\"get\", \"z\"], 0]],\n * false\n * ],\n * [\"case\",\n * [\"==\", [\"typeof\", [\"get\", \"x\"], \"number\"]],\n * [\">\", [\"get\", \"x\"], 0],\n * false\n * ]\n * ]\n *\n * An alternative, possibly more direct approach would be to use type checks\n * in the conversion of each comparison operator, so that the converted version\n * of each individual ==, >=, etc. would mimic the legacy filter semantics. The\n * downside of this approach is that it can lead to many more type checks than\n * would otherwise be necessary: outside the context of an \"any\" expression,\n * bailing out due to a runtime type error (expression semantics) and returning\n * false (legacy filter semantics) are equivalent: they cause the filter to\n * produce a `false` result.\n */\nfunction _convertFilter(filter: FilterSpecification, expectedTypes: ExpectedTypes): unknown {\n if (isExpressionFilter(filter)) { return filter; }\n\n if (!filter) return true;\n const op = filter[0];\n if (filter.length <= 1) return (op !== 'any');\n\n let converted: unknown;\n\n if (\n op === '==' ||\n op === '!=' ||\n op === '<' ||\n op === '>' ||\n op === '<=' ||\n op === '>='\n ) {\n const [, property, value] = filter;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n converted = convertComparisonOp(property, value, op, expectedTypes);\n } else if (op === 'any') {\n const children = filter.slice(1).map(f => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const types: Record = {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const child = _convertFilter(f, types);\n\n const typechecks = runtimeTypeChecks(types);\n return typechecks === true ? child : ['case', typechecks, child, false];\n }) as ExpressionSpecification;\n return ['any'].concat(children);\n } else if (op === 'all') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n const children: any[] = (filter).slice(1).map(f => _convertFilter(f, expectedTypes));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return children.length > 1 ? ['all'].concat(children) : [].concat(...children);\n } else if (op === 'none') {\n return ['!', _convertFilter(['any'].concat((filter).slice(1)), {})];\n } else if (op === 'in') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n converted = convertInOp((filter[1]), filter.slice(2));\n } else if (op === '!in') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n converted = convertInOp((filter[1]), filter.slice(2), true);\n } else if (op === 'has') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n converted = convertHasOp((filter[1]));\n } else if (op === '!has') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n converted = ['!', convertHasOp((filter[1]))];\n } else {\n converted = true;\n }\n\n return converted;\n}\n\n// Given a set of feature properties and an expected type for each one,\n// construct an boolean expression that tests whether each property has the\n// right type.\n// E.g.: for {name: 'string', population: 'number'}, return\n// [ 'all',\n// ['==', ['typeof', ['get', 'name'], 'string']],\n// ['==', ['typeof', ['get', 'population'], 'number]]\n// ]\nfunction runtimeTypeChecks(expectedTypes: ExpectedTypes): true | unknown[] {\n const conditions: unknown[] = [];\n for (const property in expectedTypes) {\n const get = property === '$id' ? ['id'] : ['get', property];\n conditions.push(['==', ['typeof', get], expectedTypes[property]]);\n }\n if (conditions.length === 0) return true;\n if (conditions.length === 1) return conditions[0] as unknown[];\n return (['all'] as unknown[]).concat(conditions);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction convertComparisonOp(property: string, value: any, op: string, expectedTypes?: ExpectedTypes | null): unknown {\n let get: unknown[];\n if (property === '$type') {\n return [op, ['geometry-type'], value];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n if (expectedTypes && value !== null) {\n const type = typeof value as 'string' | 'number' | 'boolean';\n expectedTypes[property] = type;\n }\n\n if (op === '==' && property !== '$id' && value === null) {\n return [\n 'all',\n ['has', property], // missing property != null for legacy filters\n ['==', get, null]\n ];\n } else if (op === '!=' && property !== '$id' && value === null) {\n return [\n 'any',\n ['!', ['has', property]], // missing property != null for legacy filters\n ['!=', get, null]\n ];\n }\n\n return [op, get, value];\n}\n\nfunction convertInOp(property: string, values: Array, negate: boolean = false) {\n if (values.length === 0) return negate;\n\n let get: string[];\n if (property === '$type') {\n get = ['geometry-type'];\n } else if (property === '$id') {\n get = ['id'];\n } else {\n get = ['get', property];\n }\n\n // Determine if the list of values to be searched is homogenously typed.\n // If so (and if the type is string or number), then we can use a\n // [match, input, [...values], true, false] construction rather than a\n // bunch of `==` tests.\n let uniformTypes = true;\n const type = typeof values[0];\n for (const value of values) {\n if (typeof value !== type) {\n uniformTypes = false;\n break;\n }\n }\n\n if (uniformTypes && (type === 'string' || type === 'number')) {\n // Match expressions must have unique values.\n const uniqueValues = values.sort().filter((v, i) => i === 0 || values[i - 1] !== v);\n return ['match', get, uniqueValues, !negate, negate];\n }\n\n return [negate ? 'all' : 'any'].concat(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n values.map(v => [negate ? '!=' : '==', get, v]) as any[]\n );\n}\n\nfunction convertHasOp(property: string) {\n if (property === '$type') {\n return true;\n } else if (property === '$id') {\n return ['!=', ['id'], null];\n } else {\n return ['has', property];\n }\n}\n","import {eachLayer, eachProperty} from '../visit';\nimport {isExpression} from '../expression/index';\nimport convertFunction, {convertTokenString} from '../function/convert';\nimport convertFilter from '../feature_filter/convert';\n\nimport type {StyleSpecification, FilterSpecification, FunctionSpecification} from '../types';\n\n/**\n * Migrate the given style object in place to use expressions. Specifically,\n * this will convert (a) \"stop\" functions, and (b) legacy filters to their\n * expression equivalents.\n */\nexport default function (style: StyleSpecification): StyleSpecification {\n const converted = [];\n\n eachLayer(style, (layer) => {\n if (layer.filter) {\n layer.filter = convertFilter(layer.filter) as FilterSpecification;\n }\n });\n\n eachProperty(style, {paint: true, layout: true}, ({path, value, reference, set}) => {\n if (isExpression(value)) return;\n if (typeof value === 'object' && !Array.isArray(value)) {\n set(convertFunction(value as FunctionSpecification, reference));\n converted.push(path.join('.'));\n } else if (reference.tokens && typeof value === 'string') {\n set(convertTokenString(value));\n }\n });\n\n return style;\n}\n","import migrateToV8 from './migrate/v8';\nimport migrateToExpressions from './migrate/expressions';\n\nimport type {StyleSpecification} from './types';\n\n/**\n * Migrate a Mapbox GL Style to the latest version.\n *\n * @private\n * @alias migrate\n * @param {object} style a Mapbox GL Style\n * @returns {Object} a migrated style\n * @example\n * var fs = require('fs');\n * var migrate = require('mapbox-gl-style-spec').migrate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * fs.writeFileSync('./style.json', JSON.stringify(migrate(style)));\n */\nexport default function (style: {version: 7} | StyleSpecification): StyleSpecification {\n let migrated = false;\n\n if (style.version === 7) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n style = migrateToV8(style);\n migrated = true;\n }\n\n if (style.version === 8) {\n style = migrateToExpressions(style);\n migrated = true;\n }\n\n if (!migrated) {\n throw new Error(`Cannot migrate from ${style.version}`);\n }\n\n return style as StyleSpecification;\n}\n","import type {StyleSpecification} from './types';\n\nexport default function (style: StyleSpecification): StyleSpecification {\n const styleIDs: string[] = [];\n const sourceIDs: string[] = [];\n const compositedSourceLayers: string[] = [];\n\n for (const id in style.sources) {\n const source = style.sources[id];\n\n if (source.type !== \"vector\")\n continue;\n\n const match = /^mapbox:\\/\\/(.*)/.exec(source.url);\n if (!match)\n continue;\n\n styleIDs.push(id);\n sourceIDs.push(match[1]);\n }\n\n if (styleIDs.length < 2)\n return style;\n\n styleIDs.forEach((id) => {\n delete style.sources[id];\n });\n\n const compositeID = sourceIDs.join(\",\");\n\n style.sources[compositeID] = {\n \"type\": \"vector\",\n \"url\": `mapbox://${compositeID}`\n };\n\n style.layers.forEach((layer) => {\n if (styleIDs.indexOf(layer.source) >= 0) {\n layer.source = compositeID;\n\n if ('source-layer' in layer) {\n if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {\n throw new Error('Conflicting source layer names');\n } else {\n compositedSourceLayers.push(layer['source-layer']);\n }\n }\n }\n });\n\n return style;\n}\n","export default ['type', 'source', 'source-layer', 'minzoom', 'maxzoom', 'filter', 'layout'];\n","import refProperties from './util/ref_properties';\n\nimport type {LayerSpecification} from './types';\n\nfunction deref(layer: LayerSpecification, parent: LayerSpecification): LayerSpecification {\n const result = {} as LayerSpecification;\n\n for (const k in layer) {\n if (k !== 'ref') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result[k] = layer[k];\n }\n }\n\n refProperties.forEach((k) => {\n if (k in parent) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n result[k] = parent[k];\n }\n });\n\n return result;\n}\n\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array} layers\n * @returns {Array}\n */\nexport default function derefLayers(layers: Array): Array {\n layers = layers.slice();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const map: Record = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[(layers[i] as LayerSpecification & {ref: string}).ref]);\n }\n }\n\n return layers;\n}\n","/**\n * Deeply compares two object literals.\n *\n * @private\n */\nfunction deepEqual(a?: unknown, b?: unknown): boolean {\n if (Array.isArray(a)) {\n if (!Array.isArray(b) || a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!deepEqual(a[i], b[i])) return false;\n }\n return true;\n }\n if (typeof a === 'object' && a !== null && b !== null) {\n if (!(typeof b === 'object')) return false;\n const keys = Object.keys(a);\n if (keys.length !== Object.keys(b).length) return false;\n for (const key in a) {\n if (!deepEqual(a[key], b[key])) return false;\n }\n return true;\n }\n return a === b;\n}\n\nexport default deepEqual;\n","import isEqual from './util/deep_equal';\n\nimport type {StyleSpecification, ImportSpecification, SourceSpecification, LayerSpecification, IconsetsSpecification} from './types';\n\ntype Sources = {\n [key: string]: SourceSpecification;\n};\n\ntype Command = {\n command: string;\n args: unknown[];\n};\n\nexport const operations = {\n\n /*\n * { command: 'setStyle', args: [stylesheet] }\n */\n setStyle: 'setStyle',\n\n /*\n * { command: 'addLayer', args: [layer, 'beforeLayerId'] }\n */\n addLayer: 'addLayer',\n\n /*\n * { command: 'removeLayer', args: ['layerId'] }\n */\n removeLayer: 'removeLayer',\n\n /*\n * { command: 'setPaintProperty', args: ['layerId', 'prop', value] }\n */\n setPaintProperty: 'setPaintProperty',\n\n /*\n * { command: 'setLayoutProperty', args: ['layerId', 'prop', value] }\n */\n setLayoutProperty: 'setLayoutProperty',\n\n /*\n * { command: 'setSlot', args: ['layerId', slot] }\n */\n setSlot: 'setSlot',\n\n /*\n * { command: 'setFilter', args: ['layerId', filter] }\n */\n setFilter: 'setFilter',\n\n /*\n * { command: 'addSource', args: ['sourceId', source] }\n */\n addSource: 'addSource',\n\n /*\n * { command: 'removeSource', args: ['sourceId'] }\n */\n removeSource: 'removeSource',\n\n /*\n * { command: 'setGeoJSONSourceData', args: ['sourceId', data] }\n */\n setGeoJSONSourceData: 'setGeoJSONSourceData',\n\n /*\n * { command: 'setLayerZoomRange', args: ['layerId', 0, 22] }\n */\n setLayerZoomRange: 'setLayerZoomRange',\n\n /*\n * { command: 'setLayerProperty', args: ['layerId', 'prop', value] }\n */\n setLayerProperty: 'setLayerProperty',\n\n /*\n * { command: 'setCenter', args: [[lon, lat]] }\n */\n setCenter: 'setCenter',\n\n /*\n * { command: 'setZoom', args: [zoom] }\n */\n setZoom: 'setZoom',\n\n /*\n * { command: 'setBearing', args: [bearing] }\n */\n setBearing: 'setBearing',\n\n /*\n * { command: 'setPitch', args: [pitch] }\n */\n setPitch: 'setPitch',\n\n /*\n * { command: 'setSprite', args: ['spriteUrl'] }\n */\n setSprite: 'setSprite',\n\n /*\n * { command: 'setGlyphs', args: ['glyphsUrl'] }\n */\n setGlyphs: 'setGlyphs',\n\n /*\n * { command: 'setTransition', args: [transition] }\n */\n setTransition: 'setTransition',\n\n /*\n * { command: 'setLighting', args: [lightProperties] }\n */\n setLight: 'setLight',\n\n /*\n * { command: 'setTerrain', args: [terrainProperties] }\n */\n setTerrain: 'setTerrain',\n\n /*\n * { command: 'setFog', args: [fogProperties] }\n */\n setFog: 'setFog',\n\n /*\n * { command: 'setSnow', args: [snowProperties] }\n */\n setSnow: 'setSnow',\n\n /*\n * { command: 'setRain', args: [rainProperties] }\n */\n setRain: 'setRain',\n\n /*\n * { command: 'setCamera', args: [cameraProperties] }\n */\n setCamera: 'setCamera',\n\n /*\n * { command: 'setLights', args: [{light-3d},...] }\n */\n setLights: 'setLights',\n\n /*\n * { command: 'setProjection', args: [projectionProperties] }\n */\n setProjection: 'setProjection',\n\n /*\n * { command: 'addImport', args: [import] }\n */\n addImport: 'addImport',\n\n /*\n * { command: 'removeImport', args: [importId] }\n */\n removeImport: 'removeImport',\n\n /**\n * { command: 'updateImport', args: [importId, importSpecification | styleUrl] }\n */\n updateImport: 'updateImport',\n\n /*\n * { command: 'addIconset', args: [iconsetId, IconsetSpecification] }\n */\n addIconset: 'addIconset',\n\n /*\n * { command: 'removeIconset', args: [iconsetId] }\n */\n removeIconset: 'removeIconset'\n} as const;\n\nfunction addSource(sourceId: string, after: Sources, commands: Array) {\n commands.push({command: operations.addSource, args: [sourceId, after[sourceId]]});\n}\n\nfunction removeSource(sourceId: string, commands: Array, sourcesRemoved: {\n [key: string]: true;\n}) {\n commands.push({command: operations.removeSource, args: [sourceId]});\n sourcesRemoved[sourceId] = true;\n}\n\nfunction updateSource(sourceId: string, after: Sources, commands: Array, sourcesRemoved: {\n [key: string]: true;\n}) {\n removeSource(sourceId, commands, sourcesRemoved);\n addSource(sourceId, after, commands);\n}\n\nfunction canUpdateGeoJSON(before: Sources, after: Sources, sourceId: string) {\n let prop;\n for (prop in before[sourceId]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before[sourceId].hasOwnProperty(prop)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n for (prop in after[sourceId]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after[sourceId].hasOwnProperty(prop)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (prop !== 'data' && !isEqual(before[sourceId][prop], after[sourceId][prop])) {\n return false;\n }\n }\n return true;\n}\n\nfunction diffSources(before: Sources, after: Sources, commands: Array, sourcesRemoved: {[key: string]: true}) {\n before = before || {};\n after = after || {};\n\n let sourceId;\n\n // look for sources to remove\n for (sourceId in before) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before.hasOwnProperty(sourceId)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after.hasOwnProperty(sourceId)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n removeSource(sourceId, commands, sourcesRemoved);\n }\n }\n\n // look for sources to add/update\n for (sourceId in after) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after.hasOwnProperty(sourceId)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const source = after[sourceId];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before.hasOwnProperty(sourceId)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n addSource(sourceId, after, commands);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (!isEqual(before[sourceId], source)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument\n if (before[sourceId].type === 'geojson' && source.type === 'geojson' && canUpdateGeoJSON(before, after, sourceId)) {\n commands.push({command: operations.setGeoJSONSourceData, args: [sourceId, source.data]});\n } else {\n // no update command, must remove then add\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n updateSource(sourceId, after, commands, sourcesRemoved);\n }\n }\n }\n}\n\nfunction diffLayerPropertyChanges(before: LayerSpecification['layout'], after: LayerSpecification['layout'], commands: Array, layerId: string, klass: string | null | undefined, command: string): void;\nfunction diffLayerPropertyChanges(before: LayerSpecification['paint'], after: LayerSpecification['paint'], commands: Array, layerId: string, klass: string | null | undefined, command: string): void;\nfunction diffLayerPropertyChanges(\n before: LayerSpecification['paint'] | LayerSpecification['layout'],\n after: LayerSpecification['paint'] | LayerSpecification['layout'],\n commands: Command[],\n layerId: string,\n klass: string | null | undefined,\n command: string\n) {\n before = before || {};\n after = after || {};\n\n let prop;\n\n for (prop in before) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before.hasOwnProperty(prop)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!isEqual(before[prop], after[prop])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n for (prop in after) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after.hasOwnProperty(prop) || before.hasOwnProperty(prop)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!isEqual(before[prop], after[prop])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command, args: [layerId, prop, after[prop], klass]});\n }\n }\n}\n\nfunction pluckId(item: T): string {\n return item.id;\n}\n\nfunction indexById(group: {[key: string]: T}, item: T): {[id: string]: T} {\n group[item.id] = item;\n return group;\n}\n\nfunction diffLayers(before: Array, after: Array, commands: Array) {\n before = before || [];\n after = after || [];\n\n // order of layers by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index of layer by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of layers as if they have been mutated\n const tracker = beforeOrder.slice();\n\n // layers that have been added do not need to be diffed\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const clean = Object.create(null);\n\n let i, d, layerId, beforeLayer: LayerSpecification, afterLayer: LayerSpecification, insertBeforeLayerId, prop;\n\n // remove layers\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n layerId = beforeOrder[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!afterIndex.hasOwnProperty(layerId)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.indexOf(layerId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder layers\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing layer\n layerId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === layerId) continue;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (beforeIndex.hasOwnProperty(layerId)) {\n // remove the layer before we insert at the correct position\n commands.push({command: operations.removeLayer, args: [layerId]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.lastIndexOf(layerId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add layer at correct position\n insertBeforeLayerId = tracker[tracker.length - i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command: operations.addLayer, args: [afterIndex[layerId], insertBeforeLayerId]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.length - i, 0, layerId);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n clean[layerId] = true;\n }\n\n // update layers\n for (i = 0; i < afterOrder.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n layerId = afterOrder[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n beforeLayer = beforeIndex[layerId];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n afterLayer = afterIndex[layerId];\n\n // no need to update if previously added (new or moved)\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (clean[layerId] || isEqual(beforeLayer, afterLayer)) continue;\n\n // If source, source-layer, or type have changes, then remove the layer\n // and add it back 'from scratch'.\n if (!isEqual(beforeLayer.source, afterLayer.source) || !isEqual(beforeLayer['source-layer'], afterLayer['source-layer']) || !isEqual(beforeLayer.type, afterLayer.type)) {\n commands.push({command: operations.removeLayer, args: [layerId]});\n // we add the layer back at the same position it was already in, so\n // there's no need to update the `tracker`\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n insertBeforeLayerId = tracker[tracker.lastIndexOf(layerId) + 1];\n commands.push({command: operations.addLayer, args: [afterLayer, insertBeforeLayerId]});\n continue;\n }\n\n // layout, paint, filter, minzoom, maxzoom\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n diffLayerPropertyChanges(beforeLayer.layout, afterLayer.layout, commands, layerId, null, operations.setLayoutProperty);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n diffLayerPropertyChanges(beforeLayer.paint, afterLayer.paint, commands, layerId, null, operations.setPaintProperty);\n if (!isEqual(beforeLayer.slot, afterLayer.slot)) {\n commands.push({command: operations.setSlot, args: [layerId, afterLayer.slot]});\n }\n if (!isEqual(beforeLayer.filter, afterLayer.filter)) {\n commands.push({command: operations.setFilter, args: [layerId, afterLayer.filter]});\n }\n if (!isEqual(beforeLayer.minzoom, afterLayer.minzoom) || !isEqual(beforeLayer.maxzoom, afterLayer.maxzoom)) {\n commands.push({command: operations.setLayerZoomRange, args: [layerId, afterLayer.minzoom, afterLayer.maxzoom]});\n }\n\n // handle all other layer props, including paint.*\n for (prop in beforeLayer) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom' || prop === 'slot') continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n if (prop.indexOf('paint.') === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n for (prop in afterLayer) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!afterLayer.hasOwnProperty(prop) || beforeLayer.hasOwnProperty(prop)) continue;\n if (prop === 'layout' || prop === 'paint' || prop === 'filter' ||\n prop === 'metadata' || prop === 'minzoom' || prop === 'maxzoom' || prop === 'slot') continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n if (prop.indexOf('paint.') === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n diffLayerPropertyChanges(beforeLayer[prop], afterLayer[prop], commands, layerId, prop.slice(6), operations.setPaintProperty);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (!isEqual(beforeLayer[prop], afterLayer[prop])) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command: operations.setLayerProperty, args: [layerId, prop, afterLayer[prop]]});\n }\n }\n }\n}\n\nexport function diffImports(before: Array | null | undefined = [], after: Array | null | undefined = [], commands: Array) {\n before = before || [];\n after = after || [];\n\n // order imports by id\n const beforeOrder = before.map(pluckId);\n const afterOrder = after.map(pluckId);\n\n // index imports by id\n const beforeIndex = before.reduce(indexById, {});\n const afterIndex = after.reduce(indexById, {});\n\n // track order of imports as if they have been mutated\n const tracker = beforeOrder.slice();\n\n let i, d, importId, insertBefore;\n\n // remove imports\n for (i = 0, d = 0; i < beforeOrder.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n importId = beforeOrder[i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!afterIndex.hasOwnProperty(importId)) {\n commands.push({command: operations.removeImport, args: [importId]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.indexOf(importId, d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n }\n\n // add/reorder imports\n for (i = 0, d = 0; i < afterOrder.length; i++) {\n // work backwards as insert is before an existing import\n importId = afterOrder[afterOrder.length - 1 - i];\n\n if (tracker[tracker.length - 1 - i] === importId) continue;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (beforeIndex.hasOwnProperty(importId)) {\n // remove the import before we insert at the correct position\n commands.push({command: operations.removeImport, args: [importId]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.lastIndexOf(importId, tracker.length - d), 1);\n } else {\n // limit where in tracker we need to look for a match\n d++;\n }\n\n // add import at correct position\n insertBefore = tracker[tracker.length - i];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n commands.push({command: operations.addImport, args: [afterIndex[importId], insertBefore]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n tracker.splice(tracker.length - i, 0, importId);\n }\n\n // update imports\n for (const afterImport of after) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const beforeImport = beforeIndex[afterImport.id];\n if (!beforeImport) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n delete beforeImport.data;\n if (isEqual(beforeImport, afterImport)) continue;\n\n commands.push({command: operations.updateImport, args: [afterImport.id, afterImport]});\n }\n}\n\nfunction diffIconsets(before: IconsetsSpecification, after: IconsetsSpecification, commands: Array) {\n before = before || {};\n after = after || {};\n\n let iconsetId;\n\n // look for iconsets to remove\n for (iconsetId in before) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before.hasOwnProperty(iconsetId)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after.hasOwnProperty(iconsetId)) {\n commands.push({command: operations.removeIconset, args: [iconsetId]});\n }\n }\n\n // look for iconsets to add/update\n for (iconsetId in after) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!after.hasOwnProperty(iconsetId)) continue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const iconset = after[iconsetId];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!before.hasOwnProperty(iconsetId)) {\n commands.push({command: operations.addIconset, args: [iconsetId, iconset]});\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (!isEqual(before[iconsetId], iconset)) {\n commands.push({command: operations.removeIconset, args: [iconsetId]});\n commands.push({command: operations.addIconset, args: [iconsetId, iconset]});\n }\n }\n}\n\n/**\n * Diff two stylesheet\n *\n * Creates semanticly aware diffs that can easily be applied at runtime.\n * Operations produced by the diff closely resemble the mapbox-gl-js API. Any\n * error creating the diff will fall back to the 'setStyle' operation.\n *\n * Example diff:\n * [\n * { command: 'setConstant', args: ['@water', '#0000FF'] },\n * { command: 'setPaintProperty', args: ['background', 'background-color', 'black'] }\n * ]\n *\n * @private\n * @param {*} [before] stylesheet to compare from\n * @param {*} after stylesheet to compare to\n * @returns Array list of changes\n */\nexport default function diffStyles(before: StyleSpecification, after: StyleSpecification): Array {\n if (!before) return [{command: operations.setStyle, args: [after]}];\n\n let commands: Array = [];\n\n try {\n // Handle changes to top-level properties\n if (!isEqual(before.version, after.version)) {\n return [{command: operations.setStyle, args: [after]}];\n }\n if (!isEqual(before.center, after.center)) {\n commands.push({command: operations.setCenter, args: [after.center]});\n }\n if (!isEqual(before.zoom, after.zoom)) {\n commands.push({command: operations.setZoom, args: [after.zoom]});\n }\n if (!isEqual(before.bearing, after.bearing)) {\n commands.push({command: operations.setBearing, args: [after.bearing]});\n }\n if (!isEqual(before.pitch, after.pitch)) {\n commands.push({command: operations.setPitch, args: [after.pitch]});\n }\n if (!isEqual(before.sprite, after.sprite)) {\n commands.push({command: operations.setSprite, args: [after.sprite]});\n }\n if (!isEqual(before.glyphs, after.glyphs)) {\n commands.push({command: operations.setGlyphs, args: [after.glyphs]});\n }\n // Handle changes to `imports` before other mergable top-level properties\n if (!isEqual(before.imports, after.imports)) {\n diffImports(before.imports, after.imports, commands);\n }\n if (!isEqual(before.transition, after.transition)) {\n commands.push({command: operations.setTransition, args: [after.transition]});\n }\n if (!isEqual(before.light, after.light)) {\n commands.push({command: operations.setLight, args: [after.light]});\n }\n if (!isEqual(before.fog, after.fog)) {\n commands.push({command: operations.setFog, args: [after.fog]});\n }\n if (!isEqual(before.snow, after.snow)) {\n commands.push({command: operations.setSnow, args: [after.snow]});\n }\n if (!isEqual(before.rain, after.rain)) {\n commands.push({command: operations.setRain, args: [after.rain]});\n }\n if (!isEqual(before.projection, after.projection)) {\n commands.push({command: operations.setProjection, args: [after.projection]});\n }\n if (!isEqual(before.lights, after.lights)) {\n commands.push({command: operations.setLights, args: [after.lights]});\n }\n if (!isEqual(before.camera, after.camera)) {\n commands.push({command: operations.setCamera, args: [after.camera]});\n }\n if (!isEqual(before.iconsets, after.iconsets)) {\n diffIconsets(before.iconsets, after.iconsets, commands);\n }\n if (!isEqual(before[\"color-theme\"], after[\"color-theme\"])) {\n // Update this to setColorTheme after\n // https://mapbox.atlassian.net/browse/GLJS-842 is implemented\n return [{command: operations.setStyle, args: [after]}];\n }\n\n // Handle changes to `sources`\n // If a source is to be removed, we also--before the removeSource\n // command--need to remove all the style layers that depend on it.\n const sourcesRemoved: Record = {};\n\n // First collect the {add,remove}Source commands\n const removeOrAddSourceCommands: Command[] = [];\n diffSources(before.sources, after.sources, removeOrAddSourceCommands, sourcesRemoved);\n\n // Push a removeLayer command for each style layer that depends on a\n // source that's being removed.\n // Also, exclude any such layers them from the input to `diffLayers`\n // below, so that diffLayers produces the appropriate `addLayers`\n // command\n const beforeLayers: LayerSpecification[] = [];\n if (before.layers) {\n before.layers.forEach((layer) => {\n if (layer.source && sourcesRemoved[layer.source]) {\n commands.push({command: operations.removeLayer, args: [layer.id]});\n } else {\n beforeLayers.push(layer);\n }\n });\n }\n\n // Remove the terrain if the source for that terrain is being removed\n let beforeTerrain = before.terrain;\n if (beforeTerrain) {\n if (sourcesRemoved[beforeTerrain.source]) {\n commands.push({command: operations.setTerrain, args: [undefined]});\n beforeTerrain = undefined;\n }\n }\n\n commands = commands.concat(removeOrAddSourceCommands);\n\n // Even though terrain is a top-level property\n // Its like a layer in the sense that it depends on a source being present.\n if (!isEqual(beforeTerrain, after.terrain)) {\n commands.push({command: operations.setTerrain, args: [after.terrain]});\n }\n\n // Handle changes to `layers`\n\n diffLayers(beforeLayers, after.layers, commands);\n } catch (e) {\n // fall back to setStyle\n console.warn('Unable to compute style diff:', e);\n commands = [{command: operations.setStyle, args: [after]}];\n }\n\n return commands;\n}\n","// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ValidationError {\n message: string;\n identifier: string | null | undefined;\n line: number | null | undefined;\n\n constructor(key: string | null | undefined, value: unknown, message: string, identifier?: string | null) {\n this.message = (key ? `${key}: ` : '') + message;\n if (identifier) this.identifier = identifier;\n\n if (value !== null && value !== undefined && (value as {__line__?: number}).__line__) {\n this.line = (value as {__line__?: number}).__line__;\n }\n }\n}\n\nexport class ValidationWarning extends ValidationError {}\n","// Note: Do not inherit from Error. It breaks when transpiling to ES5.\n\nexport default class ParsingError {\n message: string;\n error: Error;\n line: number;\n\n constructor(error: Error) {\n this.error = error;\n this.message = error.message;\n const match = error.message.match(/line (\\d+)/);\n this.line = match ? parseInt(match[1], 10) : 0;\n }\n}\n","import validateStyle from './validate_style';\nimport validateObject from './validate_object';\nimport ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport {isObject} from '../util/get_type';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype ImportValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateImport(options: ImportValidatorOptions): ValidationError[] {\n const key = options.key;\n const {value, styleSpec} = options;\n\n if (!isObject(value)) {\n return [new ValidationError(key, value, `import must be an object`)];\n }\n\n const {data, ...importSpec} = value;\n\n // Preserve __line__ from the value\n Object.defineProperty(importSpec, '__line__', {\n value: value.__line__,\n enumerable: false\n });\n\n let errors = validateObject(Object.assign({}, options, {\n value: importSpec,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.import\n }));\n\n // Empty string is reserved for the root style id\n if (unbundle(importSpec.id) === '') {\n const key = `${options.key}.id`;\n errors.push(new ValidationError(key, importSpec, `import id can't be an empty string`));\n }\n\n if (data) {\n const key = `${options.key}.data`;\n errors = errors.concat(validateStyle(data, styleSpec, {key}));\n }\n\n return errors;\n}\n","import {getType, isObject} from '../util/get_type';\nimport validate from './validate';\nimport ValidationError from '../error/validation_error';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\nimport type {ArrayPropertySpecification} from '../style-spec';\n\ntype ArraySpec = {\n value?: unknown;\n values?: unknown[] | {[_: string]: unknown};\n length?: number;\n minimum?: number;\n maximum?: number;\n function?: unknown;\n};\n\ntype ArrayElementSpec = {\n type: string;\n values: T[] | {[_: string]: unknown};\n minimum: number;\n maximum: number;\n function: unknown;\n};\n\ntype ArrayValidatorOptions = {\n key: string;\n value: T;\n valueSpec: ArrayPropertySpecification | ArraySpec;\n style: Partial;\n styleSpec: StyleReference;\n arrayElementValidator: (...args: unknown[]) => ValidationError[];\n};\n\nexport default function validateArray(options: ArrayValidatorOptions): ValidationError[] {\n const array = options.value;\n const arraySpec = options.valueSpec;\n const style = options.style;\n const styleSpec = options.styleSpec;\n const key = options.key;\n const validateArrayElement = options.arrayElementValidator || validate;\n\n if (!Array.isArray(array)) {\n return [new ValidationError(key, array, `array expected, ${getType(array)} found`)];\n }\n\n if (arraySpec.length && array.length !== arraySpec.length) {\n return [new ValidationError(key, array, `array length ${arraySpec.length} expected, length ${array.length} found`)];\n }\n\n if (arraySpec['min-length'] && array.length < arraySpec['min-length']) {\n return [new ValidationError(key, array, `array length at least ${arraySpec['min-length']} expected, length ${array.length} found`)];\n }\n\n let arrayElementSpec: ArrayElementSpec = {\n type: arraySpec.value as string,\n values: arraySpec.values,\n minimum: arraySpec.minimum,\n maximum: arraySpec.maximum,\n function: undefined\n };\n\n if (styleSpec.$version < 7) {\n arrayElementSpec.function = (arraySpec as ArraySpec).function;\n }\n\n if (isObject(arraySpec.value)) {\n arrayElementSpec = arraySpec.value as ArrayElementSpec;\n }\n\n let errors: ValidationError[] = [];\n for (let i = 0; i < array.length; i++) {\n errors = errors.concat(validateArrayElement({\n array,\n arrayIndex: i,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n value: array[i],\n valueSpec: arrayElementSpec,\n style,\n styleSpec,\n key: `${key}[${i}]`\n }, true));\n }\n\n return errors;\n}\n","import {isNumber, getType} from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\nimport type {NumberPropertySpecification} from '../style-spec';\n\ntype NumberValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec: NumberPropertySpecification;\n style: Partial;\n styleSpec: StyleReference;\n arrayIndex: number;\n};\n\nexport default function validateNumber(options: NumberValidatorOptions): ValidationError[] {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n\n if (!isNumber(value)) {\n return [new ValidationError(key, value, `number expected, ${getType(value)} found`)];\n }\n\n // eslint-disable-next-line no-self-compare\n if (value !== value) {\n return [new ValidationError(key, value, `number expected, NaN found`)];\n }\n\n if ('minimum' in valueSpec) {\n let specMin = valueSpec.minimum;\n if (Array.isArray(valueSpec.minimum)) {\n const i = options.arrayIndex;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n specMin = valueSpec.minimum[i];\n }\n if (value < specMin) {\n return [new ValidationError(key, value, `${value} is less than the minimum value ${specMin}`)];\n }\n }\n\n if ('maximum' in valueSpec) {\n let specMax = valueSpec.maximum;\n if (Array.isArray(valueSpec.maximum)) {\n const i = options.arrayIndex;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n specMax = valueSpec.maximum[i];\n }\n if (value > specMax) {\n return [new ValidationError(key, value, `${value} is greater than the maximum value ${specMax}`)];\n }\n }\n\n return [];\n}\n","import ValidationError from '../error/validation_error';\nimport {getType, isObject} from '../util/get_type';\nimport validate from './validate';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateNumber from './validate_number';\nimport {isExpression} from '../expression/index';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {\n supportsPropertyExpression,\n supportsZoomExpression,\n supportsInterpolation\n} from '../util/properties';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\nimport type {StylePropertySpecification} from '../style-spec';\n\nfunction hasObjectStops(value: object): value is {stops: Array>} {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const stops = value['stops'];\n return Array.isArray(stops) && Array.isArray(stops[0]) && isObject(stops[0][0]);\n}\n\nexport type FunctionValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateFunction(options: FunctionValidatorOptions): ValidationError[] {\n const key = options.key;\n const value = options.value;\n\n if (!isObject(value)) {\n return [new ValidationError(key, value, `object expected, ${getType(value)} found`)];\n }\n\n const functionValueSpec = options.valueSpec;\n const functionType = unbundle(value.type);\n let stopKeyType;\n let stopDomainValues: Partial> = {};\n let previousStopDomainValue: unknown;\n let previousStopDomainZoom;\n\n const isZoomFunction = functionType !== 'categorical' && value.property === undefined;\n const isPropertyFunction = !isZoomFunction;\n const isZoomAndPropertyFunction = hasObjectStops(value);\n\n const errors = validateObject({\n key: options.key,\n value: options.value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: options.styleSpec.function,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n stops: validateFunctionStops,\n default: validateFunctionDefault\n }\n });\n\n if (functionType === 'identity' && isZoomFunction) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"property\"'));\n }\n\n if (functionType !== 'identity' && !value.stops) {\n errors.push(new ValidationError(options.key, options.value, 'missing required property \"stops\"'));\n }\n\n if (functionType === 'exponential' && (functionValueSpec as {expression?: unknown}).expression && !supportsInterpolation(functionValueSpec as StylePropertySpecification)) {\n errors.push(new ValidationError(options.key, options.value, 'exponential functions not supported'));\n }\n\n if (options.styleSpec.$version >= 8) {\n if (isPropertyFunction && !supportsPropertyExpression(functionValueSpec as StylePropertySpecification)) {\n errors.push(new ValidationError(options.key, options.value, 'property functions not supported'));\n } else if (isZoomFunction && !supportsZoomExpression(functionValueSpec as StylePropertySpecification)) {\n errors.push(new ValidationError(options.key, options.value, 'zoom functions not supported'));\n }\n }\n\n if ((functionType === 'categorical' || isZoomAndPropertyFunction) && (value as {property?: string}).property === undefined) {\n errors.push(new ValidationError(options.key, options.value, '\"property\" property is required'));\n }\n\n return errors;\n\n function validateFunctionStops(options: FunctionValidatorOptions): ValidationError[] {\n if (functionType === 'identity') {\n return [new ValidationError(options.key, options.value, 'identity function may not have a \"stops\" property')];\n }\n\n let errors: ValidationError[] = [];\n const value = options.value;\n\n errors = errors.concat(validateArray({\n key: options.key,\n value,\n valueSpec: options.valueSpec as Extract,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: validateFunctionStop\n }));\n\n if (Array.isArray(value) && value.length === 0) {\n errors.push(new ValidationError(options.key, value, 'array must have at least one stop'));\n }\n\n return errors;\n }\n\n function validateFunctionStop(options: FunctionValidatorOptions): ValidationError[] {\n let errors: ValidationError[] = [];\n const value = options.value;\n const key = options.key;\n\n if (!Array.isArray(value)) {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length !== 2) {\n return [new ValidationError(key, value, `array length 2 expected, length ${value.length} found`)];\n }\n\n if (isZoomAndPropertyFunction) {\n if (!isObject(value[0])) {\n return [new ValidationError(key, value, `object expected, ${getType(value[0])} found`)];\n }\n\n const stopKey = value[0];\n if (stopKey.zoom === undefined) {\n return [new ValidationError(key, value, 'object stop key must have zoom')];\n }\n if (stopKey.value === undefined) {\n return [new ValidationError(key, value, 'object stop key must have value')];\n }\n\n const nextStopDomainZoom = unbundle(stopKey.zoom);\n if (typeof nextStopDomainZoom !== 'number') {\n return [new ValidationError(key, stopKey.zoom, 'stop zoom values must be numbers')];\n }\n\n if (previousStopDomainZoom && previousStopDomainZoom > nextStopDomainZoom) {\n return [new ValidationError(key, stopKey.zoom, 'stop zoom values must appear in ascending order')];\n }\n if (nextStopDomainZoom !== previousStopDomainZoom) {\n previousStopDomainZoom = nextStopDomainZoom;\n previousStopDomainValue = undefined;\n stopDomainValues = {};\n }\n errors = errors.concat(validateObject({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {zoom: {}},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {zoom: validateNumber, value: validateStopDomainValue}\n }));\n } else {\n errors = errors.concat(validateStopDomainValue({\n key: `${key}[0]`,\n value: value[0],\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec\n }, value));\n }\n\n if (isExpression(deepUnbundle(value[1]))) {\n return errors.concat([new ValidationError(`${key}[1]`, value[1], 'expressions are not allowed in function stops.')]);\n }\n\n return errors.concat(validate({\n key: `${key}[1]`,\n value: value[1],\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n\n function validateStopDomainValue(options: FunctionValidatorOptions, stop?: unknown[]): ValidationError[] {\n const type = getType(options.value);\n const value = unbundle(options.value);\n\n const reportValue = options.value !== null ? options.value : stop;\n\n if (!stopKeyType) {\n stopKeyType = type;\n } else if (type !== stopKeyType) {\n return [new ValidationError(options.key, reportValue, `${type} stop domain type must match previous stop domain type ${stopKeyType}`)];\n }\n\n if (type !== 'number' && type !== 'string' && type !== 'boolean' && typeof value !== 'number' && typeof value !== 'string' && typeof value !== 'boolean') {\n return [new ValidationError(options.key, reportValue, 'stop domain value must be a number, string, or boolean')];\n }\n\n if (type !== 'number' && functionType !== 'categorical') {\n let message = `number expected, ${type} found`;\n if (supportsPropertyExpression(functionValueSpec as StylePropertySpecification) && functionType === undefined) {\n message += '\\nIf you intended to use a categorical function, specify `\"type\": \"categorical\"`.';\n }\n return [new ValidationError(options.key, reportValue, message)];\n }\n\n if (functionType === 'categorical' && type === 'number' && (typeof value !== 'number' || !isFinite(value) || Math.floor(value) !== value)) {\n return [new ValidationError(options.key, reportValue, `integer expected, found ${String(value as number)}`)];\n }\n\n if (functionType !== 'categorical' && type === 'number' && typeof value === 'number' && typeof previousStopDomainValue === 'number' && previousStopDomainValue !== undefined && value < previousStopDomainValue) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must appear in ascending order')];\n } else {\n previousStopDomainValue = value;\n }\n\n if (functionType === 'categorical' && (value as string) in stopDomainValues) {\n return [new ValidationError(options.key, reportValue, 'stop domain values must be unique')];\n } else {\n stopDomainValues[(value as string)] = true;\n }\n\n return [];\n }\n\n function validateFunctionDefault(options: FunctionValidatorOptions) {\n return validate({\n key: options.key,\n value: options.value,\n valueSpec: functionValueSpec,\n style: options.style,\n styleSpec: options.styleSpec\n });\n }\n}\n","import ValidationError from '../error/validation_error';\nimport {createExpression, createPropertyExpression} from '../expression/index';\nimport {deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isStateConstant, isGlobalPropertyConstant, isFeatureConstant} from '../expression/is_constant';\nimport CompoundExpression from '../expression/compound_expression';\n\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {Expression} from '../expression/expression';\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\nexport type ExpressionValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec?: Partial;\n propertyKey?: 'text-font';\n propertyType?: 'layout' | 'paint' | 'filter';\n style?: Partial;\n styleSpec?: StyleReference;\n expressionContext?: 'property' | 'filter' | 'cluster-initial' | 'cluster-reduce' | 'cluster-map' | 'appearance';\n};\n\nexport default function validateExpression(options: ExpressionValidatorOptions): ValidationError[] {\n const expression = (options.expressionContext === 'property' ? createPropertyExpression : createExpression)(deepUnbundle(options.value), options.valueSpec as StylePropertySpecification);\n if (expression.result === 'error') {\n return expression.value.map((error) => {\n return new ValidationError(`${options.key}${error.key}`, options.value, error.message);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const expressionObj = (expression.value as any).expression || (expression.value as any)._styleExpression.expression;\n\n if (options.expressionContext === 'property' && (options.propertyKey === 'text-font') &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access\n !expressionObj.outputDefined()) {\n return [new ValidationError(options.key, options.value, `Invalid data expression for \"${options.propertyKey}\". Output values must be contained as literals within the expression.`)];\n }\n\n if (options.expressionContext === 'property' && options.propertyType === 'layout' &&\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (!isStateConstant(expressionObj))) {\n return [new ValidationError(options.key, options.value, '\"feature-state\" data expressions are not supported with layout properties.')];\n }\n\n if (options.expressionContext === 'filter') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return disallowedFilterParameters(expressionObj, options);\n }\n\n if (options.expressionContext === 'appearance') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n return checkDisallowedParameters(expressionObj, options);\n }\n\n if (options.expressionContext && options.expressionContext.indexOf('cluster') === 0) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (!isGlobalPropertyConstant(expressionObj, ['zoom', 'feature-state'])) {\n return [new ValidationError(options.key, options.value, '\"zoom\" and \"feature-state\" expressions are not supported with cluster properties.')];\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n if (options.expressionContext === 'cluster-initial' && !isFeatureConstant(expressionObj)) {\n return [new ValidationError(options.key, options.value, 'Feature data expressions are not supported with initial expression part of cluster properties.')];\n }\n }\n\n return [];\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function disallowedFilterParameters(e: Expression, options: any): ValidationError[] {\n const disallowedParameters = new Set([\n 'zoom',\n 'feature-state',\n 'pitch',\n 'distance-from-center'\n ]);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (options.valueSpec && options.valueSpec.expression) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (const param of options.valueSpec.expression.parameters) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n disallowedParameters.delete(param);\n }\n }\n\n if (disallowedParameters.size === 0) {\n return [];\n }\n const errors: ValidationError[] = [];\n\n if (e instanceof CompoundExpression) {\n if (disallowedParameters.has(e.name)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n return [new ValidationError(options.key, options.value, `[\"${e.name}\"] expression is not supported in a filter for a ${options.object.type} layer with id: ${options.object.id}`)];\n }\n }\n e.eachChild((arg) => {\n errors.push(...disallowedFilterParameters(arg, options));\n });\n\n return errors;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction checkDisallowedParameters(e: Expression, options: any): ValidationError[] {\n const allowedParameters = new Set();\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (options.valueSpec && options.valueSpec.expression) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n for (const param of options.valueSpec.expression.parameters) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n allowedParameters.add(param);\n }\n }\n\n if (allowedParameters.size === 0) {\n return [];\n }\n const errors: ValidationError[] = [];\n\n if (e instanceof CompoundExpression) {\n if (!allowedParameters.has(e.name)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-member-access\n return [new ValidationError(options.key, options.value, `[\"${e.name}\"] is not an allowed parameter`)];\n }\n }\n e.eachChild((arg) => {\n errors.push(...checkDisallowedParameters(arg, options));\n });\n\n return errors;\n}\n","import {getType, isBoolean} from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\ntype BooleanValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateBoolean(options: BooleanValidatorOptions): ValidationError[] {\n const value = options.value;\n const key = options.key;\n if (!isBoolean(value)) {\n return [new ValidationError(key, value, `boolean expected, ${getType(value)} found`)];\n }\n\n return [];\n}\n","import ValidationError from '../error/validation_error';\nimport {getType, isString} from '../util/get_type';\nimport {parseCSSColor} from 'csscolorparser';\n\ntype ColorValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateColor({key, value}: ColorValidatorOptions): ValidationError[] {\n if (!isString(value)) {\n return [new ValidationError(key, value, `color expected, ${getType(value)} found`)];\n }\n\n if (parseCSSColor(value) === null) {\n return [new ValidationError(key, value, `color expected, \"${value}\" found`)];\n }\n\n return [];\n}\n","import ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\n\nimport type {EnumPropertySpecification} from '../style-spec';\n\ntype EnumValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec: EnumPropertySpecification | {values: unknown[] | {[_: string]: unknown}};\n};\n\nexport default function validateEnum(options: EnumValidatorOptions): ValidationError[] {\n const key = options.key;\n const value = options.value;\n const valueSpec = options.valueSpec;\n\n const errors: ValidationError[] = [];\n if (Array.isArray(valueSpec.values)) { // <=v7\n if (valueSpec.values.indexOf(unbundle(value)) === -1) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n errors.push(new ValidationError(key, value, `expected one of [${valueSpec.values.join(', ')}], ${JSON.stringify(value)} found`));\n }\n } else { // >=v8\n if (Object.keys(valueSpec.values).indexOf(unbundle(value) as string) === -1) {\n errors.push(new ValidationError(key, value, `expected one of [${Object.keys(valueSpec.values).join(', ')}], ${JSON.stringify(value)} found`));\n }\n }\n\n return errors;\n}\n","import ValidationError from '../error/validation_error';\nimport validateExpression from './validate_expression';\nimport validateEnum from './validate_enum';\nimport {getType, isString, isNumber, isBoolean} from '../util/get_type';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isExpressionFilter} from '../feature_filter/index';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype FilterValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n layerType?: string;\n object?: {\n type?: string,\n id?: string\n }\n};\n\nexport default function validateFilter(options: FilterValidatorOptions): ValidationError[] {\n if (isExpressionFilter(deepUnbundle(options.value))) {\n // We default to a layerType of `fill` because that points to a non-dynamic filter definition within the style-spec.\n const layerType = options.layerType || 'fill';\n\n return validateExpression(Object.assign({}, options, {\n expressionContext: 'filter' as const,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: options.styleSpec[`filter_${layerType}`]\n }));\n } else {\n return validateNonExpressionFilter(options);\n }\n}\n\nfunction validateNonExpressionFilter(options: FilterValidatorOptions): ValidationError[] {\n const value = options.value;\n const key = options.key;\n\n if (!Array.isArray(value)) {\n return [new ValidationError(key, value, `array expected, ${getType(value)} found`)];\n }\n\n if (value.length < 1) {\n return [new ValidationError(key, value, 'filter array must have at least 1 element')];\n }\n\n const styleSpec = options.styleSpec;\n let errors: ValidationError[] = validateEnum({\n key: `${key}[0]`,\n value: value[0],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.filter_operator\n });\n\n const validate = () => {\n if (value.length >= 2) {\n if (!isString(value[1])) {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${getType(value[1])} found`));\n }\n }\n for (let i = 2; i < value.length; i++) {\n if (unbundle(value[1]) === '$type') {\n errors = errors.concat(validateEnum({\n key: `${key}[${i}]`,\n value: value[i],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.geometry_type\n }));\n } else if (!isString(value[i]) && !isNumber(value[i]) && !isBoolean(value[i])) {\n errors.push(new ValidationError(`${key}[${i}]`, value[i], `string, number, or boolean expected, ${getType(value[i])} found.`));\n }\n }\n };\n\n switch (unbundle(value[0])) {\n case '<':\n case '<=':\n case '>':\n case '>=':\n if (value.length >= 2 && unbundle(value[1]) === '$type') {\n errors.push(new ValidationError(key, value, `\"$type\" cannot be use with operator \"${value[0]}\"`));\n }\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n validate();\n break;\n\n case '==':\n case '!=':\n if (value.length !== 3) {\n errors.push(new ValidationError(key, value, `filter array for operator \"${value[0]}\" must have 3 elements`));\n }\n validate();\n break;\n\n case 'in':\n case '!in':\n validate();\n break;\n\n case 'any':\n case 'all':\n case 'none':\n for (let i = 1; i < value.length; i++) {\n errors = errors.concat(validateNonExpressionFilter({\n key: `${key}[${i}]`,\n value: value[i],\n style: options.style,\n styleSpec: options.styleSpec\n }));\n }\n break;\n\n case 'has':\n case '!has':\n if (value.length !== 2) {\n errors.push(new ValidationError(key, value, `filter array for \"${value[0]}\" operator must have 2 elements`));\n } else if (!isString(value[1])) {\n errors.push(new ValidationError(`${key}[1]`, value[1], `string expected, ${getType(value[1])} found`));\n }\n break;\n }\n\n return errors;\n}\n","import validate from './validate';\nimport {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport {isString} from '../util/get_type';\nimport {isFunction} from '../function/index';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {supportsLightExpression, supportsPropertyExpression, supportsZoomExpression} from '../util/properties';\nimport {isGlobalPropertyConstant, isFeatureConstant, isStateConstant} from '../expression/is_constant';\nimport {createPropertyExpression, isExpression} from '../expression/index';\n\nimport type {Expression} from '../expression/expression';\nimport type {StyleReference} from '../reference/latest';\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {StyleSpecification, LayerSpecification} from '../types';\n\nexport type PropertyValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec?: StylePropertySpecification;\n style: Partial;\n styleSpec: StyleReference;\n objectKey?: string;\n layerType: string;\n layer?: Partial;\n};\n\nexport default function validateProperty(options: PropertyValidatorOptions, propertyType: string): ValidationError[] {\n const key = options.key;\n const style = options.style;\n const layer = options.layer;\n const styleSpec = options.styleSpec;\n const value = options.value;\n const propertyKey = options.objectKey;\n const layerSpec = styleSpec[`${propertyType}_${options.layerType}`] as Record | undefined;\n\n if (!layerSpec) return [];\n\n const useThemeMatch = propertyKey.match(/^(.*)-use-theme$/);\n if (useThemeMatch && layerSpec[useThemeMatch[1]]) {\n if (isExpression(deepUnbundle(value))) {\n const errors: ValidationError[] = [];\n return errors.concat(validate({\n key,\n value,\n valueSpec: {\n type: 'string',\n expression: {\n interpolated: false,\n parameters: ['zoom', 'feature']\n },\n 'property-type': 'data-driven'\n },\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n }\n\n return validate({\n key,\n value,\n valueSpec: {type: 'string'},\n style,\n styleSpec\n });\n }\n\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n if (propertyType === 'paint' && transitionMatch && layerSpec[transitionMatch[1]] && layerSpec[transitionMatch[1]].transition) {\n return validate({\n key,\n value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n });\n }\n\n const valueSpec = options.valueSpec || layerSpec[propertyKey];\n if (!valueSpec) {\n return [new ValidationWarning(key, value, `unknown property \"${propertyKey}\"`)];\n }\n\n let tokenMatch: RegExpExecArray | undefined;\n if (isString(value) && supportsPropertyExpression(valueSpec) && !valueSpec.tokens && (tokenMatch = /^{([^}]+)}$/.exec(value))) {\n const example = `\\`{ \"type\": \"identity\", \"property\": ${tokenMatch ? JSON.stringify(tokenMatch[1]) : '\"_\"'} }\\``;\n return [new ValidationError(\n key, value,\n `\"${propertyKey}\" does not support interpolation syntax\\n` +\n `Use an identity property function instead: ${example}.`)];\n }\n\n const errors: ValidationError[] = [];\n\n if (options.layerType === 'symbol') {\n if (propertyKey === 'text-field' && style && !style.glyphs && !style.imports) {\n errors.push(new ValidationError(key, value, 'use of \"text-field\" requires a style \"glyphs\" property'));\n }\n if (propertyKey === 'text-font' && isFunction(deepUnbundle(value)) && unbundle((value as {type: unknown}).type) === 'identity') {\n errors.push(new ValidationError(key, value, '\"text-font\" does not support identity functions'));\n }\n } else if (options.layerType === 'model' && propertyType === 'paint' && layer && layer.layout && layer.layout.hasOwnProperty('model-id')) {\n if (supportsPropertyExpression(valueSpec) && (supportsLightExpression(valueSpec) || supportsZoomExpression(valueSpec))) {\n // Performance related style spec limitation: zoom and light expressions are not allowed for e.g. trees.\n const expression = createPropertyExpression(deepUnbundle(value), valueSpec);\n\n const expressionValue = expression.value as {expression?: Expression} | {_styleExpression?: {expression?: Expression}};\n const expressionObj = ('expression' in expressionValue && expressionValue.expression) ||\n ('_styleExpression' in expressionValue && expressionValue._styleExpression && expressionValue._styleExpression.expression);\n\n if (expressionObj && !isGlobalPropertyConstant(expressionObj, ['measure-light'])) {\n if (propertyKey !== 'model-emissive-strength' || (!isFeatureConstant(expressionObj) || !isStateConstant(expressionObj))) {\n errors.push(new ValidationError(key, value, `${propertyKey} does not support measure-light expressions when the model layer source is vector tile or GeoJSON.`));\n }\n }\n }\n }\n\n return errors.concat(validate({\n key: options.key,\n value,\n valueSpec,\n style,\n styleSpec,\n expressionContext: 'property',\n propertyType,\n propertyKey\n }));\n}\n","import validateObject from './validate_object';\nimport ValidationError from '../error/validation_error';\nimport validateProperty from './validate_property';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport validateExpression from './validate_expression';\nimport latest from '../reference/latest';\n\nimport type {StyleSpecification, LayerSpecification, AppearanceSpecification} from '../types';\nimport type {StyleReference} from '../reference/latest';\nimport type {StylePropertySpecification} from '../style-spec';\n\nexport type AppearanceValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n object?: object;\n objectKey?: string;\n layer: LayerSpecification;\n layerType: string;\n};\n\nexport default function validateAppearance(options: AppearanceValidatorOptions): Array {\n const {key, layer, layerType} = options;\n const value = unbundle(options.value) as AppearanceSpecification;\n const name = unbundle(value.name);\n const condition = unbundle(value.condition);\n\n const errors = validateObject({\n key,\n value,\n valueSpec: options.styleSpec.appearance as object,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n condition: (options) => validateCondition(Object.assign({layer, layerType}, options)),\n properties: (options) => validateProperties(Object.assign({layer, layerType}, options)),\n }\n });\n\n if (name !== 'hidden' && condition === undefined) {\n errors.push(new ValidationError(options.key, 'name', `Appearance with name different than \"hidden\" must have a condition`));\n }\n\n return errors;\n}\n\nfunction validateProperties(options: AppearanceValidatorOptions): Array {\n const errors: Array = [];\n\n const {styleSpec, layer, layerType} = options;\n\n const paintProperties = styleSpec[`paint_${layerType}`] as Record | undefined;\n const layoutProperties = styleSpec[`layout_${layerType}`] as Record | undefined;\n const properties = options.object[options.objectKey] as object;\n\n for (const propertyKey in properties) {\n const propertyType =\n propertyKey in paintProperties ? 'paint' :\n propertyKey in layoutProperties ? 'layout' :\n undefined;\n\n if (!propertyType) {\n errors.push(new ValidationError(options.key, propertyKey, `unknown property \"${propertyKey}\" for layer type \"${layerType}\"`));\n continue;\n }\n\n const propertyValidationOptions = Object.assign({}, options, {\n key: `${options.key}.${propertyKey}`,\n object: properties,\n objectKey: propertyKey,\n layer,\n layerType,\n value: properties[propertyKey] as unknown,\n valueSpec: (propertyType === 'paint' ? paintProperties[propertyKey] : layoutProperties[propertyKey]),\n });\n\n errors.push(...validateProperty(propertyValidationOptions, propertyType));\n }\n\n return errors;\n}\n\nfunction validateCondition(options: AppearanceValidatorOptions): Array {\n const errors: Array = [];\n\n const appearance = options.object as AppearanceSpecification;\n const condition = appearance.condition;\n\n errors.push(...validateExpression({\n key: options.key,\n value: condition,\n valueSpec: (latest['appearance'] as Record)['condition'] as StylePropertySpecification,\n expressionContext: 'appearance'\n }));\n\n return errors;\n}\n","import validateProperty from './validate_property';\n\nimport type ValidationError from '../error/validation_error';\nimport type {PropertyValidatorOptions} from './validate_property';\n\nexport default function validatePaintProperty(options: PropertyValidatorOptions): ValidationError[] {\n return validateProperty(options, 'paint');\n}\n","import validateProperty from './validate_property';\n\nimport type ValidationError from '../error/validation_error';\nimport type {PropertyValidatorOptions} from './validate_property';\n\nexport default function validateLayoutProperty(options: PropertyValidatorOptions): ValidationError[] {\n return validateProperty(options, 'layout');\n}\n","import ValidationError from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport validateArray from './validate_array';\nimport validateObject from './validate_object';\nimport validateFilter from './validate_filter';\nimport validateAppearance, {type AppearanceValidatorOptions} from './validate_appearance';\nimport validatePaintProperty from './validate_paint_property';\nimport validateLayoutProperty from './validate_layout_property';\nimport validateSpec from './validate';\nimport {isObject, isString} from '../util/get_type';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {PropertyValidatorOptions} from './validate_property';\nimport type {StyleSpecification, LayerSpecification, GeoJSONSourceSpecification} from '../types';\n\ntype LayerValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n arrayIndex: number;\n};\n\nexport default function validateLayer(options: LayerValidatorOptions): ValidationError[] {\n let errors: ValidationError[] = [];\n\n const layer = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (!isObject(layer)) {\n return [new ValidationError(key, layer, `object expected`)];\n }\n\n if (!layer.type && !layer.ref) {\n errors.push(new ValidationError(key, layer, 'either \"type\" or \"ref\" is required'));\n }\n\n let type = unbundle(layer.type) as string;\n const ref = unbundle(layer.ref);\n\n if (layer.id) {\n const layerId = unbundle(layer.id) as string;\n for (let i = 0; i < options.arrayIndex; i++) {\n const otherLayer = style.layers[i];\n if (unbundle(otherLayer.id) === layerId) {\n errors.push(new ValidationError(key, layer.id, `duplicate layer id \"${layerId}\", previously used at line ${(otherLayer.id as {__line__?: number}).__line__}`));\n }\n }\n }\n\n if ('ref' in layer) {\n ['type', 'source', 'source-layer', 'filter', 'layout'].forEach((p) => {\n if (p in layer) {\n errors.push(new ValidationError(key, layer[p], `\"${p}\" is prohibited for ref layers`));\n }\n });\n\n let parent;\n\n style.layers.forEach((layer) => {\n if (unbundle(layer.id) === ref) parent = layer;\n });\n\n if (!parent) {\n if (typeof ref === 'string')\n errors.push(new ValidationError(key, layer.ref, `ref layer \"${ref}\" not found`));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (parent.ref) {\n errors.push(new ValidationError(key, layer.ref, 'ref cannot reference another ref layer'));\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n type = unbundle(parent.type) as string;\n }\n } else if (!(type === 'background' || type === 'sky' || type === 'slot')) {\n if (!layer.source) {\n errors.push(new ValidationError(key, layer, 'missing required property \"source\"'));\n } else if (!isString(layer.source)) {\n errors.push(new ValidationError(`${key}.source`, layer.source, '\"source\" must be a string'));\n } else {\n const source = style.sources && style.sources[layer.source];\n const sourceType = source && unbundle(source.type);\n if (!source) {\n errors.push(new ValidationError(key, layer.source, `source \"${layer.source}\" not found`));\n } else if (sourceType === 'vector' && type === 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id as string}\" requires a raster source`));\n } else if (sourceType === 'raster' && type !== 'raster') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id as string}\" requires a vector source`));\n } else if (sourceType === 'vector' && !layer['source-layer']) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id as string}\" must specify a \"source-layer\"`));\n } else if (sourceType === 'raster-dem' && type !== 'hillshade') {\n errors.push(new ValidationError(key, layer.source, 'raster-dem source can only be used with layer type \\'hillshade\\'.'));\n } else if (sourceType === 'raster-array' && !['raster', 'raster-particle'].includes(type)) {\n errors.push(new ValidationError(key, layer.source, `raster-array source can only be used with layer type \\'raster\\'.`));\n } else if (type === 'line' && layer.paint && (layer.paint['line-gradient'] || layer.paint['line-trim-offset']) &&\n (sourceType === 'geojson' && !(source as GeoJSONSourceSpecification).lineMetrics)) {\n errors.push(new ValidationError(key, layer, `layer \"${layer.id as string}\" specifies a line-gradient, which requires the GeoJSON source to have \\`lineMetrics\\` enabled.`));\n } else if (type === 'raster-particle' && sourceType !== 'raster-array') {\n errors.push(new ValidationError(key, layer.source, `layer \"${layer.id as string}\" requires a \\'raster-array\\' source.`));\n }\n }\n }\n\n errors = errors.concat(validateObject({\n key,\n value: layer,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.layer,\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'() {\n return [];\n },\n // We don't want to enforce the spec's `\"requires\": true` for backward compatibility with refs;\n // the actual requirement is validated above. See https://github.com/mapbox/mapbox-gl-js/issues/5772.\n type() {\n return validateSpec({\n key: `${key}.type`,\n value: layer.type,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: styleSpec.layer.type,\n style: options.style,\n styleSpec: options.styleSpec,\n object: layer,\n objectKey: 'type'\n });\n },\n filter(options) {\n return validateFilter(Object.assign({layerType: type}, options));\n },\n layout(options) {\n return validateObject({\n layer: layer as LayerSpecification,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options: PropertyValidatorOptions) {\n return validateLayoutProperty(Object.assign({layerType: type}, options));\n }\n }\n });\n },\n paint(options) {\n return validateObject({\n layer: layer as LayerSpecification,\n key: options.key,\n value: options.value,\n valueSpec: {},\n style: options.style,\n styleSpec: options.styleSpec,\n objectElementValidators: {\n '*'(options: PropertyValidatorOptions) {\n return validatePaintProperty(Object.assign({layerType: type, layer}, options));\n }\n }\n });\n },\n appearances(options) {\n const validationErrors = validateArray({\n key: options.key,\n value: options.value,\n\n valueSpec: options.valueSpec,\n style: options.style,\n styleSpec: options.styleSpec,\n arrayElementValidator: (options) => validateAppearance(Object.assign({layerType: type, layer}, options) as AppearanceValidatorOptions)\n });\n // Check non-repeated names on a given layer\n const appearances = Array.isArray(options.value) ? options.value : [];\n const dedupedNames = new Set();\n appearances.forEach((a, index) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const name: string | undefined = unbundle(a.name) as string | undefined;\n if (name) {\n if (dedupedNames.has(name)) {\n const layerId = unbundle((layer as LayerSpecification).id) as string;\n validationErrors.push(new ValidationError(options.key, name, `Duplicated appearance name \"${name}\" for layer \"${layerId}\"`));\n } else {\n dedupedNames.add(name);\n }\n }\n });\n\n return validationErrors;\n }\n }\n }));\n\n return errors;\n}\n","import {getType, isString} from '../util/get_type';\nimport ValidationError from '../error/validation_error';\n\ntype StringValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateString({key, value}: StringValidatorOptions): ValidationError[] {\n if (isString(value)) {\n return [];\n }\n\n return [new ValidationError(key, value, `string expected, ${getType(value)} found`)];\n}\n","import {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport validateObject from './validate_object';\nimport validateEnum from './validate_enum';\nimport validateExpression from './validate_expression';\nimport validateString from './validate_string';\nimport {getType, isObject, isString} from '../util/get_type';\nimport {createExpression} from '../expression/index';\nimport * as isConstant from '../expression/is_constant';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\nconst objectElementValidators = {\n promoteId: validatePromoteId\n};\n\ntype SourceValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateSource(options: SourceValidatorOptions): ValidationError[] {\n const value = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!isObject(value)) {\n return [new ValidationError(key, value, `object expected, ${getType(value)} found`)];\n }\n\n if (!('type' in value)) {\n return [new ValidationError(key, value, '\"type\" is required')];\n }\n\n const type = unbundle(value.type) as string;\n let errors: ValidationError[] = [];\n\n if (['vector', 'raster', 'raster-dem', 'raster-array'].includes(type)) {\n if (!('url' in value) && !('tiles' in value)) {\n errors.push(new ValidationWarning(key, value, 'Either \"url\" or \"tiles\" is required.'));\n }\n }\n\n switch (type) {\n case 'vector':\n case 'raster':\n case 'raster-dem':\n case 'raster-array':\n errors = errors.concat(validateObject({\n key,\n value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec[`source_${type.replace('-', '_')}`],\n style: options.style,\n styleSpec,\n objectElementValidators\n }));\n return errors;\n case 'geojson':\n errors = validateObject({\n key,\n value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.source_geojson,\n style,\n styleSpec,\n objectElementValidators\n });\n\n if ('cluster' in value && 'clusterProperties' in value) {\n if (!isObject(value.clusterProperties)) {\n return [new ValidationError(`${key}.clusterProperties`, value, `object expected, ${getType(value)} found`)];\n }\n\n for (const prop in value.clusterProperties) {\n const propValue = value.clusterProperties[prop];\n if (!Array.isArray(propValue)) {\n return [new ValidationError(`${key}.clusterProperties.${prop}`, propValue, 'array expected')];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const [operator, mapExpr] = propValue;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const reduceExpr = typeof operator === 'string' ? [operator, ['accumulated'], ['get', prop]] : operator;\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.map`,\n value: mapExpr,\n expressionContext: 'cluster-map'\n }));\n\n errors.push(...validateExpression({\n key: `${key}.${prop}.reduce`,\n value: reduceExpr,\n expressionContext: 'cluster-reduce'\n }));\n }\n }\n\n return errors;\n case 'video':\n return validateObject({\n key,\n value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.source_video,\n style,\n styleSpec\n });\n\n case 'image':\n return validateObject({\n key,\n value,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.source_image,\n style,\n styleSpec\n });\n\n case 'canvas':\n return [new ValidationError(key, null, `Please use runtime APIs to add canvas sources, rather than including them in stylesheets.`, 'source.canvas')];\n\n default:\n return validateEnum({\n key: `${key}.type`,\n value: (value as {type: unknown}).type,\n valueSpec: {values: getSourceTypeValues(styleSpec)}\n });\n }\n}\n\nfunction getSourceTypeValues(styleSpec: StyleReference): string[] {\n const sourceArray = styleSpec.source as string[];\n return sourceArray.reduce((memo: string[], source: string) => {\n\n const sourceType = (styleSpec as Record)[source] as {type: {type: string; values?: Record}};\n if (sourceType.type.type === 'enum') {\n memo = memo.concat(Object.keys(sourceType.type.values || {}));\n }\n return memo;\n }, []);\n}\n\ntype PromoteIdValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nfunction validatePromoteId({key, value}: PromoteIdValidatorOptions) {\n if (isString(value)) {\n return validateString({key, value});\n }\n\n if (Array.isArray(value)) {\n const errors: ValidationError[] = [];\n const unbundledValue = deepUnbundle(value);\n const expression = createExpression(unbundledValue);\n if (expression.result === 'error') {\n expression.value.forEach((err) => {\n errors.push(new ValidationError(`${key}${err.key}`, null, `${err.message}`));\n });\n }\n\n // @ts-expect-error - TS2339: Property 'expression' does not exist on type 'ParsingError[] | StyleExpression'.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const parsed = expression.value.expression;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n const onlyFeatureDependent = isConstant.isGlobalPropertyConstant(parsed, ['zoom', 'heatmap-density', 'line-progress', 'raster-value', 'sky-radial-progress', 'accumulated', 'is-supported-script', 'pitch', 'distance-from-center', 'measure-light', 'raster-particle-speed']);\n if (!onlyFeatureDependent) {\n errors.push(new ValidationError(`${key}`, null, 'promoteId expression should be only feature dependent'));\n }\n\n return errors;\n }\n\n if (!isObject(value)) {\n return [new ValidationError(key, value, `string, expression or object expected, \"${getType(value)}\" found`)];\n }\n\n const errors: ValidationError[] = [];\n for (const prop in (value as object)) {\n errors.push(...validatePromoteId({key: `${key}.${prop}`, value: value[prop]}));\n }\n\n return errors;\n}\n","import ValidationError from '../error/validation_error';\nimport {getType, isString} from '../util/get_type';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\n// Allow any URL, use dummy base, if it's a relative URL\nexport function isValidUrl(str: string, allowRelativeUrls: boolean): boolean {\n const isRelative = str.indexOf('://') === -1;\n try {\n new URL(str, isRelative && allowRelativeUrls ? 'http://example.com' : undefined);\n return true;\n } catch (_: unknown) {\n return false;\n }\n}\n\ntype ModelValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateModel(options: ModelValidatorOptions): ValidationError[] {\n const url = options.value;\n\n if (!url) {\n return [];\n }\n\n if (!isString(url)) {\n return [new ValidationError(options.key, url, `string expected, \"${getType(url)}\" found`)];\n }\n\n if (!isValidUrl(url, true)) {\n return [new ValidationError(options.key, url, `invalid url \"${url}\"`)];\n }\n\n return [];\n}\n","import ValidationError from '../error/validation_error';\nimport {getType, isObject} from '../util/get_type';\nimport validate from './validate';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype LightValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateLight(options: LightValidatorOptions): ValidationError[] {\n const light = options.value;\n const styleSpec = options.styleSpec;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const lightSpec = styleSpec.light;\n const style = options.style;\n\n if (light === undefined) {\n return [];\n }\n\n if (!isObject(light)) {\n return [new ValidationError('light', light, `object expected, ${getType(light)} found`)];\n }\n\n let errors: ValidationError[] = [];\n for (const key in light) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n const useThemeMatch = key.match(/^(.*)-use-theme$/);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (useThemeMatch && lightSpec[useThemeMatch[1]]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n valueSpec: {type: 'string'},\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (transitionMatch && lightSpec[transitionMatch[1]] && lightSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationError(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport {getType, isObject, isString} from '../util/get_type';\nimport validate from './validate';\nimport {unbundle} from '../util/unbundle_jsonlint';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype LightsValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n arrayIndex: number;\n};\n\nexport default function validateLights(options: LightsValidatorOptions): ValidationError[] {\n const light = options.value;\n\n if (!light) {\n return [];\n }\n\n const key = options.key;\n if (!isObject(light)) {\n return [new ValidationError(key, light, `object expected, ${getType(light)} found`)];\n }\n\n let errors: ValidationError[] = [];\n const styleSpec = options.styleSpec;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const lightSpec = styleSpec['light-3d'];\n const style = options.style;\n const lights = options.style.lights;\n\n for (const prop of ['type', 'id'] as const) {\n if (!(prop in light)) {\n errors = errors.concat([new ValidationError(key, light, `missing property \"${prop}\"`)]);\n return errors;\n }\n }\n\n if (!isString(light.type)) {\n errors = errors.concat([new ValidationError(`${key}.type`, light.type, `string expected`)]);\n return errors;\n }\n\n if (lights) {\n for (let i = 0; i < options.arrayIndex; i++) {\n const lightType = unbundle(light.type);\n const otherLight = lights[i];\n if (unbundle(otherLight.type) === lightType) {\n errors.push(new ValidationError(key, light.id, `duplicate light type \"${light.type}\", previously defined at line ${(otherLight.id as {__line__?: number}).__line__}`));\n }\n }\n }\n\n const lightType = `properties_light_${light.type}`;\n if (!(lightType in styleSpec)) {\n errors = errors.concat([new ValidationError(`${key}.type`, light, `Invalid light type ${light.type}`)]);\n return errors;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const lightPropertySpec = styleSpec[lightType];\n\n for (const key in light) {\n if (key === 'properties') {\n const properties = light[key];\n if (!isObject(properties)) {\n errors = errors.concat([new ValidationError('properties', properties, `object expected, ${getType(properties)} found`)]);\n return errors;\n }\n for (const propertyKey in properties) {\n const transitionMatch = propertyKey.match(/^(.*)-transition$/);\n const useThemeMatch = propertyKey.match(/^(.*)-use-theme$/);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (useThemeMatch && lightPropertySpec[useThemeMatch[1]]) {\n errors = errors.concat(validate({\n key,\n value: properties[propertyKey],\n valueSpec: {type: 'string'},\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (transitionMatch && lightPropertySpec[transitionMatch[1]] && lightPropertySpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (!lightPropertySpec[propertyKey]) {\n errors = errors.concat([new ValidationWarning(options.key, properties[propertyKey], `unknown property \"${propertyKey}\"`)]);\n } else {\n errors = errors.concat(validate({\n key: propertyKey,\n value: properties[propertyKey],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: lightPropertySpec[propertyKey],\n style,\n styleSpec\n }));\n }\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (lightSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: light[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: lightSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationWarning(key, light[key], `unknown property \"${key}\"`)]);\n }\n }\n }\n\n return errors;\n}\n","import {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport validate from './validate';\nimport {getType, isObject, isString} from '../util/get_type';\nimport {unbundle} from '../util/unbundle_jsonlint';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype TerrainValidatorOptions = {\n key: string;\n value: unknown;\n styleSpec: StyleReference;\n style: Partial;\n};\n\nexport default function validateTerrain(options: TerrainValidatorOptions): ValidationError[] {\n const terrain = options.value;\n const key = options.key;\n const style = options.style;\n const styleSpec = options.styleSpec;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const terrainSpec = styleSpec.terrain;\n\n if (terrain == null) {\n return [];\n }\n\n if (!isObject(terrain)) {\n return [new ValidationError('terrain', terrain, `object expected, ${getType(terrain)} found`)];\n }\n\n let errors: ValidationError[] = [];\n for (const key in terrain) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n const useThemeMatch = key.match(/^(.*)-use-theme$/);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (useThemeMatch && terrainSpec[useThemeMatch[1]]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n valueSpec: {type: 'string'},\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (transitionMatch && terrainSpec[transitionMatch[1]] && terrainSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (terrainSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: terrain[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: terrainSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationWarning(key, terrain[key], `unknown property \"${key}\"`)]);\n }\n }\n\n if (!terrain.source) {\n errors.push(new ValidationError(key, terrain, `terrain is missing required property \"source\"`));\n } else if (!isString(terrain.source)) {\n errors.push(new ValidationError(`${key}.source`, terrain.source, `source must be a string`));\n } else {\n const source = style.sources && style.sources[terrain.source];\n const sourceType = source && unbundle(source.type) as string;\n if (!source) {\n errors.push(new ValidationError(`${key}.source`, terrain.source, `source \"${terrain.source}\" not found`));\n } else if (sourceType !== 'raster-dem') {\n errors.push(new ValidationError(`${key}.source`, terrain.source, `terrain cannot be used with a source of type ${sourceType}, it only be used with a \"raster-dem\" source type`));\n }\n }\n\n return errors;\n}\n","import {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport validate from './validate';\nimport {getType, isObject} from '../util/get_type';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\n\ntype FogValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateFog(options: FogValidatorOptions): ValidationError[] {\n const fog = options.value;\n const style = options.style;\n const styleSpec = options.styleSpec;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const fogSpec = styleSpec.fog;\n\n if (fog === undefined) {\n return [];\n }\n\n if (!isObject(fog)) {\n return [new ValidationError('fog', fog, `object expected, ${getType(fog)} found`)];\n }\n\n let errors: ValidationError[] = [];\n for (const key in fog) {\n const transitionMatch = key.match(/^(.*)-transition$/);\n const useThemeMatch = key.match(/^(.*)-use-theme$/);\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (useThemeMatch && fogSpec[useThemeMatch[1]]) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n valueSpec: {type: 'string'},\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (transitionMatch && fogSpec[transitionMatch[1]] && fogSpec[transitionMatch[1]].transition) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec.transition,\n style,\n styleSpec\n }));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n } else if (fogSpec[key]) {\n errors = errors.concat(validate({\n key,\n value: fog[key],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n valueSpec: fogSpec[key],\n style,\n styleSpec\n }));\n } else {\n errors = errors.concat([new ValidationWarning(key, fog[key], `unknown property \"${key}\"`)]);\n }\n }\n\n return errors;\n}\n","import validateExpression from './validate_expression';\nimport validateString from './validate_string';\n\nimport type ValidationError from '../error/validation_error';\n\ntype FormattedValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateFormatted(options: FormattedValidatorOptions): ValidationError[] {\n const errors = validateString(options);\n if (errors.length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","import validateExpression from './validate_expression';\nimport validateString from './validate_string';\n\nimport type ValidationError from '../error/validation_error';\n\ntype ImageValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateImage(options: ImageValidatorOptions): ValidationError[] {\n const errors = validateString(options);\n if (errors.length === 0) {\n return [];\n }\n\n return validateExpression(options);\n}\n","import ValidationError from '../error/validation_error';\nimport {getType, isObject, isString} from '../util/get_type';\nimport validate from './validate';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\nimport type {StylePropertySpecification} from '../style-spec';\n\ntype ProjectionValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nexport default function validateProjection(options: ProjectionValidatorOptions): ValidationError[] {\n const projection = options.value;\n const styleSpec = options.styleSpec;\n const projectionSpec = styleSpec.projection as Record;\n const style = options.style;\n\n if (isObject(projection)) {\n let errors: ValidationError[] = [];\n\n for (const key in projection) {\n errors = errors.concat(validate({\n key,\n value: projection[key],\n\n valueSpec: projectionSpec[key],\n style,\n styleSpec\n }));\n }\n\n return errors;\n }\n\n if (!isString(projection)) {\n return [new ValidationError('projection', projection, `object or string expected, ${getType(projection)} found`)];\n }\n\n return [];\n}\n","import validateObject from './validate_object';\nimport {default as ValidationError} from '../error/validation_error';\nimport {unbundle} from '../util/unbundle_jsonlint';\nimport {isObject} from '../util/get_type';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification, IconsetSpecification} from '../types';\n\ntype IconsetValidatorOptions = {\n key: string;\n value: unknown;\n style: Partial;\n styleSpec: StyleReference;\n};\n\nfunction isSourceIconset(type: IconsetSpecification['type'], iconset: Record): iconset is Extract {\n return !!(type === 'source' && iconset.source);\n}\n\nexport default function validateIconset(options: IconsetValidatorOptions): ValidationError[] {\n const iconset = options.value;\n const key = options.key;\n const styleSpec = options.styleSpec;\n const style = options.style;\n\n if (!isObject(iconset)) {\n return [new ValidationError(key, iconset, 'object expected')];\n }\n\n if (!iconset.type) {\n return [new ValidationError(key, iconset, '\"type\" is required')];\n }\n\n const type = unbundle(iconset.type) as IconsetSpecification['type'];\n\n let errors: ValidationError[] = [];\n\n errors = errors.concat(validateObject({\n key,\n value: iconset,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: styleSpec[`iconset_${type}`],\n style,\n styleSpec\n }));\n\n if (isSourceIconset(type, iconset)) {\n const source = style.sources && style.sources[iconset.source];\n const sourceType = source && unbundle(source.type) as string;\n if (!source) {\n errors.push(new ValidationError(key, iconset.source, `source \"${iconset.source}\" not found`));\n } else if (sourceType !== 'raster-array') {\n errors.push(new ValidationError(key, iconset.source, `iconset cannot be used with a source of type ${String(sourceType)}, it only be used with a \"raster-array\" source type`));\n }\n }\n\n return errors;\n}\n","import {unbundle, deepUnbundle} from '../util/unbundle_jsonlint';\nimport {isExpression} from '../expression/index';\nimport {isFunction} from '../function/index';\nimport validateImport from './validate_import';\nimport validateFunction from './validate_function';\nimport validateExpression from './validate_expression';\nimport validateObject from './validate_object';\nimport validateArray from './validate_array';\nimport validateBoolean from './validate_boolean';\nimport validateNumber from './validate_number';\nimport validateColor from './validate_color';\nimport validateEnum from './validate_enum';\nimport validateFilter from './validate_filter';\nimport validateLayer from './validate_layer';\nimport validateSource from './validate_source';\nimport validateModel from './validate_model';\nimport validateLight from './validate_light';\nimport validateLights from './validate_lights';\nimport validateTerrain from './validate_terrain';\nimport validateFog from './validate_fog';\nimport validateString from './validate_string';\nimport validateFormatted from './validate_formatted';\nimport validateImage from './validate_image';\nimport validateProjection from './validate_projection';\nimport validateIconset from './validate_iconset';\n\nimport type ValidationError from '../error/validation_error';\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification} from '../types';\nimport type {FunctionValidatorOptions} from './validate_function';\nimport type {StylePropertySpecification} from '../style-spec';\nimport type {ExpressionValidatorOptions} from './validate_expression';\n\nconst VALIDATORS: Record ValidationError[]> = {\n '*': () => [],\n 'array': validateArray,\n 'boolean': validateBoolean,\n 'number': validateNumber,\n 'color': validateColor,\n 'enum': validateEnum,\n 'filter': validateFilter,\n 'function': validateFunction,\n 'layer': validateLayer,\n 'object': validateObject,\n 'source': validateSource,\n 'model': validateModel,\n 'light': validateLight,\n 'light-3d': validateLights,\n 'terrain': validateTerrain,\n 'fog': validateFog,\n 'string': validateString,\n 'formatted': validateFormatted,\n 'resolvedImage': validateImage,\n 'projection': validateProjection,\n 'import': validateImport,\n 'iconset': validateIconset,\n};\n\nexport type ValidatorOptions = {\n /**\n * String representing location of validation in style tree. Used only\n * for more informative error reporting.\n */\n key: string;\n\n /**\n * Current value from style being evaluated. May be anything from a\n * high level object that needs to be descended into deeper or a simple\n * scalar value.\n */\n value: unknown;\n\n /**\n * Current spec being evaluated. Tracks value.\n */\n valueSpec?: Partial;\n\n /**\n * Current full spec being evaluated.\n */\n styleSpec: StyleReference;\n\n /**\n * Current style being validated.\n */\n style: Partial;\n\n object?: object;\n objectKey?: string;\n propertyKey?: string;\n propertyType?: string;\n expressionContext?: string;\n};\n\n/**\n * Main recursive validation function.\n */\nexport default function validate(options: ValidatorOptions, arrayAsExpression: boolean = false): ValidationError[] {\n const value = options.value;\n const valueSpec = options.valueSpec;\n const styleSpec = options.styleSpec;\n\n if (valueSpec.expression) {\n if (isFunction(unbundle(value))) return validateFunction(options as unknown as FunctionValidatorOptions);\n if (isExpression(deepUnbundle(value))) return validateExpression(options as unknown as ExpressionValidatorOptions);\n }\n\n if (valueSpec.type && VALIDATORS[valueSpec.type]) {\n const errors = VALIDATORS[valueSpec.type](options);\n if (arrayAsExpression === true && errors.length > 0 && Array.isArray(options.value)) {\n // Try to validate as an expression\n return validateExpression(options as unknown as ExpressionValidatorOptions);\n }\n\n return errors;\n }\n\n const errors = validateObject(Object.assign({}, options, {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: valueSpec.type ? styleSpec[valueSpec.type] : valueSpec\n }));\n\n return errors;\n}\n","import {default as ValidationError, ValidationWarning} from '../error/validation_error';\nimport {getType, isObject} from '../util/get_type';\nimport validateSpec from './validate';\n\nimport type {StyleReference} from '../reference/latest';\nimport type {StyleSpecification, LayerSpecification} from '../types';\n\ntype ObjectElementValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec?: unknown;\n style: Partial;\n styleSpec: StyleReference;\n object?: object;\n objectKey?: string;\n};\n\ntype ObjectValidatorOptions = {\n key: string;\n value: unknown;\n valueSpec?: object;\n style: Partial;\n styleSpec: StyleReference;\n object?: object;\n objectKey?: string;\n layer?: LayerSpecification;\n objectElementValidators?: Record ValidationError[]>;\n};\n\nexport default function validateObject(options: ObjectValidatorOptions): ValidationError[] {\n const key = options.key;\n const object = options.value;\n const elementSpecs = options.valueSpec || {};\n const elementValidators = options.objectElementValidators || {};\n const style = options.style;\n const styleSpec = options.styleSpec;\n\n if (!isObject(object)) {\n return [new ValidationError(key, object, `object expected, ${getType(object)} found`)];\n }\n\n let errors: ValidationError[] = [];\n for (const objectKey in object) {\n const elementSpecKey = objectKey.split('.')[0]; // treat 'paint.*' as 'paint'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const elementSpec = elementSpecs[elementSpecKey] || elementSpecs['*'];\n\n let validateElement;\n if (elementValidators[elementSpecKey]) {\n validateElement = elementValidators[elementSpecKey];\n } else if (elementSpecs[elementSpecKey]) {\n validateElement = validateSpec;\n } else if (elementValidators['*']) {\n validateElement = elementValidators['*'];\n } else if (elementSpecs['*']) {\n validateElement = validateSpec;\n }\n\n if (!validateElement) {\n errors.push(new ValidationWarning(key, object[objectKey], `unknown property \"${objectKey}\"`));\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-unsafe-call\n errors = errors.concat(validateElement({\n key: (key ? `${key}.` : key) + objectKey,\n value: object[objectKey],\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: elementSpec,\n style,\n styleSpec,\n object,\n objectKey\n }, object));\n }\n\n for (const elementSpecKey in elementSpecs) {\n // Don't check `required` when there's a custom validator for that property.\n if (elementValidators[elementSpecKey]) {\n continue;\n }\n\n const elementSpec = elementSpecs[elementSpecKey] as {required?: boolean; default?: unknown};\n if (elementSpec.required && elementSpec['default'] === undefined && object[elementSpecKey] === undefined) {\n errors.push(new ValidationError(key, object, `missing required property \"${elementSpecKey}\"`));\n }\n }\n\n return errors;\n}\n","import ValidationError from '../error/validation_error';\nimport validateString from './validate_string';\n\ntype GlyphsUrlValidatorOptions = {\n key: string;\n value: unknown;\n};\n\nexport default function validateGlyphsUrl({key, value}: GlyphsUrlValidatorOptions): ValidationError[] {\n const errors = validateString({key, value});\n if (errors.length) return errors;\n\n const str = value as string;\n if (str.indexOf('{fontstack}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{fontstack}\" token'));\n }\n\n if (str.indexOf('{range}') === -1) {\n errors.push(new ValidationError(key, value, '\"glyphs\" url must include a \"{range}\" token'));\n }\n\n return errors;\n}\n","import validateObject from './validate_object';\nimport latestStyleSpec from '../reference/latest';\nimport validateGlyphsURL from './validate_glyphs_url';\n\nimport type ValidationError from '../error/validation_error';\nimport type {StyleReference} from '../reference/latest';\n\ntype StyleValidatorOptions = {\n key?: string;\n};\n\nexport default function validateStyle(style: unknown, styleSpec: StyleReference = latestStyleSpec, options: StyleValidatorOptions = {}): ValidationError[] {\n const errors = validateObject({\n key: options.key || '',\n value: style,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n valueSpec: Object.assign(\n styleSpec.$root,\n // Skip validation of the root properties that are not defined in the style spec (e.g. 'owner').\n {'*': {type: '*'}},\n ),\n styleSpec,\n style,\n objectElementValidators: {\n glyphs: validateGlyphsURL\n }\n });\n\n return errors;\n}\n","import latestStyleSpec from './reference/latest';\nimport _validateStyle from './validate/validate_style';\nimport _validateSource from './validate/validate_source';\nimport _validateLight from './validate/validate_light';\nimport _validateLights from './validate/validate_lights';\nimport _validateTerrain from './validate/validate_terrain';\nimport _validateFog from './validate/validate_fog';\nimport _validateSnow from './validate/validate_snow';\nimport _validateRain from './validate/validate_rain';\nimport _validateLayer from './validate/validate_layer';\nimport _validateFilter from './validate/validate_filter';\nimport _validatePaintProperty from './validate/validate_paint_property';\nimport _validateLayoutProperty from './validate/validate_layout_property';\nimport _validateModel from './validate/validate_model';\n\nimport type {StyleReference} from './reference/latest';\nimport type {StyleSpecification} from './types';\n\nexport type ValidationError = {\n message: string;\n identifier?: string | null | undefined;\n line?: number | null | undefined;\n};\n\nexport type ValidationErrors = ReadonlyArray;\nexport type Validator unknown = (...args: unknown[]) => unknown> = (...args: Parameters) => ValidationErrors;\n\n/**\n * Validate a Mapbox GL style against the style specification. This entrypoint,\n * `mapbox-gl-style-spec/lib/validate_style.min`, is designed to produce as\n * small a browserify bundle as possible by omitting unnecessary functionality\n * and legacy style specifications.\n *\n * @private\n * @param {Object} style The style to be validated.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the latest style spec is used.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec/lib/validate_style.min');\n * var errors = validate(style);\n */\nexport function validateStyle(style: StyleSpecification, styleSpec: StyleReference = latestStyleSpec): ValidationErrors {\n const errors = _validateStyle(style, styleSpec);\n return sortErrors(errors);\n}\n\nexport const validateSource: Validator = opts => sortErrors(_validateSource(opts));\nexport const validateLight: Validator = opts => sortErrors(_validateLight(opts));\nexport const validateLights: Validator = opts => sortErrors(_validateLights(opts));\nexport const validateTerrain: Validator = opts => sortErrors(_validateTerrain(opts));\nexport const validateFog: Validator = opts => sortErrors(_validateFog(opts));\nexport const validateSnow: Validator = opts => sortErrors(_validateSnow(opts));\nexport const validateRain: Validator = opts => sortErrors(_validateRain(opts));\nexport const validateLayer: Validator = opts => sortErrors(_validateLayer(opts));\nexport const validateFilter: Validator = opts => sortErrors(_validateFilter(opts));\nexport const validatePaintProperty: Validator = opts => sortErrors(_validatePaintProperty(opts));\nexport const validateLayoutProperty: Validator = opts => sortErrors(_validateLayoutProperty(opts));\nexport const validateModel: Validator = opts => sortErrors(_validateModel(opts));\n\nfunction sortErrors(errors: ValidationErrors): ValidationErrors {\n return errors.slice().sort((a, b) => a.line && b.line ? a.line - b.line : 0);\n}\n","/* parser generated by jison 0.4.15 */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\nvar parser = (function(){\nvar o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,12],$V1=[1,13],$V2=[1,9],$V3=[1,10],$V4=[1,11],$V5=[1,14],$V6=[1,15],$V7=[14,18,22,24],$V8=[18,22],$V9=[22,24];\nvar parser = {trace: function trace() { },\nyy: {},\nsymbols_: {\"error\":2,\"JSONString\":3,\"STRING\":4,\"JSONNumber\":5,\"NUMBER\":6,\"JSONNullLiteral\":7,\"NULL\":8,\"JSONBooleanLiteral\":9,\"TRUE\":10,\"FALSE\":11,\"JSONText\":12,\"JSONValue\":13,\"EOF\":14,\"JSONObject\":15,\"JSONArray\":16,\"{\":17,\"}\":18,\"JSONMemberList\":19,\"JSONMember\":20,\":\":21,\",\":22,\"[\":23,\"]\":24,\"JSONElementList\":25,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",4:\"STRING\",6:\"NUMBER\",8:\"NULL\",10:\"TRUE\",11:\"FALSE\",14:\"EOF\",17:\"{\",18:\"}\",21:\":\",22:\",\",23:\"[\",24:\"]\"},\nproductions_: [0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],\nperformAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {\n/* this == yyval */\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1:\n // replace escaped characters with actual character\n this.$ = new String(yytext.replace(/\\\\(\\\\|\")/g, \"$\"+\"1\")\n .replace(/\\\\n/g,'\\n')\n .replace(/\\\\r/g,'\\r')\n .replace(/\\\\t/g,'\\t')\n .replace(/\\\\v/g,'\\v')\n .replace(/\\\\f/g,'\\f')\n .replace(/\\\\b/g,'\\b'));\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 2:\n\n this.$ = new Number(yytext);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 3:\n\n this.$ = null;\n \nbreak;\ncase 4:\n\n this.$ = new Boolean(true);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 5:\n\n this.$ = new Boolean(false);\n this.$.__line__ = this._$.first_line;\n \nbreak;\ncase 6:\nreturn this.$ = $$[$0-1];\nbreak;\ncase 13:\nthis.$ = {}; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 14: case 19:\nthis.$ = $$[$0-1]; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 15:\nthis.$ = [$$[$0-2], $$[$0]];\nbreak;\ncase 16:\nthis.$ = {}; this.$[$$[$0][0]] = $$[$0][1];\nbreak;\ncase 17:\nthis.$ = $$[$0-2]; $$[$0-2][$$[$0][0]] = $$[$0][1];\nbreak;\ncase 18:\nthis.$ = []; Object.defineProperty(this.$, '__line__', {\n value: this._$.first_line,\n enumerable: false\n })\nbreak;\ncase 20:\nthis.$ = [$$[$0]];\nbreak;\ncase 21:\nthis.$ = $$[$0-2]; $$[$0-2].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,12:1,13:2,15:7,16:8,17:$V5,23:$V6},{1:[3]},{14:[1,16]},o($V7,[2,7]),o($V7,[2,8]),o($V7,[2,9]),o($V7,[2,10]),o($V7,[2,11]),o($V7,[2,12]),o($V7,[2,3]),o($V7,[2,4]),o($V7,[2,5]),o([14,18,21,22,24],[2,1]),o($V7,[2,2]),{3:20,4:$V0,18:[1,17],19:18,20:19},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:23,15:7,16:8,17:$V5,23:$V6,24:[1,21],25:22},{1:[2,6]},o($V7,[2,13]),{18:[1,24],22:[1,25]},o($V8,[2,16]),{21:[1,26]},o($V7,[2,18]),{22:[1,28],24:[1,27]},o($V9,[2,20]),o($V7,[2,14]),{3:20,4:$V0,20:29},{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:30,15:7,16:8,17:$V5,23:$V6},o($V7,[2,19]),{3:5,4:$V0,5:6,6:$V1,7:3,8:$V2,9:4,10:$V3,11:$V4,13:31,15:7,16:8,17:$V5,23:$V6},o($V8,[2,17]),o($V8,[2,15]),o($V9,[2,21])],\ndefaultActions: {16:[2,6]},\nparseError: function parseError(str, hash) {\n if (hash.recoverable) {\n this.trace(str);\n } else {\n throw new Error(str);\n }\n},\nparse: function parse(input) {\n var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n var args = lstack.slice.call(arguments, 1);\n var lexer = Object.create(this.lexer);\n var sharedState = { yy: {} };\n for (var k in this.yy) {\n if (Object.prototype.hasOwnProperty.call(this.yy, k)) {\n sharedState.yy[k] = this.yy[k];\n }\n }\n lexer.setInput(input, sharedState.yy);\n sharedState.yy.lexer = lexer;\n sharedState.yy.parser = this;\n if (typeof lexer.yylloc == 'undefined') {\n lexer.yylloc = {};\n }\n var yyloc = lexer.yylloc;\n lstack.push(yyloc);\n var ranges = lexer.options && lexer.options.ranges;\n if (typeof sharedState.yy.parseError === 'function') {\n this.parseError = sharedState.yy.parseError;\n } else {\n this.parseError = Object.getPrototypeOf(this).parseError;\n }\n function popStack(n) {\n stack.length = stack.length - 2 * n;\n vstack.length = vstack.length - n;\n lstack.length = lstack.length - n;\n }\n _token_stack:\n function lex() {\n var token;\n token = lexer.lex() || EOF;\n if (typeof token !== 'number') {\n token = self.symbols_[token] || token;\n }\n return token;\n }\n var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n while (true) {\n state = stack[stack.length - 1];\n if (this.defaultActions[state]) {\n action = this.defaultActions[state];\n } else {\n if (symbol === null || typeof symbol == 'undefined') {\n symbol = lex();\n }\n action = table[state] && table[state][symbol];\n }\n if (typeof action === 'undefined' || !action.length || !action[0]) {\n var errStr = '';\n expected = [];\n for (p in table[state]) {\n if (this.terminals_[p] && p > TERROR) {\n expected.push('\\'' + this.terminals_[p] + '\\'');\n }\n }\n if (lexer.showPosition) {\n errStr = 'Parse error on line ' + (yylineno + 1) + ':\\n' + lexer.showPosition() + '\\nExpecting ' + expected.join(', ') + ', got \\'' + (this.terminals_[symbol] || symbol) + '\\'';\n } else {\n errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\\'' + (this.terminals_[symbol] || symbol) + '\\'');\n }\n this.parseError(errStr, {\n text: lexer.match,\n token: this.terminals_[symbol] || symbol,\n line: lexer.yylineno,\n loc: yyloc,\n expected: expected\n });\n }\n if (action[0] instanceof Array && action.length > 1) {\n throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);\n }\n switch (action[0]) {\n case 1:\n stack.push(symbol);\n vstack.push(lexer.yytext);\n lstack.push(lexer.yylloc);\n stack.push(action[1]);\n symbol = null;\n if (!preErrorSymbol) {\n yyleng = lexer.yyleng;\n yytext = lexer.yytext;\n yylineno = lexer.yylineno;\n yyloc = lexer.yylloc;\n if (recovering > 0) {\n recovering--;\n }\n } else {\n symbol = preErrorSymbol;\n preErrorSymbol = null;\n }\n break;\n case 2:\n len = this.productions_[action[1]][1];\n yyval.$ = vstack[vstack.length - len];\n yyval._$ = {\n first_line: lstack[lstack.length - (len || 1)].first_line,\n last_line: lstack[lstack.length - 1].last_line,\n first_column: lstack[lstack.length - (len || 1)].first_column,\n last_column: lstack[lstack.length - 1].last_column\n };\n if (ranges) {\n yyval._$.range = [\n lstack[lstack.length - (len || 1)].range[0],\n lstack[lstack.length - 1].range[1]\n ];\n }\n r = this.performAction.apply(yyval, [\n yytext,\n yyleng,\n yylineno,\n sharedState.yy,\n action[1],\n vstack,\n lstack\n ].concat(args));\n if (typeof r !== 'undefined') {\n return r;\n }\n if (len) {\n stack = stack.slice(0, -1 * len * 2);\n vstack = vstack.slice(0, -1 * len);\n lstack = lstack.slice(0, -1 * len);\n }\n stack.push(this.productions_[action[1]][0]);\n vstack.push(yyval.$);\n lstack.push(yyval._$);\n newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n stack.push(newState);\n break;\n case 3:\n return true;\n }\n }\n return true;\n}};\n/* generated by jison-lex 0.3.4 */\nvar lexer = (function(){\nvar lexer = ({\n\nEOF:1,\n\nparseError:function parseError(str, hash) {\n if (this.yy.parser) {\n this.yy.parser.parseError(str, hash);\n } else {\n throw new Error(str);\n }\n },\n\n// resets the lexer, sets new input\nsetInput:function (input, yy) {\n this.yy = yy || this.yy || {};\n this._input = input;\n this._more = this._backtrack = this.done = false;\n this.yylineno = this.yyleng = 0;\n this.yytext = this.matched = this.match = '';\n this.conditionStack = ['INITIAL'];\n this.yylloc = {\n first_line: 1,\n first_column: 0,\n last_line: 1,\n last_column: 0\n };\n if (this.options.ranges) {\n this.yylloc.range = [0,0];\n }\n this.offset = 0;\n return this;\n },\n\n// consumes and returns one char from the input\ninput:function () {\n var ch = this._input[0];\n this.yytext += ch;\n this.yyleng++;\n this.offset++;\n this.match += ch;\n this.matched += ch;\n var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno++;\n this.yylloc.last_line++;\n } else {\n this.yylloc.last_column++;\n }\n if (this.options.ranges) {\n this.yylloc.range[1]++;\n }\n\n this._input = this._input.slice(1);\n return ch;\n },\n\n// unshifts one char (or a string) into the input\nunput:function (ch) {\n var len = ch.length;\n var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n this._input = ch + this._input;\n this.yytext = this.yytext.substr(0, this.yytext.length - len);\n //this.yyleng -= len;\n this.offset -= len;\n var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n this.match = this.match.substr(0, this.match.length - 1);\n this.matched = this.matched.substr(0, this.matched.length - 1);\n\n if (lines.length - 1) {\n this.yylineno -= lines.length - 1;\n }\n var r = this.yylloc.range;\n\n this.yylloc = {\n first_line: this.yylloc.first_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.first_column,\n last_column: lines ?\n (lines.length === oldLines.length ? this.yylloc.first_column : 0)\n + oldLines[oldLines.length - lines.length].length - lines[0].length :\n this.yylloc.first_column - len\n };\n\n if (this.options.ranges) {\n this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n }\n this.yyleng = this.yytext.length;\n return this;\n },\n\n// When called from action, caches matched text and appends it on next action\nmore:function () {\n this._more = true;\n return this;\n },\n\n// When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.\nreject:function () {\n if (this.options.backtrack_lexer) {\n this._backtrack = true;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n\n }\n return this;\n },\n\n// retain first n characters of the match\nless:function (n) {\n this.unput(this.match.slice(n));\n },\n\n// displays already matched input, i.e. for error messages\npastInput:function () {\n var past = this.matched.substr(0, this.matched.length - this.match.length);\n return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n },\n\n// displays upcoming input, i.e. for error messages\nupcomingInput:function () {\n var next = this.match;\n if (next.length < 20) {\n next += this._input.substr(0, 20-next.length);\n }\n return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\\n/g, \"\");\n },\n\n// displays the character position where the lexing error occurred, i.e. for error messages\nshowPosition:function () {\n var pre = this.pastInput();\n var c = new Array(pre.length + 1).join(\"-\");\n return pre + this.upcomingInput() + \"\\n\" + c + \"^\";\n },\n\n// test the lexed token: return FALSE when not a match, otherwise return token\ntest_match:function (match, indexed_rule) {\n var token,\n lines,\n backup;\n\n if (this.options.backtrack_lexer) {\n // save context\n backup = {\n yylineno: this.yylineno,\n yylloc: {\n first_line: this.yylloc.first_line,\n last_line: this.last_line,\n first_column: this.yylloc.first_column,\n last_column: this.yylloc.last_column\n },\n yytext: this.yytext,\n match: this.match,\n matches: this.matches,\n matched: this.matched,\n yyleng: this.yyleng,\n offset: this.offset,\n _more: this._more,\n _input: this._input,\n yy: this.yy,\n conditionStack: this.conditionStack.slice(0),\n done: this.done\n };\n if (this.options.ranges) {\n backup.yylloc.range = this.yylloc.range.slice(0);\n }\n }\n\n lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n if (lines) {\n this.yylineno += lines.length;\n }\n this.yylloc = {\n first_line: this.yylloc.last_line,\n last_line: this.yylineno + 1,\n first_column: this.yylloc.last_column,\n last_column: lines ?\n lines[lines.length - 1].length - lines[lines.length - 1].match(/\\r?\\n?/)[0].length :\n this.yylloc.last_column + match[0].length\n };\n this.yytext += match[0];\n this.match += match[0];\n this.matches = match;\n this.yyleng = this.yytext.length;\n if (this.options.ranges) {\n this.yylloc.range = [this.offset, this.offset += this.yyleng];\n }\n this._more = false;\n this._backtrack = false;\n this._input = this._input.slice(match[0].length);\n this.matched += match[0];\n token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);\n if (this.done && this._input) {\n this.done = false;\n }\n if (token) {\n return token;\n } else if (this._backtrack) {\n // recover context\n for (var k in backup) {\n this[k] = backup[k];\n }\n return false; // rule action called reject() implying the next rule should be tested instead.\n }\n return false;\n },\n\n// return next match in input\nnext:function () {\n if (this.done) {\n return this.EOF;\n }\n if (!this._input) {\n this.done = true;\n }\n\n var token,\n match,\n tempMatch,\n index;\n if (!this._more) {\n this.yytext = '';\n this.match = '';\n }\n var rules = this._currentRules();\n for (var i = 0; i < rules.length; i++) {\n tempMatch = this._input.match(this.rules[rules[i]]);\n if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n match = tempMatch;\n index = i;\n if (this.options.backtrack_lexer) {\n token = this.test_match(tempMatch, rules[i]);\n if (token !== false) {\n return token;\n } else if (this._backtrack) {\n match = false;\n continue; // rule action called reject() implying a rule MISmatch.\n } else {\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n } else if (!this.options.flex) {\n break;\n }\n }\n }\n if (match) {\n token = this.test_match(match, rules[index]);\n if (token !== false) {\n return token;\n }\n // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)\n return false;\n }\n if (this._input === \"\") {\n return this.EOF;\n } else {\n return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\\n' + this.showPosition(), {\n text: \"\",\n token: null,\n line: this.yylineno\n });\n }\n },\n\n// return next match that has a token\nlex:function lex() {\n var r = this.next();\n if (r) {\n return r;\n } else {\n return this.lex();\n }\n },\n\n// activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)\nbegin:function begin(condition) {\n this.conditionStack.push(condition);\n },\n\n// pop the previously active lexer condition state off the condition stack\npopState:function popState() {\n var n = this.conditionStack.length - 1;\n if (n > 0) {\n return this.conditionStack.pop();\n } else {\n return this.conditionStack[0];\n }\n },\n\n// produce the lexer rule set which is active for the currently active lexer condition state\n_currentRules:function _currentRules() {\n if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {\n return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;\n } else {\n return this.conditions[\"INITIAL\"].rules;\n }\n },\n\n// return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available\ntopState:function topState(n) {\n n = this.conditionStack.length - 1 - Math.abs(n || 0);\n if (n >= 0) {\n return this.conditionStack[n];\n } else {\n return \"INITIAL\";\n }\n },\n\n// alias for begin(condition)\npushState:function pushState(condition) {\n this.begin(condition);\n },\n\n// return the number of states currently on the stack\nstateStackSize:function stateStackSize() {\n return this.conditionStack.length;\n },\noptions: {},\nperformAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {\nvar YYSTATE=YY_START;\nswitch($avoiding_name_collisions) {\ncase 0:/* skip whitespace */\nbreak;\ncase 1:return 6\nbreak;\ncase 2:yy_.yytext = yy_.yytext.substr(1,yy_.yyleng-2); return 4\nbreak;\ncase 3:return 17\nbreak;\ncase 4:return 18\nbreak;\ncase 5:return 23\nbreak;\ncase 6:return 24\nbreak;\ncase 7:return 22\nbreak;\ncase 8:return 21\nbreak;\ncase 9:return 10\nbreak;\ncase 10:return 11\nbreak;\ncase 11:return 8\nbreak;\ncase 12:return 14\nbreak;\ncase 13:return 'INVALID'\nbreak;\n}\n},\nrules: [/^(?:\\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\\.[0-9]+)?([eE][-+]?[0-9]+)?\\b)/,/^(?:\"(?:\\\\[\\\\\"bfnrt/]|\\\\u[a-fA-F0-9]{4}|[^\\\\\\0-\\x09\\x0a-\\x1f\"])*\")/,/^(?:\\{)/,/^(?:\\})/,/^(?:\\[)/,/^(?:\\])/,/^(?:,)/,/^(?::)/,/^(?:true\\b)/,/^(?:false\\b)/,/^(?:null\\b)/,/^(?:$)/,/^(?:.)/],\nconditions: {\"INITIAL\":{\"rules\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13],\"inclusive\":true}}\n});\nreturn lexer;\n})();\nparser.lexer = lexer;\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = parser;\nexports.Parser = parser.Parser;\nexports.parse = function () { return parser.parse.apply(parser, arguments); };\n}\n","import ParsingError from './error/parsing_error';\nimport jsonlint from '@mapbox/jsonlint-lines-primitives';\n\nimport type {StyleSpecification} from './types';\n\nexport default function readStyle(style: string | Buffer | StyleSpecification): StyleSpecification {\n if (style instanceof String || typeof style === 'string' || ArrayBuffer.isView(style)) {\n try {\n return (jsonlint as {parse: (input: string) => StyleSpecification}).parse(style.toString());\n } catch (e) {\n throw new ParsingError(e as Error);\n }\n }\n\n return style;\n}\n","import {validateStyle as validateStyleMin} from './validate_style.min';\nimport {v8} from './style-spec';\nimport readStyle from './read_style';\n\nimport type {StyleReference} from './reference/latest';\nimport type {ValidationErrors} from './validate_style.min';\nimport type {StyleSpecification} from './types';\n\n/**\n * Validate a Mapbox GL style against the style specification.\n *\n * @private\n * @alias validate\n * @param {Object|String|Buffer} style The style to be validated. If a `String`\n * or `Buffer` is provided, the returned errors will contain line numbers.\n * @param {Object} [styleSpec] The style specification to validate against.\n * If omitted, the spec version is inferred from the stylesheet.\n * @returns {Array}\n * @example\n * var validate = require('mapbox-gl-style-spec').validate;\n * var style = fs.readFileSync('./style.json', 'utf8');\n * var errors = validate(style);\n */\n\nexport default function validateStyle(style: StyleSpecification | string | Buffer, styleSpec: StyleReference = v8): ValidationErrors {\n let s = style;\n\n try {\n s = readStyle(s);\n } catch (e) {\n return [e] as ValidationErrors;\n }\n\n return validateStyleMin(s, styleSpec);\n}\n\nexport {\n validateSource as source,\n validateModel as model,\n validateLight as light,\n validateLayer as layer,\n validateFilter as filter,\n validateLights as lights,\n validateTerrain as terrain,\n validateFog as fog,\n validatePaintProperty as paintProperty,\n validateLayoutProperty as layoutProperty\n} from './validate_style.min';\n","import {validateStyle} from './validate_style.min';\nimport {v8} from './style-spec';\nimport readStyle from './read_style';\nimport ValidationError from './error/validation_error';\nimport {isString, isBoolean} from './util/get_type';\n\nimport type {StyleReference} from './reference/latest';\nimport type {ValidationErrors} from './validate_style.min';\nimport type {\n StyleSpecification,\n SourceSpecification,\n SourcesSpecification,\n ImportSpecification\n} from './types';\n\ntype MapboxStyleSpecification = StyleSpecification & {\n visibility?: 'public' | 'private';\n protected?: boolean;\n};\n\nconst SUPPORTED_SPEC_VERSION = 8;\nconst MAX_SOURCES_IN_STYLE = 15;\n\nfunction isValid(value: string | null | undefined, regex: RegExp): boolean {\n if (!value || !isString(value)) return true;\n return !!value.match(regex);\n}\n\nfunction getSourceCount(source: SourceSpecification): number {\n if ('url' in source) {\n return source.url.split(',').length;\n } else {\n return 0;\n }\n}\n\nfunction getAllowedKeyErrors(obj: object, keys: string[], path?: string | null): Array {\n const allowed = new Set(keys);\n const errors: ValidationError[] = [];\n Object.keys(obj).forEach(k => {\n if (!allowed.has(k)) {\n const prop = path ? `${path}.${k}` : null;\n errors.push(new ValidationError(prop, obj[k], `Unsupported property \"${k}\"`));\n }\n });\n return errors;\n}\n\nconst acceptedSourceTypes = new Set(['vector', 'raster', 'raster-dem', 'raster-array', 'model', 'batched-model']);\nfunction getSourceErrors(source: SourceSpecification, i: number): Array {\n const errors: ValidationError[] = [];\n\n /*\n * Inlined sources are not supported by the Mapbox Styles API, so only\n * \"type\", \"url\", and \"tileSize\", \"promoteId\" properties are valid\n */\n const sourceKeys = ['type', 'url', 'tileSize', 'promoteId'];\n errors.push(...getAllowedKeyErrors(source, sourceKeys, 'source'));\n\n /*\n * \"type\" is required and must be one of \"vector\", \"raster\", \"raster-dem\", \"raster-array\"\n */\n if (!acceptedSourceTypes.has(String(source.type) as SourceSpecification['type'])) {\n errors.push(new ValidationError(`sources[${i}].type`, source.type, `Expected one of [${Array.from(acceptedSourceTypes).join(\", \")}]`));\n }\n\n /*\n * \"source\" is required. Valid examples:\n * mapbox://mapbox.abcd1234\n * mapbox://penny.abcd1234\n * mapbox://mapbox.abcd1234,penny.abcd1234\n */\n const sourceUrlPattern = /^mapbox:\\/\\/([^/]*)$/;\n if (!('url' in source) || !isValid(source.url, sourceUrlPattern)) {\n errors.push(new ValidationError(`sources[${i}].url`, (source as {url?: string}).url, 'Expected a valid Mapbox tileset url'));\n }\n\n return errors;\n}\n\nfunction getMaxSourcesErrors(sourcesCount: number): Array {\n const errors: ValidationError[] = [];\n if (sourcesCount > MAX_SOURCES_IN_STYLE) {\n errors.push(new ValidationError('sources', null, `Styles must contain ${MAX_SOURCES_IN_STYLE} or fewer sources`));\n }\n return errors;\n}\n\nfunction getSourcesErrors(sources: SourcesSpecification): {\n errors: Array;\n sourcesCount: number;\n} {\n const errors = [];\n let sourcesCount = 0;\n\n Object.keys(sources).forEach((s: string, i: number) => {\n const sourceErrors = getSourceErrors(sources[s], i);\n\n // If source has errors, skip counting\n if (!sourceErrors.length) {\n sourcesCount = sourcesCount + getSourceCount(sources[s]);\n }\n\n errors.push(...sourceErrors);\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n return {errors, sourcesCount};\n}\n\nfunction getImportErrors(imports: ImportSpecification[] = []): Array {\n let errors: Array = [];\n\n const validateImports = (imports: ImportSpecification[] = []) => {\n for (const importSpec of imports) {\n const style = importSpec.data;\n if (!style) continue;\n\n if (style.imports) {\n validateImports(style.imports);\n }\n\n errors = errors.concat(getRootErrors(style, Object.keys(v8.$root)));\n\n if (style.sources) {\n const sourcesErrors = getSourcesErrors(style.sources);\n errors = errors.concat(sourcesErrors.errors);\n }\n }\n };\n\n validateImports(imports);\n if (imports.length !== (new Set(imports.map(i => i.id))).size) {\n errors.push(new ValidationError(null, null, 'Duplicate ids of imports'));\n }\n\n return errors;\n}\n\nfunction getRootErrors(style: MapboxStyleSpecification, specKeys: string[]): Array {\n const errors: ValidationError[] = [];\n\n /*\n * The following keys are optional but fully managed by the Mapbox Styles\n * API. Values on stylesheet on POST or PATCH will be ignored: \"owner\",\n * \"id\", \"cacheControl\", \"draft\", \"created\", \"modified\", \"protected\"\n *\n * The following keys are optional. The Mapbox Styles API respects value on\n * stylesheet on PATCH, but ignores the value on POST: \"visibility\"\n */\n const optionalRootProperties = [\n 'owner',\n 'id',\n 'cacheControl',\n 'draft',\n 'created',\n 'modified',\n 'visibility',\n 'protected',\n 'models',\n 'lights'\n ];\n\n const allowedKeyErrors = getAllowedKeyErrors(style, [...specKeys, ...optionalRootProperties]);\n errors.push(...allowedKeyErrors);\n\n if (style.version > SUPPORTED_SPEC_VERSION || style.version < SUPPORTED_SPEC_VERSION) {\n errors.push(new ValidationError('version', style.version, `Style version must be ${SUPPORTED_SPEC_VERSION}`));\n }\n\n /*\n * \"glyphs\" is optional. If present, valid examples:\n * mapbox://fonts/penny/{fontstack}/{range}.pbf\n * mapbox://fonts/mapbox/{fontstack}/{range}.pbf\n */\n const glyphUrlPattern = /^mapbox:\\/\\/fonts\\/([^/]*)\\/{fontstack}\\/{range}.pbf$/;\n if (!isValid(style.glyphs, glyphUrlPattern)) {\n errors.push(new ValidationError('glyphs', style.glyphs, 'Styles must reference glyphs hosted by Mapbox'));\n }\n\n /*\n * \"sprite\" is optional. If present, valid examples:\n * mapbox://sprites/penny/abcd1234\n * mapbox://sprites/mapbox/abcd1234/draft\n * mapbox://sprites/cyrus/abcd1234/abcd1234\n */\n const spriteUrlPattern = /^mapbox:\\/\\/sprites\\/([^/]*)\\/([^/]*)\\/?([^/]*)?$/;\n if (!isValid(style.sprite, spriteUrlPattern)) {\n errors.push(new ValidationError('sprite', style.sprite, 'Styles must reference sprites hosted by Mapbox'));\n }\n\n /*\n * \"visibility\" is optional. If present, valid examples:\n * \"private\"\n * \"public\"\n */\n const visibilityPattern = /^(public|private)$/;\n if (!isValid(style.visibility, visibilityPattern)) {\n errors.push(new ValidationError('visibility', style.visibility, 'Style visibility must be public or private'));\n }\n\n if (style.protected !== undefined && !isBoolean(style.protected)) {\n errors.push(new ValidationError('protected', style.protected, 'Style protection must be true or false'));\n }\n\n return errors;\n}\n\n/**\n * Validate a Mapbox GL style against the style specification and check for\n * compatibility with the Mapbox Styles API.\n *\n * @param {Object} style The style to be validated.\n * @returns {Array}\n * @example\n * var validateMapboxApiSupported = require('mapbox-gl-style-spec/lib/validate_style_mapbox_api_supported.js');\n * var errors = validateMapboxApiSupported(style);\n */\nexport default function validateMapboxApiSupported(style: MapboxStyleSpecification, styleSpec: StyleReference = v8): ValidationErrors {\n let s = style;\n try {\n s = readStyle(s);\n } catch (e) {\n return [e] as ValidationErrors;\n }\n\n let errors = validateStyle(s, styleSpec)\n .concat(getRootErrors(s, Object.keys(v8.$root)));\n\n let sourcesCount = 0;\n if (s.sources) {\n const sourcesErrors = getSourcesErrors(s.sources);\n sourcesCount += sourcesErrors.sourcesCount;\n errors = errors.concat(sourcesErrors.errors);\n }\n\n if (s.imports) {\n const importsErrors = getImportErrors(s.imports);\n errors = errors.concat(importsErrors);\n }\n\n errors = errors.concat(getMaxSourcesErrors(sourcesCount));\n\n return errors;\n}\n","import v8 from './reference/v8.json';\nimport latest from './reference/latest';\nimport format from './format';\nimport migrate from './migrate';\nimport composite from './composite';\nimport derefLayers from './deref';\nimport diff from './diff';\nimport ValidationError from './error/validation_error';\nimport ParsingError from './error/parsing_error';\nimport {StyleExpression, isExpression, createExpression, createPropertyExpression, normalizePropertyExpression, ZoomConstantExpression, ZoomDependentExpression, StylePropertyFunction} from './expression/index';\nimport featureFilter, {isExpressionFilter} from './feature_filter/index';\nimport convertFilter from './feature_filter/convert';\nimport Color from './util/color';\nimport {createFunction, isFunction} from './function/index';\nimport convertFunction from './function/convert';\nimport {eachSource, eachLayer, eachProperty} from './visit';\nimport validate from './validate_style';\nimport validateMapboxApiSupported from './validate_mapbox_api_supported';\n\ntype ExpressionType = 'data-driven' | 'color-ramp' | 'data-constant' | 'constant';\n\ntype ExpressionParameter =\n | 'zoom'\n | 'pitch'\n | 'feature'\n | 'raster-value'\n | 'feature-state'\n | 'line-progress'\n | 'measure-light'\n | 'heatmap-density'\n | 'sky-radial-progress'\n | 'distance-from-center'\n | 'raster-particle-speed';\n\nexport type ExpressionSpecification = {\n interpolated: boolean,\n parameters?: ExpressionParameter[],\n relaxZoomRestriction?: boolean\n};\n\nexport type ArrayPropertySpecification =\n {\n type: 'array';\n 'property-type': ExpressionType;\n value: 'enum';\n expression?: ExpressionSpecification,\n transition?: boolean,\n default?: string[],\n length?: number,\n values?: {[_: string]: unknown},\n experimental?: boolean,\n private?: boolean,\n requires?: unknown,\n appearance?: boolean,\n tokens?: never,\n minimum?: never,\n maximum?: never,\n } | {\n type: 'array';\n 'property-type': ExpressionType;\n value: 'number';\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: number[];\n minimum?: number;\n maximum?: number;\n length?: number;\n period?: number;\n units?: string;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n values?: never;\n } | {\n type: 'array';\n 'property-type': ExpressionType;\n value: 'string';\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string[];\n length?: number;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n minimum?: never;\n maximum?: never;\n values?: never;\n };\n\nexport type BooleanPropertySpecification = {\n type: 'boolean';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: boolean;\n overridable?: boolean;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n};\n\nexport type ColorPropertySpecification = {\n type: 'color';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string;\n 'use-theme'?: boolean;\n overridable?: boolean;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n};\n\nexport type EnumPropertySpecification = {\n type: 'enum';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string;\n values?: {[_: string]: unknown};\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n};\n\nexport type FormattedPropertySpecification = {\n type: 'formatted';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string;\n tokens?: boolean;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n};\n\nexport type NumberPropertySpecification = {\n type: 'number';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: number;\n minimum?: number;\n maximum?: number;\n period?: number;\n units?: string;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n tokens?: never;\n};\n\nexport type ResolvedImagePropertySpecification = {\n type: 'resolvedImage';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string;\n tokens?: boolean;\n 'use-theme'?: boolean;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n};\n\nexport type StringPropertySpecification = {\n type: 'string';\n 'property-type': ExpressionType;\n expression?: ExpressionSpecification;\n transition?: boolean;\n default?: string;\n tokens?: boolean;\n experimental?: boolean;\n private?: boolean;\n requires?: unknown;\n appearance?: boolean;\n};\n\n/**\n * A style property specification is used to describe a value of some style property reference in the v8.json\n */\nexport type StylePropertySpecification =\n | ArrayPropertySpecification\n | BooleanPropertySpecification\n | ColorPropertySpecification\n | EnumPropertySpecification\n | FormattedPropertySpecification\n | NumberPropertySpecification\n | ResolvedImagePropertySpecification\n | StringPropertySpecification;\n\nconst expression = {\n StyleExpression,\n isExpression,\n isExpressionFilter,\n createExpression,\n createPropertyExpression,\n normalizePropertyExpression,\n ZoomConstantExpression,\n ZoomDependentExpression,\n StylePropertyFunction\n};\n\nconst styleFunction = {\n convertFunction,\n createFunction,\n isFunction\n};\n\nconst visit = {eachSource, eachLayer, eachProperty};\n\nexport {\n v8,\n latest,\n format,\n migrate,\n composite,\n derefLayers,\n diff,\n ValidationError,\n ParsingError,\n expression,\n featureFilter,\n convertFilter,\n Color,\n styleFunction as function,\n validate,\n validateMapboxApiSupported,\n visit\n};\n"],"names":["stringOrChar","stringify","passedObj","options","indent","JSON","undefined","slice","maxLength","Infinity","replacer","_stringify","obj","currentIndent","reserved","toJSON","string","length","prettified","replace","match","stringLiteral","parse","nextIndent","items","index","start","end","Array","isArray","push","keys","Object","key","keyPart","value","join","sortKeysBy","reference","result","format","style","space","$root","layers","map","layer","stringifyPretty","getPropertyReference","propertyName","i","Reference","layout","paint","eachSource","callback","k","sources","eachLayer","eachProperty","inner","propertyType","type","properties","forEach","path","id","set","x","eachLayout","indexOf","eachPaint","resolveConstant","constants","isFunction","stops","renameProperty","from","to","version","source","url","coordinates","coord","reverse","property","stop","migrateFontstackURL","input","inputParsed","URL","inputPathnameParts","pathname","split","protocol","hostname","assert","decodeURI","predicate","Error","glyphs","migrateFontStack","font","splitAndTrim","s","trim","firstSymbolLayer","symbolLayers","splice","concat","ParsingError","constructor","message","Scope","parent","bindings","name","expression","get","has","NullType","kind","NumberType","StringType","BooleanType","ColorType","ObjectType","ValueType","ErrorType","CollatorType","FormattedType","ResolvedImageType","array","itemType","N","toString","valueMemberTypes","checkSubtype","expected","t","memberType","isValidType","provided","allowedTypes","some","isValidNativeType","typeEquals","a","b","kCSSColorTable","clamp_css_byte","Math","round","clamp_css_float","f","parse_css_int","str","parseFloat","parseInt","parse_css_float","css_hue_to_rgb","m1","m2","h","parseCSSColor","css_str","toLowerCase","iv","substr","op","ep","fname","params","alpha","pop","l","exports","e","number","color","Color","r","g","d","rgba","toNonPremultipliedRenderColor","lut","NonPremultipliedRenderColor","toPremultipliedRenderColor","PremultipliedRenderColor","clone","RenderColor","premultiplied","image","height","N2","r0","floor","g0","b0","r1","ceil","g1","b1","rw","gw","bw","data","i0","i1","i2","i3","i4","i5","i6","i7","lerp","toArray","toHslaArray","invA","red","min","max","green","blue","delta","toArray01","toArray01Scaled","scale","toArray01Linear","pow","black","white","transparent","Collator","caseSensitive","diacriticSensitive","locale","sensitivity","collator","Intl","usage","compare","lhs","rhs","resolvedLocale","resolvedOptions","FormattedSection","text","fontStack","textColor","normalize","Formatted","sections","fromString","unformatted","isEmpty","section","hasPrimary","factory","serialize","serialized","primaryId","getPrimary","separator","ImageId","iconsetId","isEqual","ImageVariant","sx","sy","scaleSelf","factor","yFactor","ResolvedImage","primaryOptions","secondaryId","secondaryOptions","available","primaryName","secondaryName","hasSecondary","getSecondary","build","validateRGBA","validateHSLA","isValue","mixed","item","typeOf","String","Literal","args","context","error","expectedType","evaluate","eachChild","outputDefined","RuntimeError","types","boolean","object","Assertion","parsed","ctx","fn","every","arg","FormatExpression","firstArg","nextTokenMayBeObject","parseObjectValue","lastExpression","content","evaluateSection","evaluatedContent","isImageOptions","ImageExpression","inputPrimary","inputSecondary","inputPrimaryOptions","inputSecondaryOptions","_imageWarnHistory","namePrimary","nameSecondary","paramsPrimary","iconsetIdPrimary","iconset","paramsSecondary","iconsetIdSecondary","nextArgId","imageExpression","tryParseImage","imageName","tryParseOptions","optionsContext","parsedParams","childContext","typeAnnotation","evaluateParams","err","availableImages","serializeOptions","getType","val","isString","isNumber","isBoolean","isObject","Number","Boolean","Coercion","arrayLength","member","parsedMember","registry","c","parseColor","num","isNaN","valueToString","child","geometryTypes","EvaluationContext","scope","iconImageUseTheme","globals","feature","featureState","formattedSection","_parseColorCache","canonical","featureTileCoord","featureDistanceData","geometryType","geometry","canonicalID","measureLight","_","brightness","distanceFromCenter","center","y","dX","dY","bX","bearing","bY","dist","cached","getConfig","CompoundExpression","overloadIndex","_evaluate","_overloadIndex","definition","definitions","overloads","availableOverloads","overloadParams","signatureContext","ParsingContext","_scope","parsedArgs","argParseFailed","errors","signatures","stringifySignature","actualTypes","register","signature","CollatorExpression","Point","prototype","add","p","_add","sub","_sub","multByPoint","_multByPoint","divByPoint","_divByPoint","mult","_mult","div","_div","rotate","_rotate","rotateAround","_rotateAround","matMult","m","_matMult","unit","_unit","perp","_perp","_round","mag","sqrt","equals","other","distSqr","dx","dy","angle","atan2","angleTo","angleWith","angleWithSep","cos","sin","convert","calculateSignedArea","ring","sum","len","j","p1","p2","classifyRings","rings","maxRings","polygons","polygon","ccw","area","abs","updateBBox","bbox","boxWithinBox","bbox1","bbox2","onBoundary","x1","y1","x2","y2","rayIntersect","pointWithinPolygon","point","trueOnBoundary","inside","len2","q1","q2","v1","v2","twoSided","x3","y3","det1","det2","segmentIntersectSegment","vectorP","vectorQ","EXTENT","mercatorXfromLng","lng","mercatorYfromLat","lat","PI","log","tan","getTileCoordinates","tilesAtZoom","z","pointWithinPolygons","lineIntersectPolygon","lineStringWithinPolygon","line","lineStringWithinPolygons","getTilePolygon","getTilePolygons","updatePoint","polyBBox","worldSize","halfWorldSize","shift","resetBBox","getTilePoints","pointBBox","shifts","tilePoints","points","getTileLines","lineBBox","tileLines","tileLine","pointsWithinPolygons","polygonGeometry","tilePolygon","tilePolygons","linesWithinPolygons","Within","geojson","geometries","features","factors","kilometers","miles","nauticalmiles","meters","metres","yards","feet","inches","RE","FE","E2","RAD","CheapRuler","fromTile","units","n","atan","exp","coslat","w2","w","kx","ky","distance","wrap","destination","offset","lineDistance","total","along","p0","interpolate","pointToSegmentDistance","pointOnLine","minDist","minX","minY","minI","minT","sqDist","lineSlice","tmp","lineSliceAlong","bufferPoint","buffer","v","bufferBBox","insideBBox","deg","TinyQueue","_down","_up","top","bottom","peek","pos","current","halfLength","bestChild","right","compareMax","MIN_POINT_SIZE","MIN_LINE_POINT_SIZE","isDefaultBBOX","defualtBBox","getRangeSize","range","isRangeSafe","threshold","ret","console","warn","splitRange","isLine","size","size1","range1","range2","getBBox","pointSets","getPolygonBBox","bboxToBBoxDistance","ruler","NaN","lngFromMercatorX","latFromMercatorY","getLngLatPoint","getLngLatPoints","coords","pointToLineDistance","nearestPoint","pointsToLineDistance","rangeA","rangeB","subLine","segmentToSegmentDistance","dist1","dist2","lineToLineDistance","line1","line2","pointsToPointsDistance","pointSet1","pointSet2","pointToPolygonDistance","ringLen","lineToPolygonDistance","polygonIntersect","polygon1","polygon2","polygonToPolygonDistance","currentMiniDist","ring1","len1","ring2","updateQueue","distQueue","miniDist","r2","tempDist","pointSetToPolygonDistance","initialDistPair","setThreshold","distPair","newRanges","pointSetsDistance","isLine1","isLine2","set1Threshold","set2Threshold","newRangesA","newRangesB","pointSetToLinesDistance","pointSet","lines","pointSetToPolygonsDistance","polygonsToPolygonsDistance","polygons1","polygons2","pointsToGeometryDistance","originGeometry","lngLatPoints","linesToGeometryDistance","lngLatLines","lngLatLine","polygonsToGeometryDistance","lngLatPolygons","lngLatPolygon","isTypeValid","Distance","isFeatureConstant","test","Config","featureConstant","isStateConstant","isGlobalPropertyConstant","FQIDSeparator","makeConfigFQID","ownScope","contextScope","filter","coerceValue","clampToAllowedNumber","step","configKey","configScopeValue","configKeyValue","configScope","fqid","config","isConstant","default","values","minValue","maxValue","stepValue","defaultValue","originalScope","includes","res","Var","boundExpression","part","expr","_parse","annotate","Expr","actual","ec","isTypeAnnotation","childrenConstant","findStopLessThanOrEqualTo","lastIndex","lowerIndex","upperIndex","currentIndex","currentValue","nextValue","Step","labels","outputs","label","outputType","labelKey","valueKey","stopCount","out","module","UnitBezier","p1x","p1y","p2x","p2y","cx","bx","ax","cy","by","ay","sampleCurveX","sampleCurveY","sampleCurveDerivativeX","solveCurveX","epsilon","d2","t0","t1","solve","Xn","Yn","Zn","t2","t3","deg2rad","rad2deg","xyz2lab","lab2xyz","xyz2rgb","rgb2xyz","rgbToLab","rgbColor","labToRgb","labColor","interpolateLab","interpolateNumber","rgbToHcl","hclToRgb","hclColor","interpolateHue","interpolateHcl","lab","forward","hcl","Interpolate","operator","interpolation","interpolationFactor","lower","upper","exponentialInterpolation","base","controlPoints","ub","rest","outputLower","outputUpper","lowerValue","upperValue","difference","progress","Coalesce","needsAnnotation","argCount","firstImage","Let","binding","At","AtInterpolated","fraction","In","needle","haystack","IndexOf","fromIndex","Match","inputType","cases","otherwise","labelContext","MAX_SAFE_INTEGER","output","sortedLabels","sort","groupedByOutput","outputLookup","outputIndex","coerceLabel","Case","branches","Slice","beginIndex","endIndex","Split","delimiter","isComparableType","eq","neq","lt","gt","lteq","gteq","eqCollate","neqCollate","ltCollate","gtCollate","lteqCollate","gteqCollate","makeComparison","compareBasic","compareWithCollator","isOrderComparison","Comparison","hasUntypedArgument","rt","Equals","NotEquals","LessThan","GreaterThan","LessThanOrEqual","GreaterThanOrEqual","NumberFormat","currency","minFractionDigits","maxFractionDigits","minimumFractionDigits","maximumFractionDigits","Length","mulberry32","imul","expressions","hsla","colorFunction","binarySearch","varargs","hashString","hash","char","charCodeAt","typeToString","worldview","hasActiveFloors","activeFloors","floorIds","zoom","pitch","heatmapDensity","lineProgress","rasterValue","rasterParticleSpeed","skyRadialProgress","accumulated","LN2","E","LN10","log2","asin","acos","isSupportedScript","toUpperCase","seed","seedVal","random","getConfigDependencies","singleConfig","Set","isIndoorDependent","success","expressionHasParameter","parameter","parameters","supportsPropertyExpression","spec","supportsLightExpression","supportsZoomExpression","supportsLineProgressExpression","supportsInterpolation","interpolated","identityFunction","createFunction","propertySpec","isColor","zoomAndFeatureDependent","featureDependent","zoomDependent","assign","colorSpace","colorSpaces","innerFun","hashedStops","categoricalKeyType","evaluateExponentialFunction","evaluateIntervalFunction","evaluateCategoricalFunction","create","evaluateIdentityFunction","featureFunctions","zoomStops","featureFunctionStops","interpolationType","bind","coalesce","keyType","evaluated","interp","colorspace","evaluatedLower","apply","evaluatedUpper","StyleExpression","_warningHistory","_options","_iconImageUseTheme","_evaluator","_defaultValue","getDefaultValue","_enumValues","configDependencies","expressionDependencies","evaluateWithoutErrorHandling","isExpression","createExpression","parser","getExpectedType","ZoomConstantExpression","isLightConstant","isLineProgressConstant","_styleExpression","isStateDependent","ZoomDependentExpression","createPropertyExpression","isZoomConstant","canRelaxZoomRestriction","relaxZoomRestriction","zoomCurve","findZoomCurve","StylePropertyFunction","specification","_parameters","_specification","deserialize","normalizePropertyExpression","constant","childResult","enum","formatted","resolvedImage","convertLiteral","convertFunction","convertIdentityFunction","tokens","convertTokenString","convertZoomAndPropertyFunction","convertZoomFunction","convertPropertyFunction","getInterpolateOperator","featureFunctionParameters","functionType","getFunctionType","appendStopPair","fixupDegenerateStepCurve","getFallback","isStep","curve","re","exec","literal","unbundle","valueOf","deepUnbundle","unbundledValue","isExpressionFilter","createFilter","layerType","needGeometry","needFeature","convertFilter","filterExp","staticFilter","extractStaticFilter","filterFunc","filterSpec","latest","compiledStaticFilter","globalProperties","dynamicFilterFunc","compiledDynamicFilter","geometryNeeded","dynamicFilter","isDynamicFilter","unionDynamicBranches","collapseDynamicBooleanExpressions","collapsed","collapsedExpression","subExpression","isBranchingDynamically","isRootExpressionDynamic","dynamicConditionExpressions","param","converted","convertComparisonOp","convertNegation","convertDisjunctionOp","convertInOp","convertHasOp","filters","_convertFilter","expectedTypes","children","typechecks","runtimeTypeChecks","conditions","negate","uniformTypes","uniqueValues","migrated","migrateToV8","migrateToExpressions","styleIDs","sourceIDs","compositedSourceLayers","compositeID","deref","refProperties","derefLayers","ref","deepEqual","operations","setStyle","addLayer","removeLayer","setPaintProperty","setLayoutProperty","setSlot","setFilter","addSource","removeSource","setGeoJSONSourceData","setLayerZoomRange","setLayerProperty","setCenter","setZoom","setBearing","setPitch","setSprite","setGlyphs","setTransition","setLight","setTerrain","setFog","setSnow","setRain","setCamera","setLights","setProjection","addImport","removeImport","updateImport","addIconset","removeIconset","sourceId","after","commands","command","sourcesRemoved","updateSource","canUpdateGeoJSON","before","prop","hasOwnProperty","diffSources","diffLayerPropertyChanges","layerId","klass","pluckId","indexById","group","diffLayers","beforeOrder","afterOrder","beforeIndex","reduce","afterIndex","tracker","clean","beforeLayer","afterLayer","insertBeforeLayerId","lastIndexOf","slot","minzoom","maxzoom","diffImports","importId","insertBefore","afterImport","beforeImport","diffIconsets","diffStyles","sprite","imports","transition","light","fog","snow","rain","projection","lights","camera","iconsets","removeOrAddSourceCommands","beforeLayers","beforeTerrain","terrain","ValidationError","identifier","__line__","ValidationWarning","validateImport","styleSpec","defineProperty","importSpec","enumerable","validateObject","valueSpec","import","validateStyle","validateArray","arraySpec","validateArrayElement","arrayElementValidator","validate","arrayElementSpec","minimum","maximum","function","$version","arrayIndex","validateNumber","specMin","specMax","hasObjectStops","validateFunction","functionValueSpec","stopKeyType","stopDomainValues","previousStopDomainValue","previousStopDomainZoom","isZoomFunction","isPropertyFunction","isZoomAndPropertyFunction","objectElementValidators","validateFunctionStops","validateFunctionDefault","validateFunctionStop","stopKey","nextStopDomainZoom","validateStopDomainValue","reportValue","isFinite","validateExpression","expressionContext","expressionObj","propertyKey","disallowedFilterParameters","checkDisallowedParameters","disallowedParameters","delete","allowedParameters","validateBoolean","validateColor","validateEnum","validateFilter","validateNonExpressionFilter","filter_operator","geometry_type","validateProperty","objectKey","layerSpec","useThemeMatch","transitionMatch","tokenMatch","example","expressionValue","validateAppearance","condition","appearance","validateCondition","validateProperties","paintProperties","layoutProperties","propertyValidationOptions","validatePaintProperty","validateLayoutProperty","validateLayer","otherLayer","sourceType","lineMetrics","validateSpec","appearances","validationErrors","dedupedNames","validateString","promoteId","validatePromoteId","validateSource","source_geojson","clusterProperties","propValue","mapExpr","reduceExpr","source_video","source_image","getSourceTypeValues","sourceArray","memo","onlyFeatureDependent","isValidUrl","allowRelativeUrls","isRelative","validateModel","validateLight","lightSpec","validateLights","lightType","otherLight","lightPropertySpec","validateTerrain","terrainSpec","validateFog","fogSpec","validateFormatted","validateImage","validateProjection","projectionSpec","isSourceIconset","validateIconset","VALIDATORS","arrayAsExpression","elementSpecs","elementValidators","elementSpecKey","elementSpec","validateElement","required","validateGlyphsUrl","latestStyleSpec","validateGlyphsURL","_validateStyle","sortErrors","o","$V0","$V1","$V2","$V3","$V4","$V5","$V6","$V7","$V8","$V9","trace","yy","symbols_","terminals_","productions_","performAction","anonymous","yytext","yyleng","yylineno","yystate","$$","_$","$0","$","first_line","table","defaultActions","parseError","recoverable","self","stack","vstack","lstack","TERROR","EOF","call","arguments","lexer","sharedState","setInput","yylloc","yyloc","ranges","getPrototypeOf","lex","token","symbol","state","action","yyval","newState","errStr","showPosition","loc","last_line","first_column","last_column","_input","_more","_backtrack","done","matched","conditionStack","ch","unput","oldLines","more","reject","backtrack_lexer","less","pastInput","past","upcomingInput","next","pre","test_match","indexed_rule","backup","matches","tempMatch","rules","_currentRules","flex","begin","popState","topState","pushState","stateStackSize","yy_","$avoiding_name_collisions","YY_START","Parser","require","readStyle","ArrayBuffer","isView","jsonlint","v8","validateStyleMin","SUPPORTED_SPEC_VERSION","MAX_SOURCES_IN_STYLE","isValid","regex","getSourceCount","getAllowedKeyErrors","allowed","acceptedSourceTypes","getSourceErrors","sourceKeys","sourceUrlPattern","getMaxSourcesErrors","sourcesCount","getSourcesErrors","sourceErrors","getImportErrors","validateImports","getRootErrors","sourcesErrors","specKeys","optionalRootProperties","allowedKeyErrors","glyphUrlPattern","spriteUrlPattern","visibilityPattern","visibility","protected","validateMapboxApiSupported","importsErrors","styleFunction","visit"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[0,7,26,29,30,39,105]}