wael-lib
Version:
Well-Known Text Arithmetic Expression Language
1 lines • 79 kB
Source Map (JSON)
{"version":3,"sources":["/Users/jarran/projects/wael/dist/cjs/index.cjs","../../src/main.ts","../../src/interpreter/interpreter.ts","../../src/interpreter/types.ts","../../src/interpreter/helpers.ts","../../src/interpreter/scope.ts","../../src/interpreter/built-in-functions.ts","../../src/interpreter/grammar.ts","../../src/lib.ts"],"names":["GeometryType","isType","feature","geometry","result","OutputFormat"],"mappings":"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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;APm0BgB;AACA;AE9yBjB;AACP;AAEA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","file":"/Users/jarran/projects/wael/dist/cjs/index.cjs","sourcesContent":[null,"import * as turf from '@turf/turf';\nimport * as wellknown from 'wellknown';\n\nimport { Interpreter } from \"./interpreter/interpreter\";\nimport { STD_LIB } from './lib';\nimport { Scope } from \"./interpreter/scope\";\n\nexport enum OutputFormat {\n WKT = 'WKT',\n GeoJSON = 'GeoJSON'\n}\n\nexport interface Options {\n outputFormat?: OutputFormat,\n outputNonGeoJSON?: boolean;\n scope?: Scope;\n storeHistoricalEvaluations?: boolean;\n}\n\nexport const DEFAULT_OPTIONS: Options = {\n outputFormat: OutputFormat.WKT,\n storeHistoricalEvaluations: true\n}\n\nexport class Wael {\n private options: Options;\n private evaluationCount = 0;\n static IDENTIFIER_LAST = '$?';\n\n constructor(\n initialOptions?: Options\n ) {\n this.options = {\n ...DEFAULT_OPTIONS,\n ...initialOptions,\n scope: initialOptions?.scope ?? Interpreter.createGlobalScope(),\n };\n \n // Import standard library\n Interpreter.evaluateInput(`StdLib = ${STD_LIB}; Import(StdLib()) Using (*)`, this.options.scope)\n }\n\n getEvaluationCount(): number {\n return this.evaluationCount;\n }\n\n evaluate(input: string, overrideOptions?: Partial<Options>) {\n const options = {\n ...this.options,\n ...overrideOptions\n };\n\n const result = Interpreter.evaluateInput(input, options.scope);\n\n // Track evaluations\n options.scope?.store(Wael.IDENTIFIER_LAST, result);\n if (options.storeHistoricalEvaluations) {\n const indexedResultLabel = `$${this.evaluationCount}`;\n options.scope?.store(indexedResultLabel, result);\n }\n this.evaluationCount++;\n\n if (typeof result === 'object' && typeof result?.type === 'string') {\n switch(options?.outputFormat) {\n case OutputFormat.WKT:\n return wellknown.stringify(result);\n case OutputFormat.GeoJSON:\n return turf.feature(result) as any;\n default:\n break;\n }\n }\n \n const output = Wael.getOutputString(result, options.outputFormat);\n if (options.outputNonGeoJSON) {\n if (options.outputFormat === OutputFormat.GeoJSON) {\n return result ?? undefined;\n }\n return output;\n } else {\n const outputString = typeof output === 'string' ? output : JSON.stringify(output, undefined, 2)\n throw new Error(`Invalid '${options.outputFormat}' evaluation result: ${outputString}`)\n }\n }\n\n static evaluate(input: string, options?: Partial<Options>) {\n return new Wael(options).evaluate(input);\n }\n\n private static getOutputString(result: any, outputFormat?: OutputFormat) {\n if (typeof result === 'object') {\n if (outputFormat === OutputFormat.WKT) {\n const properties = Object.keys(result).map(key => {\n return ` ${key} = ${result[key]?.toString()}`\n });\nreturn `(\n${properties.join(';\\n')}\n)`\n } \n }\n return `${result}`\n }\n}\n\n","// import ohm from 'ohm-js';\nimport * as ohm from 'ohm-js';\nimport * as turf from '@turf/turf'\n\nimport { GeometryType, UNIT } from './types';\nimport {\n OperationNotSupported,\n arithmeticOperationExp,\n convertToGeometry,\n geometryAccessor,\n getArrayLikeItems,\n getGeometryType,\n isAnyGeometryType,\n isGeometryType,\n isNumber,\n toString,\n transform\n} from './helpers';\nimport { Scope, ScopeBindings } from './scope';\n\nimport { BuiltInFunctions } from './built-in-functions';\nimport { GRAMMAR } from './grammar';\nimport { readFileSync } from 'fs';\nimport syncFetch from 'sync-fetch'\n\nconst grammarString = GRAMMAR;\n\nexport namespace Interpreter {\n\n export const IMPORT_DEFAULT_IDENTIFIER = 'Default';\n export const IMPORT_USING_ALL = '*';\n \n export const STANDARD_LIBRARY: ScopeBindings = {};\n const math: { [prop: string]: any } = {};\n Object.getOwnPropertyNames(Math).forEach(prop => {\n math[prop] = (Math as any)[prop];\n });\n STANDARD_LIBRARY['Math'] = math;\n STANDARD_LIBRARY['Flatten'] = BuiltInFunctions.Flatten;\n STANDARD_LIBRARY['PointCircle'] = BuiltInFunctions.PointCircle;\n STANDARD_LIBRARY['PointGrid'] = BuiltInFunctions.PointGrid;\n STANDARD_LIBRARY['ToLineString'] = BuiltInFunctions.ToLineString;\n STANDARD_LIBRARY['ToMultiPoint'] = BuiltInFunctions.ToMultiPoint;\n STANDARD_LIBRARY['ToPolygon'] = BuiltInFunctions.ToPolygon;\n STANDARD_LIBRARY['ToGeometryCollection'] = BuiltInFunctions.ToGeometryCollection;\n STANDARD_LIBRARY['_Rotate'] = BuiltInFunctions.Rotate;\n STANDARD_LIBRARY['_Round'] = BuiltInFunctions.Round;\n\n export const createGlobalScope = () => new Scope(undefined, undefined, STANDARD_LIBRARY);\n \n export function evaluateInput(input: string, initialScope?: Scope): any {\n const GLOBAL_SCOPE = createGlobalScope();\n let currentScope = initialScope || GLOBAL_SCOPE;\n const grammar = ohm.grammar(grammarString);\n const semantics = grammar.createSemantics();\n semantics.addOperation('eval', {\n stringLiteral(_leftQuote, str, _rightQuote) {\n return str.sourceString;\n },\n ImportAllExpression(exp) {\n const ret = exp.eval();\n if (ret) {\n // Return data import\n return ret;\n }\n\n // Return function import object\n const importObj = currentScope.useImports();\n return importObj;\n },\n ImportUsingExpression(importAllExp, _keyword, identifierList) {\n importAllExp.eval();\n const identifiers = identifierList.eval();\n let importObj;\n if (identifiers === IMPORT_USING_ALL) {\n importObj = currentScope.useNamedImports(Object.keys(currentScope.availableBindings));\n } else {\n importObj = currentScope.useNamedImports(identifiers);\n }\n return importObj;\n },\n ImportUsingAllParams(_) {\n return IMPORT_USING_ALL;\n },\n ImportExternalExp(_keyword, importUri) {\n const uri:string = importUri.eval();\n\n let data: string;\n if (uri.startsWith('http://') || uri.startsWith('https://')) {\n data = syncFetch(uri).text();\n } else {\n data = readFileSync(uri, 'utf8');\n }\n currentScope = currentScope.push();\n let ret = undefined;\n let bindings: ScopeBindings | undefined = undefined;\n try {\n ret = convertToGeometry(JSON.parse(data));\n } catch {\n try {\n const libRet = evaluateInput(data, currentScope);\n bindings = {};\n bindings[IMPORT_DEFAULT_IDENTIFIER] = libRet;\n } catch {\n throw new Error(`Unable to import file: ${uri}`);\n }\n }\n currentScope = currentScope.pop(bindings) || GLOBAL_SCOPE;\n return ret;\n },\n ImportFunctionExp(_keyword, importFn) {\n importFn.eval();\n },\n IfThenElseExp(_if, c, _then, exp1, _else, exp2) {\n const condition = c.eval();\n if (condition) {\n return exp1.eval();\n }\n return exp2.eval();\n },\n booleanValue(val) {\n const value = val.sourceString.toLocaleLowerCase();\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n throw new Error(`Invalid boolean value: ${val.sourceString}`);\n },\n EqualityExp(v1, op, v2) {\n const value1 = v1.eval();\n const operator = op.sourceString;\n const value2 = v2.eval();\n switch (operator.trim().toLocaleLowerCase()) {\n case \"==\":\n return value1 === value2;\n case \"!=\":\n return value1 !== value2;\n case \"and\":\n return value1 && value2;\n case \"or\":\n return value1 || value2;\n }\n throw new Error(`Operator not supported: ${operator}`);\n },\n NotExp(_, exp) {\n return !exp.eval();\n },\n geometryKeyword(keyword) {\n return keyword.sourceString;\n },\n CompareExp(v1, op, v2) {\n const value1 = v1.eval();\n if (!isNumber(value1)) {\n throw new Error(`Expected a number for ${v1.sourceString} but got: ${toString(value1)}`)\n }\n const operator = op.sourceString;\n const value2 = v2.eval();\n if (!isNumber(value2)) {\n throw new Error(`Expected a number for ${v2.sourceString} but got: ${toString(value2)}`)\n }\n switch (operator.trim()) {\n case \"<\":\n return value1 < value2;\n case \"<=\":\n return value1 <= value2;\n case \">\":\n return value1 > value2;\n case \">=\":\n return value1 >= value2;\n }\n throw new Error(`Operator not supported: ${operator}`);\n },\n ConcatExp(g1, _op, g2) {\n const geom1 = g1.eval();\n const geom2 = g2.eval();\n\n const type1 = getGeometryType(geom1);\n const type2 = getGeometryType(geom2);\n if (!type1 || !type2) {\n throw new Error(`Expected geometry types for concatenation but found geom1: ${toString(geom1)} and geom2: ${toString(geom2)}`);\n }\n \n if (type1 === type2) {\n\n const list1: any[] = getArrayLikeItems(geom1);\n const list2: any[] = getArrayLikeItems(geom2);\n \n // Point collections\n if (\n type1 === GeometryType.LineString || \n type1 === GeometryType.MultiPoint || \n type1 === GeometryType.GeometryCollection \n ) {\n const combined = list1.concat(list2);\n if (type1 === GeometryType.LineString) {\n return turf.lineString(combined).geometry;\n }\n if (type1 === GeometryType.MultiPoint) {\n return turf.multiPoint(combined).geometry;\n }\n if (type1 === GeometryType.GeometryCollection) {\n return turf.geometryCollection(combined).geometry;\n }\n }\n }\n \n if (\n type1 === GeometryType.LineString || \n type1 === GeometryType.MultiPoint \n ) {\n const list1: any[] = getArrayLikeItems(geom1);\n let list2: any;\n if (\n type2 === GeometryType.LineString || \n type2 === GeometryType.MultiPoint \n ) {\n list2 = getArrayLikeItems(geom2);\n } else {\n if (type2 === GeometryType.Point) {\n list2 = [geom2.coordinates];\n }\n }\n if (list2) {\n const combined = list1.concat(list2);\n if (type1 === GeometryType.LineString) {\n return turf.lineString(combined).geometry;\n }\n if (type1 === GeometryType.MultiPoint) {\n return turf.multiPoint(combined).geometry;\n }\n if (type1 === GeometryType.GeometryCollection) {\n return turf.geometryCollection(combined).geometry;\n }\n }\n }\n\n if (type1 === GeometryType.GeometryCollection) {\n return turf.geometryCollection(geom1.geometries.concat([geom2])).geometry;\n }\n\n if (type2 === GeometryType.GeometryCollection) {\n return turf.geometryCollection([geom1].concat(...geom2.geometries)).geometry;\n }\n\n return turf.geometryCollection([geom1, geom2]).geometry;\n },\n PipeExp(a, op, f) {\n const operator = op.sourceString;\n const val = a.eval();\n const fn = f.eval();\n\n if (operator === '|') {\n return fn(val);\n }\n\n if (operator === '|*') {\n return transform(val, fn);\n }\n\n const list: any[] = getArrayLikeItems(val);\n let listFn: any;\n switch (operator) {\n case '||':\n listFn = Array.prototype.map;\n break;\n case '|~':\n listFn = Array.prototype.filter;\n break;\n case '|>':\n listFn = Array.prototype.reduce;\n break;\n default:\n throw new Error(`Operator ${operator} not supported`)\n }\n\n if (isGeometryType(GeometryType.GeometryCollection, val)) {\n const mappedList = listFn.call(list, fn);\n if (isAnyGeometryType(mappedList)) {\n return mappedList;\n }\n return turf.geometryCollection(mappedList).geometry;\n }\n\n if (isGeometryType(GeometryType.LineString, val)) {\n let mappedList = listFn.call(\n list.map(coords => turf.point(coords).geometry),\n fn\n );\n if (isAnyGeometryType(mappedList)) {\n return mappedList;\n }\n mappedList = mappedList.map((v: any) => v.coordinates);\n return turf.lineString(mappedList).geometry;\n }\n\n if (isGeometryType(GeometryType.MultiPoint, val)) {\n let mappedList = listFn.call(\n list.map(coords => turf.point(coords).geometry),\n fn\n );\n if (isAnyGeometryType(mappedList)) {\n return mappedList;\n }\n mappedList = mappedList.map((v: any) => v.coordinates);\n return turf.multiPoint(mappedList).geometry;\n }\n\n // TODO -- Multi line types (Polygon, MultiLineString)\n\n throw Error(`Error mapping values to geometries`);\n },\n TopLevel(scopedExpressions, _end) {\n let lastValue = scopedExpressions.eval();\n return lastValue;\n },\n GenerateExp(_keyword, numExp, valueExp) {\n const num = numExp.eval();\n if (!Number.isInteger(num) && typeof num !== 'function') {\n throw new Error(`Expected integer but got: ${toString(num)}`);\n }\n let value = valueExp.eval();\n let mapFn;\n if (typeof value === 'function') {\n mapFn = value;\n } else if (isAnyGeometryType(value)) {\n mapFn = () => value;\n } else {\n throw new Error(`Expected geometry type or function but got: ${toString(value)}`);\n }\n const items: any[] = [];\n if (typeof num === 'function') { \n let i = 0;\n let condition = num(i);\n while(condition) {\n const result = mapFn(i);\n if (!isAnyGeometryType(result)) {\n throw new Error(`Expected geometry type return value but got: ${toString(result)}`);\n }\n items.push(result);\n condition = num(++i);\n }\n } else {\n for (let i=0; i<num; i++) {\n const result = mapFn(i);\n if (!isAnyGeometryType(result)) {\n throw new Error(`Expected geometry type return value but got: ${toString(result)}`);\n }\n items.push(result);\n }\n }\n return turf.geometryCollection(items).geometry;\n },\n FunctionCallExp(callable, p) {\n const fn = callable.eval();\n const params = p.eval();\n if (!fn) {\n throw new Error(`${callable.sourceString} is: ${fn}`);\n }\n const value = fn(...params);\n return value;\n },\n AccessibleExp_method(val, _accessOp, prop, optionalParams: ohm.Node) {\n const value = val.eval();\n const identifier = prop.sourceString;\n const isInvocation = optionalParams.children.length > 0;\n const parameters = isInvocation ? optionalParams.children.map(c => c.eval())[0] : [];\n\n // Function type accessor\n if (typeof value === 'function') {\n if (identifier === 'bind') {\n return value.bind(undefined, ...parameters)\n }\n throw new OperationNotSupported(`Method ${identifier} not supported on function type`);\n }\n \n // Geometry type accessor\n if (isAnyGeometryType(value)) {\n return geometryAccessor(val, prop, parameters);\n }\n\n // Object type accessor\n const resolvedValue = value[identifier];\n if (typeof resolvedValue === 'function' && isInvocation) {\n return resolvedValue(...parameters);\n }\n return resolvedValue;\n },\n Invocation(_leftParen, list, _rightParen) {\n return list.asIteration().children.map(c => c.eval());\n },\n FunctionExp(p, _, body) {\n let params = p.eval();\n params = Array.isArray(params) ? params : [params];\n let fnScope = currentScope;\n const fn = function(...values: any[]) {\n // Create new scope per function call.\n currentScope = currentScope.push({...fnScope.bindings});\n params.forEach((paramName: any, index: number) => {\n currentScope.store(paramName, values[index], undefined, false)\n });\n const ret = body.eval();\n const defaultBindings: ScopeBindings = {};\n defaultBindings[IMPORT_DEFAULT_IDENTIFIER] = ret;\n currentScope = currentScope.pop(defaultBindings) || GLOBAL_SCOPE;\n return ret;\n };\n const boundFn = fn.bind(currentScope);\n boundFn.toString = function() { return `Function(${p.sourceString} => ${body.sourceString})` }\n return boundFn;\n },\n FunctionParameters_multipleParams(_leftParen, identifierList, _rightParen) {\n const params = identifierList.asIteration().children.map(c => c.sourceString);\n return params;\n },\n FunctionParameters_single(identifier) {\n return [identifier.sourceString];\n },\n FunctionTextExp_keyword(_keyword, _leftParen, exp, _rightParen) {\n return exp.eval();\n },\n id(first, rest) {\n const key = first.sourceString + rest.sourceString;\n return currentScope.resolve(key);\n },\n AssignmentExp(exportKeyword, letKeyword, identifier, _operator, value) {\n const isPublic = !!(exportKeyword?.children?.length);\n const isLet = !!(letKeyword?.children?.length);\n const variableName = identifier.sourceString;\n const variableValue = value.eval();\n currentScope.store(variableName, variableValue, { public: isPublic }, !isLet);\n return variableValue;\n\n },\n ScopedExpressions_list(list) {\n const expressions = list.asIteration().children.map(c => c.eval());\n return expressions[expressions.length - 1];\n },\n GeneralExpression_rightComment(exp, _) {\n return exp.eval();\n },\n GeneralExpression_leftComment(_, exp) {\n return exp.eval();\n },\n Paren(_leftParen, exp, _rightParen) {\n return exp.eval();\n },\n OptionallyParen_paren(_leftParen, exp, _rightParen) {\n return exp.eval();\n },\n OptionallyBraced_brace(_leftBrace, exp, _rightBrace) {\n return exp.eval();\n },\n GeometryTaggedText(_keyword, exp) {\n return exp.eval();\n },\n GeometryCollectionText_present(_leftParen, list, _rightParen) {\n const geometries = ((list || []) as any).asIteration().children.map((c: any) => c.eval());\n return turf.geometryCollection(geometries).geometry;\n },\n MultiPolygonText_present(_leftParen, list, _rightParen) {\n const polygons = list.asIteration().children.map(c => c.eval());\n return turf.multiPolygon(polygons.map(p => p.coordinates)).geometry;\n },\n MultiLineStringText_present(_leftParen, list, _rightParen) {\n const lineStrings = list.asIteration().children.map(c => c.eval());\n return turf.multiLineString(lineStrings.map(p => p.coordinates)).geometry;\n },\n MultiPointText_present(_leftParen, list, _rightParen) {\n const points = list.eval();\n return turf.multiPoint(points.map((p: any) => p.coordinates)).geometry;\n },\n PolygonText_present(_leftParen, list, _rightParen) {\n const points = list.asIteration().children.map(c => c.eval());\n return turf.polygon(points.map(p => p.coordinates)).geometry;\n },\n LineStringText_present(_leftParen, list, _rightParen) {\n const points = list.eval();\n return turf.lineString(points.map((p: any) => p.coordinates)).geometry;\n },\n PointList(list) {\n return list.asIteration().children.map(c => c.eval());\n },\n PointTaggedText(_, point) {\n return point.eval();\n },\n PointText_present(_leftParen, point, _rightParen) {\n return point.eval();\n },\n Point(x, y) {\n return turf.point([x.eval(), y.eval()]).geometry;\n },\n ArithmeticAdd_plus(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => a + b);\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} + ${toString(b.eval())}`);\n },\n ArithmeticAdd_minus(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => a - b);\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} - ${toString(b.eval())}`);\n },\n ArithmeticMul_times(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => a * b);\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} * ${toString(b.eval())}`);\n },\n ArithmeticMul_divide(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => a / b);\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} / ${toString(b.eval())}`);\n },\n ArithmeticMul_mod(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => a % b);\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} % ${toString(b.eval())}`);\n },\n ArithmeticExp_power(a, _, b) {\n const result = arithmeticOperationExp(a, b, (a, b) => Math.pow(a, b));\n if (result !== undefined) {\n return result;\n }\n throw new OperationNotSupported(`${toString(a.eval())} ^ ${toString(b.eval())}`);\n },\n ArithmeticPri_paren(_l, exp, _r) {\n return exp.eval();\n },\n exactNumericLiteral_decimalWithWholeNumber(whole, _, decimal) {\n return parseFloat(`${whole.sourceString}.${decimal.sourceString}`);\n },\n exactNumericLiteral_decimalWithoutWholeNumber(_, decimal) {\n return parseFloat(`.${decimal.sourceString}`);\n },\n exactNumericLiteral_wholeNumber(whole) {\n return parseInt(`${whole.sourceString}`);\n },\n approximateNumericLiteral(mantissa, e, exponent) {\n return parseFloat(`${mantissa.eval()}${e}${exponent.eval()}`);\n },\n signedNumericLiteral_signPresent(sign, numericLiteral) {\n return parseFloat(`${sign.sourceString}${numericLiteral.eval()}`);\n },\n signedNumericLiteral_signMissing(numericLiteral) {\n return numericLiteral.eval();\n },\n comment(_a, _b, _c, _d, _e) {\n return UNIT;\n },\n emptySet(_val) {\n return UNIT;\n }\n });\n \n const matchResult = grammar.match(input);\n if (matchResult.message) {\n console.error(`Message: ${matchResult.message}`)\n }\n const sem = semantics(matchResult);\n const result = sem.eval();\n return result;\n }\n \n}","export type GeoJSON = any; // TODO -- use GeoJSON type\n\nexport enum GeometryType {\n Point = 'Point',\n LineString = 'LineString',\n Polygon = 'Polygon',\n MultiPoint = 'MultiPoint',\n MultiLineString = 'MultiLineString',\n MultiPolygon = 'MultiPolygon',\n GeometryCollection = 'GeometryCollection'\n}\n\nexport type Unit = null;\nexport const UNIT: Unit = null;\n\n","import * as turf from '@turf/turf';\n\nimport { GeometryType } from \"./types\";\nimport { Point } from 'geojson';\n\nexport const isAnyGeometryType = (value: any) => {\n const types = Object.values(GeometryType);\n for (const type of types) {\n if (isGeometryType(type, value)) {\n return true;\n }\n }\n return false;\n}\n\nexport const isGeometryType = (type: GeometryType, ...values: any) => {\n for (const value of values) {\n const isType = typeof value === 'object' &&\n value?.type === type ||\n value?.geometry?.type === type;\n if (!isType) {\n return false;\n }\n }\n return true;\n};\n\nexport const getGeometryType = (value: any, isForDisplay = false): GeometryType | undefined => {\n if(typeof value === 'object') {\n const type = value?.geometry?.type || value?.type\n if (isForDisplay && type === GeometryType.GeometryCollection) {\n return GeometryType.GeometryCollection;\n }\n return type;\n }\n return undefined;\n}\n\n\nexport const isAGeometryType = (value: any, ...types: GeometryType[]) => {\n for (const type of types) {\n if(isGeometryType(type, value)) {\n return true;\n }\n }\n return false;\n};\n\nexport const getArrayLikeItems = (value: any) => {\n if (\n isGeometryType(GeometryType.LineString, value) ||\n isGeometryType(GeometryType.MultiPoint, value)\n ) {\n return value.coordinates;\n } else if (isGeometryType(GeometryType.GeometryCollection, value)) {\n return value.geometries;\n }\n return undefined;\n};\n\nexport const isNumber = (...values: any) => {\n return isType('number', ...values);\n}\n\nexport const isString = (...values: any) => {\n return isType('string', ...values);\n};\n\nexport const isType = (type: string, ...values: any) => {\n for (const value of values) {\n const isType = typeof value === type;\n if (!isType) {\n return false;\n }\n }\n return true;\n}\n\nexport const arithmeticOperationExp = (a: any, b: any, op: (a: any, b: any) => any) => {\n return arithmeticOperation(a.eval(), b.eval(), op);\n}\n\nexport const arithmeticOperation = (A: any, B: any, op: (a: any, b: any) => any): any => {\n if (isNumber(A, B)) {\n return op(A, B); \n }\n if (isNumber(A) && isAnyGeometryType(B)) {\n return arithmet