wael-lib
Version:
Well-Known Text Arithmetic Expression Language
1 lines • 86.4 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","../../package.json","../../src/interpreter/scope.ts","../../src/interpreter/grammar.ts","../../src/lib.ts"],"names":["GeometryType","isType","feature","geometry","result","OutputFormat"],"mappings":"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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\";\nimport { objectToString } from './interpreter/helpers';\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 workingDirectory?: string;\n useStdLib?: 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 private history: { [identifier: string]: any } = {};\n static IDENTIFIER_LAST = '$?';\n static IDENTIFIER_OPTIONS = '$OPTIONS';\n static IDENTIFIER_HISTORY = '$HISTORY';\n\n constructor(\n initialOptions?: Options\n ) {\n this.options = {\n ...DEFAULT_OPTIONS,\n ...initialOptions,\n scope: initialOptions?.scope ?? Interpreter.createGlobalScope(),\n };\n\n const optionsVariable = {\n ...this.options\n };\n delete optionsVariable.scope;\n this.options.scope?.store(Wael.IDENTIFIER_OPTIONS, this.options);\n this.options.scope?.store(Wael.IDENTIFIER_HISTORY, this.history);\n\n // Import standard library\n Interpreter.evaluateInput(`${STD_LIB}`, this.options.scope);\n if (this.options?.useStdLib) {\n this.useStdLib();\n }\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 if (!this.options?.useStdLib && overrideOptions?.useStdLib) {\n this.useStdLib();\n }\n\n const result = Interpreter.evaluateInput(input, options.scope, options.workingDirectory);\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 this.history[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 private useStdLib() {\n Interpreter.evaluateInput(`Use(StdLib()) With (*)`, this.options.scope)\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 (!result?.hasOwnProperty('toString')) {\n if (typeof result === 'object') {\n return objectToString(result);\n }\n if (typeof result === 'string') {\n return `\"${result}\"`;\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 generateGeometries,\n geometryAccessor,\n getArrayLikeItems,\n getGeometryType,\n isAnyGeometryType,\n isGeometryType,\n isNumber,\n objectToString,\n toString,\n transform\n} from './helpers';\nimport { Scope, ScopeBindings } from './scope';\n\nimport { GRAMMAR } from './grammar';\nimport path from 'path';\nimport { readFileSync } from 'fs';\nimport syncFetch from 'sync-fetch'\n\nconst grammarString = GRAMMAR;\n\nexport namespace Interpreter {\n\n export const IMPORT_USING_ALL = '*';\n export const DEFAULT_EXPORT_BINDING = 'export'\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\n export const createGlobalScope = () => new Scope(undefined, undefined, STANDARD_LIBRARY);\n\n export function evaluateInput(input: string, initialScope?: Scope, workingDirectory = '.'): 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\n // Return function import object if populated\n const importObj = currentScope.useImports();\n if (importObj && Object.keys(importObj).length > 0) {\n if ((ret ?? null) !== null) {\n importObj[DEFAULT_EXPORT_BINDING] = ret\n }\n importObj.toString = function () {\n return objectToString(importObj);\n }\n return importObj;\n }\n\n // Otherwise return evaluation value\n return ret\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(path.join(workingDirectory, uri), 'utf8');\n }\n currentScope = currentScope.push();\n let ret = undefined;\n try {\n ret = convertToGeometry(JSON.parse(data));\n } catch {\n try {\n const libRet = evaluateInput(data, currentScope, workingDirectory);\n if (libRet) {\n ret = libRet\n }\n } catch {\n throw new Error(`Unable to import file: ${uri}`);\n }\n }\n currentScope = currentScope.pop() || GLOBAL_SCOPE;\n return ret;\n },\n ImportFunctionExp(_keyword, importFn) {\n return 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 }\n throw new Error(`Operator not supported: ${operator}`);\n },\n LogicalExp(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 \"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 GenerateSymbolExp(numExp, _symbol, valueExp) {\n return generateGeometries(numExp, valueExp);\n },\n FunctionCallExp(callable, p) {\n let fn = callable.eval();\n const params = p.eval();\n\n if ((fn ?? null) === null) {\n throw new Error(`${callable.sourceString} is: ${fn}`);\n }\n\n if (\n typeof fn === 'object' &&\n ((fn[DEFAULT_EXPORT_BINDING] ?? null) !== null)\n ) {\n fn = fn[DEFAULT_EXPORT_BINDING];\n }\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n fn.context = {\n currentScope\n }\n\n return fn(...params);\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 let isSpread = false;\n if (!Array.isArray(params)) {\n isSpread = params?.isSpread\n }\n params = Array.isArray(params) ? params : [params];\n let fnScope = currentScope;\n const fn = (...values: any[]) => {\n\n // Create new scope per function call.\n const contextScope = (fn as any)?.context?.currentScope || currentScope;\n currentScope = contextScope.push();\n currentScope.capture(fnScope);\n\n if (isSpread) {\n const geometries = turf.geometryCollection(values).geometry\n currentScope.store(params[0].identifier, geometries, undefined, false)\n } else {\n params.forEach((paramName: any, index: number) => {\n currentScope.store(paramName, values[index], undefined, false)\n });\n }\n const ret = body.eval();\n currentScope = currentScope.pop() || GLOBAL_SCOPE;\n return ret;\n };\n fn.toString = function () { return `Function(${p.sourceString} => ${body.sourceString})` }\n fn.toStringShort = function () { return `Function(${p.sourceString} => (...))` }\n return fn;\n },\n FunctionParameters_spread(_leftParen, _operator, identifier, _rightParen) {\n return {\n identifier: identifier.sourceString,\n isSpread: true\n };\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 GeometryCollectionParameters(list) {\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(multiPoint) {\n return multiPoint.eval();\n },\n MultiPoint(list) {\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 PointListLiteral(list) {\n return list.asIteration().children.map(c => c.eval());\n },\n PointListSpread(_op, collection) {\n return getArrayLikeItems(collection.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 throw new Error(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\nconst INDENT = ' ';\n\nexport const isAnyGeometryType = (value: any) => {\n const types = Object.values(GeometryType);\n for (const type of types) {\n