ifc-expressions 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/IfcExpression.d.ts +1 -1
  2. package/dist/cjs/ExprVisitor.js +4 -4
  3. package/dist/cjs/ExprVisitor.js.map +1 -1
  4. package/dist/cjs/IfcExpression.js.map +1 -1
  5. package/dist/cjs/expression/Expr.js.map +1 -1
  6. package/dist/cjs/expression/Expr0.js.map +1 -1
  7. package/dist/cjs/expression/Expr1.js.map +1 -1
  8. package/dist/cjs/expression/Expr2.js.map +1 -1
  9. package/dist/cjs/expression/Expr2LeftBeforeRight.js.map +1 -1
  10. package/dist/cjs/expression/ExprBase.js.map +1 -1
  11. package/dist/cjs/expression/ExprEvalResult.js.map +1 -1
  12. package/dist/cjs/expression/LiteralExpr.js.map +1 -1
  13. package/dist/cjs/expression/function/Func.js +8 -8
  14. package/dist/cjs/expression/function/Func.js.map +1 -1
  15. package/dist/cjs/expression/function/FuncArg.js.map +1 -1
  16. package/dist/cjs/expression/function/FunctionExpr.js +6 -6
  17. package/dist/cjs/expression/function/FunctionExpr.js.map +1 -1
  18. package/dist/cjs/expression/function/IfcExpressionFunctions.js +6 -6
  19. package/dist/cjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  20. package/dist/cjs/expression/function/arg/FuncArgBase.js +2 -2
  21. package/dist/cjs/expression/function/arg/FuncArgBase.js.map +1 -1
  22. package/dist/cjs/expression/function/arg/FuncArgInt.js +5 -5
  23. package/dist/cjs/expression/function/arg/FuncArgInt.js.map +1 -1
  24. package/dist/cjs/expression/function/arg/FuncArgNumeric.js +2 -2
  25. package/dist/cjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
  26. package/dist/cjs/expression/function/impl/MAP.js +11 -11
  27. package/dist/cjs/expression/function/impl/MAP.js.map +1 -1
  28. package/dist/cjs/expression/function/impl/ROUND.js +9 -9
  29. package/dist/cjs/expression/function/impl/ROUND.js.map +1 -1
  30. package/dist/cjs/expression/numeric/DivideExpr.js +2 -2
  31. package/dist/cjs/expression/numeric/DivideExpr.js.map +1 -1
  32. package/dist/cjs/expression/numeric/MinusExpr.js +2 -2
  33. package/dist/cjs/expression/numeric/MinusExpr.js.map +1 -1
  34. package/dist/cjs/expression/numeric/MultiplyExpr.js +2 -2
  35. package/dist/cjs/expression/numeric/MultiplyExpr.js.map +1 -1
  36. package/dist/cjs/expression/numeric/NumParenthesisExpr.js +2 -2
  37. package/dist/cjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  38. package/dist/cjs/expression/numeric/NumericLiteralExpr.js +4 -4
  39. package/dist/cjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  40. package/dist/cjs/expression/numeric/PlusExpr.js +2 -2
  41. package/dist/cjs/expression/numeric/PlusExpr.js.map +1 -1
  42. package/dist/cjs/expression/reference/AttributeReferenceExpr.js +2 -2
  43. package/dist/cjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  44. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js +2 -2
  45. package/dist/cjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  46. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js +4 -4
  47. package/dist/cjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  48. package/dist/cjs/expression/reference/NestedObjectChainExpr.js +4 -4
  49. package/dist/cjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  50. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js +2 -2
  51. package/dist/cjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  52. package/dist/cjs/expression/string/StringConcatExpr.js +2 -2
  53. package/dist/cjs/expression/string/StringConcatExpr.js.map +1 -1
  54. package/dist/cjs/expression/string/StringLiteralExpr.js +4 -4
  55. package/dist/cjs/expression/string/StringLiteralExpr.js.map +1 -1
  56. package/dist/cjs/expression/structure/ArrayExpr.js +6 -6
  57. package/dist/cjs/expression/structure/ArrayExpr.js.map +1 -1
  58. package/dist/cjs/value/ArrayValue.js.map +1 -1
  59. package/dist/cjs/value/LiteralValue.js.map +1 -1
  60. package/dist/expression/Expr.d.ts +2 -2
  61. package/dist/expression/Expr0.d.ts +1 -1
  62. package/dist/expression/Expr1.d.ts +2 -2
  63. package/dist/expression/Expr2.d.ts +2 -2
  64. package/dist/expression/Expr2LeftBeforeRight.d.ts +2 -2
  65. package/dist/expression/ExprBase.d.ts +3 -3
  66. package/dist/expression/ExprEvalResult.d.ts +2 -2
  67. package/dist/expression/LiteralExpr.d.ts +1 -1
  68. package/dist/expression/function/Func.d.ts +2 -2
  69. package/dist/expression/function/FuncArg.d.ts +2 -2
  70. package/dist/expression/function/FunctionExpr.d.ts +6 -6
  71. package/dist/expression/function/IfcExpressionFunctions.d.ts +2 -2
  72. package/dist/expression/function/arg/FuncArgBase.d.ts +2 -2
  73. package/dist/expression/function/arg/FuncArgInt.d.ts +2 -2
  74. package/dist/expression/function/arg/FuncArgNumeric.d.ts +2 -2
  75. package/dist/expression/function/impl/MAP.d.ts +2 -2
  76. package/dist/expression/function/impl/ROUND.d.ts +3 -3
  77. package/dist/expression/numeric/MinusExpr.d.ts +1 -1
  78. package/dist/expression/numeric/MultiplyExpr.d.ts +1 -1
  79. package/dist/expression/numeric/NumericLiteralExpr.d.ts +2 -2
  80. package/dist/expression/reference/AttributeReferenceExpr.d.ts +1 -1
  81. package/dist/expression/reference/NestedObjectChainEndExpr.d.ts +1 -1
  82. package/dist/expression/reference/NestedObjectChainExpr.d.ts +1 -1
  83. package/dist/expression/string/StringLiteralExpr.d.ts +1 -1
  84. package/dist/expression/structure/ArrayExpr.d.ts +5 -5
  85. package/dist/mjs/ExprVisitor.js +2 -2
  86. package/dist/mjs/ExprVisitor.js.map +1 -1
  87. package/dist/mjs/IfcExpression.js.map +1 -1
  88. package/dist/mjs/expression/Expr.js.map +1 -1
  89. package/dist/mjs/expression/Expr0.js.map +1 -1
  90. package/dist/mjs/expression/Expr1.js.map +1 -1
  91. package/dist/mjs/expression/Expr2.js.map +1 -1
  92. package/dist/mjs/expression/Expr2LeftBeforeRight.js.map +1 -1
  93. package/dist/mjs/expression/ExprBase.js.map +1 -1
  94. package/dist/mjs/expression/ExprEvalResult.js.map +1 -1
  95. package/dist/mjs/expression/LiteralExpr.js.map +1 -1
  96. package/dist/mjs/expression/function/Func.js +2 -2
  97. package/dist/mjs/expression/function/Func.js.map +1 -1
  98. package/dist/mjs/expression/function/FuncArg.js.map +1 -1
  99. package/dist/mjs/expression/function/FunctionExpr.js +3 -3
  100. package/dist/mjs/expression/function/FunctionExpr.js.map +1 -1
  101. package/dist/mjs/expression/function/IfcExpressionFunctions.js +3 -3
  102. package/dist/mjs/expression/function/IfcExpressionFunctions.js.map +1 -1
  103. package/dist/mjs/expression/function/arg/FuncArgBase.js +1 -1
  104. package/dist/mjs/expression/function/arg/FuncArgBase.js.map +1 -1
  105. package/dist/mjs/expression/function/arg/FuncArgInt.js +2 -2
  106. package/dist/mjs/expression/function/arg/FuncArgInt.js.map +1 -1
  107. package/dist/mjs/expression/function/arg/FuncArgNumeric.js +1 -1
  108. package/dist/mjs/expression/function/arg/FuncArgNumeric.js.map +1 -1
  109. package/dist/mjs/expression/function/impl/MAP.js +4 -4
  110. package/dist/mjs/expression/function/impl/MAP.js.map +1 -1
  111. package/dist/mjs/expression/function/impl/ROUND.js +5 -5
  112. package/dist/mjs/expression/function/impl/ROUND.js.map +1 -1
  113. package/dist/mjs/expression/numeric/DivideExpr.js +1 -1
  114. package/dist/mjs/expression/numeric/DivideExpr.js.map +1 -1
  115. package/dist/mjs/expression/numeric/MinusExpr.js +1 -1
  116. package/dist/mjs/expression/numeric/MinusExpr.js.map +1 -1
  117. package/dist/mjs/expression/numeric/MultiplyExpr.js +1 -1
  118. package/dist/mjs/expression/numeric/MultiplyExpr.js.map +1 -1
  119. package/dist/mjs/expression/numeric/NumParenthesisExpr.js +1 -1
  120. package/dist/mjs/expression/numeric/NumParenthesisExpr.js.map +1 -1
  121. package/dist/mjs/expression/numeric/NumericLiteralExpr.js +2 -2
  122. package/dist/mjs/expression/numeric/NumericLiteralExpr.js.map +1 -1
  123. package/dist/mjs/expression/numeric/PlusExpr.js +1 -1
  124. package/dist/mjs/expression/numeric/PlusExpr.js.map +1 -1
  125. package/dist/mjs/expression/reference/AttributeReferenceExpr.js +1 -1
  126. package/dist/mjs/expression/reference/AttributeReferenceExpr.js.map +1 -1
  127. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js +1 -1
  128. package/dist/mjs/expression/reference/ElemObjectReferenceExpr.js.map +1 -1
  129. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js +2 -2
  130. package/dist/mjs/expression/reference/NestedObjectChainEndExpr.js.map +1 -1
  131. package/dist/mjs/expression/reference/NestedObjectChainExpr.js +2 -2
  132. package/dist/mjs/expression/reference/NestedObjectChainExpr.js.map +1 -1
  133. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js +1 -1
  134. package/dist/mjs/expression/reference/PropObjectReferenceExpr.js.map +1 -1
  135. package/dist/mjs/expression/string/StringConcatExpr.js +1 -1
  136. package/dist/mjs/expression/string/StringConcatExpr.js.map +1 -1
  137. package/dist/mjs/expression/string/StringLiteralExpr.js +2 -2
  138. package/dist/mjs/expression/string/StringLiteralExpr.js.map +1 -1
  139. package/dist/mjs/expression/structure/ArrayExpr.js +3 -3
  140. package/dist/mjs/expression/structure/ArrayExpr.js.map +1 -1
  141. package/dist/mjs/value/ArrayValue.js.map +1 -1
  142. package/dist/mjs/value/LiteralValue.js.map +1 -1
  143. package/dist/value/ArrayValue.d.ts +1 -1
  144. package/dist/value/LiteralValue.d.ts +1 -1
  145. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr\";\nimport { ExprKind } from \"./ExprKind\";\nimport { isNullish } from \"../IfcExpressionUtils\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n MISSING_OPERAND,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2012,\n UNKNOWN_FUNCTION = 2014,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {\n public readonly errorPathElement: string;\n public readonly path: Array<string>;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n errorPathElement: string,\n message?: any\n ) {\n super(exprKind, status, message);\n this.errorPathElement = errorPathElement;\n this.path = [errorPathElement];\n }\n\n public static bubbleUp(\n error: ExprEvalRefChainError,\n currentPathElement\n ): ExprEvalRefChainError {\n return {\n exprKind: error.exprKind,\n status: error.status,\n errorPathElement: error.errorPathElement,\n path: [currentPathElement, ...error.path],\n message: error.message,\n };\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalRefChainError = ExprEvalUnspecificError & {\n readonly errorPathElement: string;\n readonly path: Array<string>;\n};\n\nexport function isExprEvalRefChainError(\n arg: any\n): arg is ExprEvalRefChainError {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.ERROR &&\n Array.isArray(arg.path) &&\n typeof arg.errorPathElement === \"string\"\n );\n}\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/ExprEvalResult.ts"],"names":[],"mappings":"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","file":"expression/ExprEvalResult.js","sourcesContent":["import { Expr } from \"./Expr.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport { isNullish } from \"../IfcExpressionUtils\";\n\nexport enum ExprEvalStatus {\n SUCCESS = 1000,\n ERROR = 2000,\n UNDEFINED_RESULT = 2001,\n REFERENCE_ERROR = 2010,\n MISSING_OPERAND,\n MISSING_REQUIRED_FUNCTION_ARGUMENT = 2012,\n UNKNOWN_FUNCTION = 2014,\n CONSEQUENTIAL_ERROR = 2020,\n MATH_ERROR = 2030,\n TYPE_ERROR = 2040,\n}\n\nexport function isExprEvalStatus(candidate: number): boolean {\n return (\n typeof candidate === \"number\" &&\n typeof ExprEvalStatus[candidate] !== \"undefined\"\n );\n}\n\nexport type ExprEvalResult<T> = ExprEvalSuccess<T> | ExprEvalError;\n\nexport type ExprEvalSuccess<T> = {\n status: ExprEvalStatus;\n result: T;\n};\n\nexport function isExprEvalSuccess(arg: any): arg is ExprEvalSuccess<unknown> {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.SUCCESS &&\n arg.status < ExprEvalStatus.ERROR &&\n typeof arg.result !== \"undefined\"\n );\n}\n\nexport class ExprEvalSuccessObj<T> {\n public readonly result: T;\n public readonly status: ExprEvalStatus;\n\n constructor(result: T) {\n this.result = result;\n this.status = ExprEvalStatus.SUCCESS;\n }\n}\n\nexport class ExprEvalErrorObj {\n public readonly status: ExprEvalStatus;\n public readonly exprKind: ExprKind;\n public readonly message?: string;\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus = ExprEvalStatus.ERROR,\n message?: any\n ) {\n if (!isExprEvalStatus(status) || status < ExprEvalStatus.ERROR) {\n throw new Error(`ExprEvalStatus ${status} is not an error status\"`);\n }\n this.status = status;\n this.exprKind = exprKind;\n if (!isNullish(message)) {\n this.message = mapErrorObjectToMessage(message);\n }\n }\n}\n\nexport function mapErrorObjectToMessage(errorObjectOrMessage: any): string {\n if (typeof errorObjectOrMessage === \"string\") {\n return errorObjectOrMessage;\n } else if (errorObjectOrMessage instanceof Error) {\n return errorObjectOrMessage.message;\n } else if (Array.isArray(errorObjectOrMessage)) {\n return errorObjectOrMessage\n .map((m) => this.createErrorMessage(m))\n .join(\" \");\n }\n return JSON.stringify(errorObjectOrMessage);\n}\n\nexport class ExprEvalErrorUndefinedResult extends ExprEvalErrorObj {\n constructor(epxrKind: ExprKind) {\n super(\n epxrKind,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Expression evaluated to undefined or null - this should never happen\"\n );\n }\n}\n\nexport class ExprEvalRefChainErrorObj extends ExprEvalErrorObj {\n public readonly errorPathElement: string;\n public readonly path: Array<string>;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n errorPathElement: string,\n message?: any\n ) {\n super(exprKind, status, message);\n this.errorPathElement = errorPathElement;\n this.path = [errorPathElement];\n }\n\n public static bubbleUp(\n error: ExprEvalRefChainError,\n currentPathElement\n ): ExprEvalRefChainError {\n return {\n exprKind: error.exprKind,\n status: error.status,\n errorPathElement: error.errorPathElement,\n path: [currentPathElement, ...error.path],\n message: error.message,\n };\n }\n}\n\nexport class ExprEvalError1Obj extends ExprEvalErrorObj {\n public readonly sub: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n sub: ExprEvalResult<unknown>,\n status: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.sub = sub;\n }\n}\n\nexport class ExprEvalError2Obj extends ExprEvalErrorObj {\n public readonly left: ExprEvalResult<unknown>;\n public readonly right: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n left: ExprEvalResult<unknown>,\n right: ExprEvalResult<unknown>,\n status?: ExprEvalStatus,\n message?: any\n ) {\n super(exprKind, status, message);\n this.left = left;\n this.right = right;\n }\n}\n\nexport function isExprEvalError(arg: any): arg is ExprEvalError {\n return isExprEvalStatus(arg.status) && arg.status >= ExprEvalStatus.ERROR;\n}\n\nexport type ExprEvalError =\n | ExprEvalUnspecificError\n | ExprEvalReferencError\n | ExprEvalErrorUndefinedResult\n | ExprEvalMissingRequiredFunctionArgumentError\n | ExprEvalValueError<unknown>;\n\ntype ExprEvalUnspecificError = {\n readonly exprKind: ExprKind;\n readonly status: ExprEvalStatus;\n readonly message?: string;\n};\n\nexport type ExprEvalRefChainError = ExprEvalUnspecificError & {\n readonly errorPathElement: string;\n readonly path: Array<string>;\n};\n\nexport function isExprEvalRefChainError(\n arg: any\n): arg is ExprEvalRefChainError {\n return (\n isExprEvalStatus(arg.status) &&\n arg.status >= ExprEvalStatus.ERROR &&\n Array.isArray(arg.path) &&\n typeof arg.errorPathElement === \"string\"\n );\n}\n\nexport type ExprEvalReferencError = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.REFERENCE_ERROR;\n readonly expr: Expr<unknown>;\n};\n\nexport type ExprEvalConsequentialError1 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly cause: ExprEvalError;\n};\n\nexport class ExprEvalConsequentialError1Obj extends ExprEvalErrorObj {\n public readonly exprKind: ExprKind;\n public readonly cause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n cause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.exprKind = exprKind;\n this.cause = cause;\n }\n}\n\nexport type ExprEvalConsequentialError2 = ExprEvalUnspecificError & {\n readonly status: ExprEvalStatus.CONSEQUENTIAL_ERROR;\n readonly exprKind: ExprKind;\n readonly leftCause: ExprEvalResult<unknown>;\n readonly rightCause: ExprEvalResult<unknown>;\n};\n\nexport class ExprEvalConsequentialError2Obj extends ExprEvalErrorObj {\n public readonly leftCause: ExprEvalResult<unknown>;\n public readonly rightCause: ExprEvalResult<unknown>;\n\n constructor(\n exprKind: ExprKind,\n leftCause: ExprEvalResult<unknown>,\n rightCause: ExprEvalResult<unknown>,\n message?: any\n ) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n message || \"Consequential error\"\n );\n this.leftCause = leftCause;\n this.rightCause = rightCause;\n }\n}\n\nexport type ExprEvalFunctionEvaluationError = ExprEvalUnspecificError & {\n functionName: string;\n};\n\nexport type ExprEvalMissingRequiredFunctionArgumentError =\n ExprEvalFunctionEvaluationError & {\n argumentName: string;\n argumentIndex: number;\n };\n\nexport type ExprEvalFunctionEvaluationConsequentialError =\n ExprEvalFunctionEvaluationError & {\n cause: ExprEvalUnspecificError;\n };\n\nexport class ExprEvalFunctionEvaluationErrorObj extends ExprEvalErrorObj {\n public readonly functionName: string;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n functionName: string\n ) {\n super(exprKind, status, message);\n this.functionName = functionName;\n }\n}\n\nexport class ExprEvalFunctionEvaluationConsequentialErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly cause: ExprEvalError;\n\n constructor(exprKind: ExprKind, functionName: string, cause: ExprEvalError) {\n super(\n exprKind,\n ExprEvalStatus.CONSEQUENTIAL_ERROR,\n `Error evaluating function ${functionName}`,\n functionName\n );\n this.cause = cause;\n }\n}\n\nexport class ExprEvalMissingRequiredFunctionArgumentErrorObj extends ExprEvalFunctionEvaluationErrorObj {\n public readonly argumentName: string;\n public readonly argumentIndex: number;\n\n constructor(\n exprKind: ExprKind,\n message: any,\n functionName: string,\n argumentName: string,\n argumentIndex: number\n ) {\n super(\n exprKind,\n ExprEvalStatus.MISSING_REQUIRED_FUNCTION_ARGUMENT,\n message,\n functionName\n );\n this.argumentName = argumentName;\n this.argumentIndex = argumentIndex;\n }\n}\n\nexport type ExprEvalTypeError = ExprEvalUnspecificError & {\n status: ExprEvalStatus.TYPE_ERROR;\n};\n\nexport type ExprEvalValueError<T> = ExprEvalUnspecificError & {\n offendingValue: T;\n};\n\nexport class ExprEvalValueErrorObj<T> extends ExprEvalErrorObj {\n public readonly offendingValue: T;\n\n constructor(\n exprKind: ExprKind,\n status: ExprEvalStatus,\n message: any,\n offendingValue: T\n ) {\n super(exprKind, status, message);\n this.offendingValue = offendingValue;\n }\n}\n\nexport class ExprEvalTypeErrorObj<T> extends ExprEvalValueErrorObj<T> {\n constructor(exprKind: ExprKind, message: any, offendingValue: T) {\n super(exprKind, ExprEvalStatus.TYPE_ERROR, message, offendingValue);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/LiteralExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAgB,WAAkB,SAAQ,QAAW;IAGzD,YAAsB,QAAkB,EAAE,KAAQ;QAChD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAMM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;IACH,CAAC;IAES,WAAW,CAAC,KAAU;QAC9B,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF","file":"expression/LiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult\";\nimport { ExprBase } from \"./ExprBase\";\n\nexport abstract class LiteralExpr<V, E> extends ExprBase<E> {\n readonly value: V;\n\n protected constructor(exprKind: ExprKind, value: V) {\n super(exprKind);\n this.value = value;\n }\n\n protected abstract calculateResult(\n ctx: IfcExpressionContext\n ): E | ExprEvalError;\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n try {\n const result = this.calculateResult(ctx);\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n protected handleError(error: any): ExprEvalError {\n return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.ERROR, error);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/LiteralExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,gBAAgB,EAEhB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,OAAgB,WAAkB,SAAQ,QAAW;IAGzD,YAAsB,QAAkB,EAAE,KAAQ;QAChD,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAMM,QAAQ,CACb,GAAyB,EACzB,QAA0B;QAE1B,IAAI;YACF,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;SAC7C;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAChC;IACH,CAAC;IAES,WAAW,CAAC,KAAU;QAC9B,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3E,CAAC;CACF","file":"expression/LiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../context/IfcExpressionContext.js\";\nimport { ExprKind } from \"./ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"./ExprEvalResult\";\nimport { ExprBase } from \"./ExprBase\";\n\nexport abstract class LiteralExpr<V, E> extends ExprBase<E> {\n readonly value: V;\n\n protected constructor(exprKind: ExprKind, value: V) {\n super(exprKind);\n this.value = value;\n }\n\n protected abstract calculateResult(\n ctx: IfcExpressionContext\n ): E | ExprEvalError;\n\n public evaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalResult<E> {\n try {\n const result = this.calculateResult(ctx);\n return this.wrapInResultIfNecessary(result);\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n protected handleError(error: any): ExprEvalError {\n return new ExprEvalErrorObj(this.getKind(), ExprEvalStatus.ERROR, error);\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { IfcExpressionFunctionConfigException } from "./IfcExpressionFunctionConfigException";
1
+ import { IfcExpressionFunctionConfigException } from "./IfcExpressionFunctionConfigException.js";
2
2
  import { isNullish } from "../../IfcExpressionUtils";
3
3
  import { ExprEvalFunctionEvaluationConsequentialErrorObj, ExprEvalMissingRequiredFunctionArgumentErrorObj, ExprEvalSuccessObj, isExprEvalError, } from "../ExprEvalResult";
4
- import { ExprKind } from "../ExprKind";
4
+ import { ExprKind } from "../ExprKind.js";
5
5
  export class Func {
6
6
  constructor(name, args) {
7
7
  this.name = name;
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/Func.ts"],"names":[],"mappings":"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","file":"expression/function/Func.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity\";\nimport { IfcExpressionFunctionConfigException } from \"./IfcExpressionFunctionConfigException\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { FuncArg } from \"./FuncArg\";\nimport {\n ExprEvalError,\n ExprEvalFunctionEvaluationConsequentialErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult\";\nimport { ExprKind } from \"../ExprKind\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public evaluate(\n funcArgs: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const evaluatedArguments = this.getArgumentValues(funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, LiteralValueAnyArity>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return new ExprEvalFunctionEvaluationConsequentialErrorObj(\n ExprKind.FUNCTION,\n this.name,\n argValue\n );\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n evaluatedArguments: Map<string, ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> {\n return evaluatedArguments;\n }\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n provided: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<LiteralValueAnyArity>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n let j = 0;\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(currentArg.name, currentArg.transformValue(provided[i]));\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(\n currentArg.defaultValue as LiteralValueAnyArity\n )\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i\n );\n }\n }\n }\n }\n const transformedArguments = this.transformArguments(result);\n return result;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/Func.ts"],"names":[],"mappings":"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","file":"expression/function/Func.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { IfcExpressionFunctionConfigException } from \"./IfcExpressionFunctionConfigException.js\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { FuncArg } from \"./FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalFunctionEvaluationConsequentialErrorObj,\n ExprEvalMissingRequiredFunctionArgumentErrorObj,\n ExprEvalResult,\n ExprEvalSuccessObj,\n isExprEvalError,\n} from \"../ExprEvalResult\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport abstract class Func {\n protected name: string;\n protected formalArguments: Array<FuncArg<unknown>>;\n\n constructor(name: string, args: Array<FuncArg<unknown>>) {\n this.name = name;\n if (isNullish(this.name)) {\n throw new IfcExpressionFunctionConfigException(\n \"Function must have a name\"\n );\n }\n this.formalArguments = args;\n this.checkArgs(args);\n }\n\n public evaluate(\n funcArgs: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const evaluatedArguments = this.getArgumentValues(funcArgs);\n if (isExprEvalError(evaluatedArguments)) {\n return evaluatedArguments;\n }\n const argumentsReadyForUse = new Map<string, LiteralValueAnyArity>();\n for (const [argName, argValue] of evaluatedArguments.entries()) {\n if (isExprEvalError(argValue)) {\n return new ExprEvalFunctionEvaluationConsequentialErrorObj(\n ExprKind.FUNCTION,\n this.name,\n argValue\n );\n }\n argumentsReadyForUse.set(argName, argValue.result);\n }\n return this.calculateResult(argumentsReadyForUse);\n }\n\n /**\n * Subclasses must provide the funcation evaluation code here.\n * @param evaluatedArguments\n * @protected\n */\n protected abstract calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity>;\n\n /**\n * Override to transform individual arguments if needed. After this step, if any of the ExprEvalResult objects in the\n * returned array is an ExprEvalError, the function evaluation fails.\n * @param evaluatedArguments\n * @protected\n */\n protected transformArguments(\n evaluatedArguments: Map<string, ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> {\n return evaluatedArguments;\n }\n\n /**\n * Gets the argument values from the list of provided arguments in the form of 'name' -> ExprEvalResult (which may contain errors).\n * Generates an error if a required value is missing.\n * @param provided\n * @protected\n */\n protected getArgumentValues(\n provided: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): Map<string, ExprEvalResult<LiteralValueAnyArity>> | ExprEvalError {\n const result = new Map<string, ExprEvalResult<LiteralValueAnyArity>>();\n const numProvided = provided.length;\n if (!isNullish(this.formalArguments)) {\n let j = 0;\n for (let i = 0; i < this.formalArguments.length; i++) {\n const currentArg: FuncArg<unknown> = this.formalArguments[i];\n if (numProvided > i) {\n result.set(currentArg.name, currentArg.transformValue(provided[i]));\n } else {\n if (currentArg.hasDefaultValue()) {\n result.set(\n currentArg.name,\n new ExprEvalSuccessObj(\n currentArg.defaultValue as LiteralValueAnyArity\n )\n );\n }\n if (currentArg.required) {\n return new ExprEvalMissingRequiredFunctionArgumentErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Required argument ${currentArg.name}, expected at position ${i} (starting at 0), is missing`,\n this.name,\n currentArg.name,\n i\n );\n }\n }\n }\n }\n const transformedArguments = this.transformArguments(result);\n return result;\n }\n\n private checkArgs(args: Array<FuncArg<unknown>>): void {\n if (!Array.isArray(this.formalArguments)) {\n throw new IfcExpressionFunctionConfigException(\n \"Formal function arguments is not an array\"\n );\n }\n let optionalArgsReached: boolean = false;\n const names = new Set<string>();\n for (let i = 0; i < this.formalArguments.length; i++) {\n if (names.has(this.formalArguments[i].name)) {\n throw new IfcExpressionFunctionConfigException(\n `Duplicate argument name '${this.formalArguments[i].name}'.`\n );\n }\n if (optionalArgsReached) {\n if (this.formalArguments[i].required) {\n throw new IfcExpressionFunctionConfigException(\n `Optional arguments must follow required ones. Argument '${this.formalArguments[i].name}' is required but follows an optional one`\n );\n }\n } else {\n if (!this.formalArguments[i].required) {\n optionalArgsReached = true;\n }\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/FuncArg.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,OAAO,OAAO;IAKlB,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAgB;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,cAAc,CACnB,eAAqD;QAErD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACF","file":"expression/function/FuncArg.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity\";\nimport { ExprEvalResult } from \"../ExprEvalResult\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\n\nexport class FuncArg<T> {\n protected _required: boolean;\n protected _name: string;\n protected _defaultValue?: T;\n\n constructor(required: boolean, name: string, defaultValue?: T) {\n this._required = required;\n this._name = name;\n this._defaultValue = defaultValue;\n }\n\n /**\n * For the value provided for a specific invocation of the function, return an appropriate result (maybe some kind of type conversion or type check might happen here)\n *\n * @param invocationValue\n */\n public transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n\n get required(): boolean {\n return this._required;\n }\n\n get name(): string {\n return this._name;\n }\n\n get defaultValue(): T | undefined {\n return this._defaultValue;\n }\n\n hasDefaultValue(): boolean {\n return !isNullish(this._defaultValue);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/FuncArg.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,OAAO,OAAO;IAKlB,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAgB;QAC3D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,cAAc,CACnB,eAAqD;QAErD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,eAAe;QACb,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACF","file":"expression/function/FuncArg.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ExprEvalResult } from \"../ExprEvalResult.js\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\n\nexport class FuncArg<T> {\n protected _required: boolean;\n protected _name: string;\n protected _defaultValue?: T;\n\n constructor(required: boolean, name: string, defaultValue?: T) {\n this._required = required;\n this._name = name;\n this._defaultValue = defaultValue;\n }\n\n /**\n * For the value provided for a specific invocation of the function, return an appropriate result (maybe some kind of type conversion or type check might happen here)\n *\n * @param invocationValue\n */\n public transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n\n get required(): boolean {\n return this._required;\n }\n\n get name(): string {\n return this._name;\n }\n\n get defaultValue(): T | undefined {\n return this._defaultValue;\n }\n\n hasDefaultValue(): boolean {\n return !isNullish(this._defaultValue);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { isExprEvalSuccess } from "../ExprEvalResult";
2
- import { ExprKind } from "../ExprKind";
3
- import { Expr0 } from "../Expr0";
1
+ import { isExprEvalSuccess } from "../ExprEvalResult.js";
2
+ import { ExprKind } from "../ExprKind.js";
3
+ import { Expr0 } from "../Expr0.js";
4
4
  import { IfcExpressionFunctions } from "./IfcExpressionFunctions";
5
5
  import { isNullish } from "../../IfcExpressionUtils";
6
6
  export class FunctionExpr extends Expr0 {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/FunctionExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,KAA2B;IAK3D,YAAY,IAAY,EAAE,QAAmC;QAC3D,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACnD;IACH,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5D,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,aAAa,CAC3D,IAAI,CAAC,IAAI,EACT,iBAAiB,CAClB,CAAC;QACF,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;YACvC,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAChC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF","file":"expression/function/FunctionExpr.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext\";\nimport { ExprEvalError, isExprEvalSuccess } from \"../ExprEvalResult\";\nimport { Expr } from \"../Expr\";\nimport { ExprKind } from \"../ExprKind\";\nimport { Expr0 } from \"../Expr0\";\nimport { LiteralValue } from \"../../value/LiteralValue\";\nimport { Func } from \"./Func\";\nimport { IfcExpressionFunctions } from \"./IfcExpressionFunctions\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\n\nexport class FunctionExpr extends Expr0<LiteralValueAnyArity> {\n private name: string;\n private elements: Array<Expr<LiteralValue>>;\n private functionImplementation: Func;\n\n constructor(name: string, elements: Array<Expr<LiteralValue>>) {\n super(ExprKind.ARRAY);\n this.name = name;\n this.elements = elements;\n this.functionImplementation = IfcExpressionFunctions.getFunction(this.name);\n if (isNullish(this.functionImplementation)) {\n throw new Error(`No such function: ${this.name}`);\n }\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | LiteralValueAnyArity {\n const functionArguments = [];\n for (let i = 0; i < this.elements.length; i++) {\n const evalResult = this.elements[i].evaluate(ctx, localCtx);\n functionArguments.push(evalResult);\n }\n const evaluationResult = IfcExpressionFunctions.applyFunction(\n this.name,\n functionArguments\n );\n if (isExprEvalSuccess(evaluationResult)) {\n return evaluationResult.result;\n }\n return evaluationResult;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/FunctionExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,MAAM,OAAO,YAAa,SAAQ,KAA2B;IAK3D,YAAY,IAAY,EAAE,QAAmC;QAC3D,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;YAC1C,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACnD;IACH,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5D,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;QACD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,aAAa,CAC3D,IAAI,CAAC,IAAI,EACT,iBAAiB,CAClB,CAAC;QACF,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,EAAE;YACvC,OAAO,gBAAgB,CAAC,MAAM,CAAC;SAChC;QACD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF","file":"expression/function/FunctionExpr.js","sourcesContent":["import { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ExprEvalError, isExprEvalSuccess } from \"../ExprEvalResult.js\";\nimport { Expr } from \"../Expr.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { LiteralValue } from \"../../value/LiteralValue.js\";\nimport { Func } from \"./Func.js\";\nimport { IfcExpressionFunctions } from \"./IfcExpressionFunctions\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\n\nexport class FunctionExpr extends Expr0<LiteralValueAnyArity> {\n private name: string;\n private elements: Array<Expr<LiteralValue>>;\n private functionImplementation: Func;\n\n constructor(name: string, elements: Array<Expr<LiteralValue>>) {\n super(ExprKind.ARRAY);\n this.name = name;\n this.elements = elements;\n this.functionImplementation = IfcExpressionFunctions.getFunction(this.name);\n if (isNullish(this.functionImplementation)) {\n throw new Error(`No such function: ${this.name}`);\n }\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | LiteralValueAnyArity {\n const functionArguments = [];\n for (let i = 0; i < this.elements.length; i++) {\n const evalResult = this.elements[i].evaluate(ctx, localCtx);\n functionArguments.push(evalResult);\n }\n const evaluationResult = IfcExpressionFunctions.applyFunction(\n this.name,\n functionArguments\n );\n if (isExprEvalSuccess(evaluationResult)) {\n return evaluationResult.result;\n }\n return evaluationResult;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import { ExprEvalFunctionEvaluationErrorObj, ExprEvalStatus, } from "../ExprEvalResult";
2
2
  import { isNullish } from "../../IfcExpressionUtils";
3
- import { ExprKind } from "../ExprKind";
4
- import { MAP } from "./impl/MAP";
5
- import { ROUND } from "./impl/ROUND";
3
+ import { ExprKind } from "../ExprKind.js";
4
+ import { MAP } from "./impl/MAP.js";
5
+ import { ROUND } from "./impl/ROUND.js";
6
6
  const builtinFunctions = Object.freeze(new Map([
7
7
  ["MAP", new MAP()],
8
8
  ["ROUND", new ROUND()],
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAElC,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACpC,IAAI,GAAG,CAAe;IACpB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,OAAO,sBAAsB;IAC1B,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAAY,EACZ,YAAyD;QAEzD,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,IAAI,kCAAkC,CAC3C,QAAQ,CAAC,QAAQ,EACjB,cAAc,CAAC,gBAAgB,EAC/B,oBAAoB,IAAI,EAAE,EAC1B,IAAI,CACL,CAAC;SACH;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;CACF","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity\";\nimport { Func } from \"./Func\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { ExprKind } from \"../ExprKind\";\nimport { MAP } from \"./impl/MAP\";\nimport { ROUND } from \"./impl/ROUND\";\n\nconst builtinFunctions = Object.freeze(\n new Map<string, Func>([\n [\"MAP\", new MAP()],\n [\"ROUND\", new ROUND()],\n ])\n);\n\nexport class IfcExpressionFunctions {\n public static getFunction(name: string) {\n return builtinFunctions.get(name);\n }\n\n public static applyFunction(\n name: string,\n functionArgs: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const func = IfcExpressionFunctions.getFunction(name);\n if (isNullish(func)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNKNOWN_FUNCTION,\n `No such function ${name}`,\n name\n );\n }\n return func.evaluate(functionArgs);\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/IfcExpressionFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAElC,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAExC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CACpC,IAAI,GAAG,CAAe;IACpB,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC;IAClB,CAAC,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC;CACvB,CAAC,CACH,CAAC;AAEF,MAAM,OAAO,sBAAsB;IAC1B,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,aAAa,CACzB,IAAY,EACZ,YAAyD;QAEzD,MAAM,IAAI,GAAG,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;YACnB,OAAO,IAAI,kCAAkC,CAC3C,QAAQ,CAAC,QAAQ,EACjB,cAAc,CAAC,gBAAgB,EAC/B,oBAAoB,IAAI,EAAE,EAC1B,IAAI,CACL,CAAC;SACH;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;CACF","file":"expression/function/IfcExpressionFunctions.js","sourcesContent":["import {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { Func } from \"./Func.js\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { MAP } from \"./impl/MAP.js\";\nimport { ROUND } from \"./impl/ROUND.js\";\n\nconst builtinFunctions = Object.freeze(\n new Map<string, Func>([\n [\"MAP\", new MAP()],\n [\"ROUND\", new ROUND()],\n ])\n);\n\nexport class IfcExpressionFunctions {\n public static getFunction(name: string) {\n return builtinFunctions.get(name);\n }\n\n public static applyFunction(\n name: string,\n functionArgs: Array<ExprEvalResult<LiteralValueAnyArity>>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const func = IfcExpressionFunctions.getFunction(name);\n if (isNullish(func)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNKNOWN_FUNCTION,\n `No such function ${name}`,\n name\n );\n }\n return func.evaluate(functionArgs);\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { FuncArg } from "../FuncArg";
1
+ import { FuncArg } from "../FuncArg.js";
2
2
  import { isExprEvalSuccess, } from "../../ExprEvalResult";
3
3
  export class FuncArgBase extends FuncArg {
4
4
  constructor(required, name, defaultValue) {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAIL,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,OAAgB,WAAe,SAAQ,OAAU;IACrD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAgB;QAC3D,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CACZ,eAAqD;QAErD,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAC7B,eAAsD;QAEtD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CACzB,eAA8B;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF","file":"expression/function/arg/FuncArgBase.js","sourcesContent":["import { FuncArg } from \"../FuncArg\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccess,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity\";\n\nexport abstract class FuncArgBase<T> extends FuncArg<T> {\n constructor(required: boolean, name: string, defaultValue?: T) {\n super(required, name, defaultValue);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(invocationValue)) {\n return this.transformForTypeCheck(invocationValue);\n }\n return this.transformForError(invocationValue);\n }\n\n /**\n * Override to type-check the successfully evaluated invocationValue.\n * @param result\n * @protected\n */\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n\n /**\n * Override to transform the error result obtained from evaluating the invocation value.\n * @param invocationValue\n * @protected\n */\n protected transformForError(\n invocationValue: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/arg/FuncArgBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAIL,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,OAAgB,WAAe,SAAQ,OAAU;IACrD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAAgB;QAC3D,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CACZ,eAAqD;QAErD,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;YACtC,OAAO,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;SACpD;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACO,qBAAqB,CAC7B,eAAsD;QAEtD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACO,iBAAiB,CACzB,eAA8B;QAE9B,OAAO,eAAe,CAAC;IACzB,CAAC;CACF","file":"expression/function/arg/FuncArgBase.js","sourcesContent":["import { FuncArg } from \"../FuncArg.js\";\nimport {\n ExprEvalError,\n ExprEvalResult,\n ExprEvalSuccess,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\n\nexport abstract class FuncArgBase<T> extends FuncArg<T> {\n constructor(required: boolean, name: string, defaultValue?: T) {\n super(required, name, defaultValue);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(invocationValue)) {\n return this.transformForTypeCheck(invocationValue);\n }\n return this.transformForError(invocationValue);\n }\n\n /**\n * Override to type-check the successfully evaluated invocationValue.\n * @param result\n * @protected\n */\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n\n /**\n * Override to transform the error result obtained from evaluating the invocation value.\n * @param invocationValue\n * @protected\n */\n protected transformForError(\n invocationValue: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n return invocationValue;\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { FuncArgBase } from "./FuncArgBase";
2
2
  import { ExprEvalTypeErrorObj, } from "../../ExprEvalResult";
3
- import { ExprKind } from "../../ExprKind";
4
- import { NumericValue } from "../../../value/NumericValue";
3
+ import { ExprKind } from "../../ExprKind.js";
4
+ import { NumericValue } from "../../../value/NumericValue.js";
5
5
  export class FuncArgInt extends FuncArgBase {
6
6
  constructor(required, name, defaultValue) {
7
7
  super(required, name, defaultValue);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/arg/FuncArgInt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,MAAM,OAAO,UAAW,SAAQ,WAAyB;IACvD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAES,qBAAqB,CAC7B,eAAsD;QAEtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,oCAAoC,MAAM,EAAE,EACjE,MAAM,CACP,CAAC;SACH;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,qBAAqB,IAAI,CAAC,IAAI,gCAAgC,KAAK,EAAE,EACrE,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgInt.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult\";\nimport { ExprKind } from \"../../ExprKind\";\nimport { NumericValue } from \"../../../value/NumericValue\";\n\nexport class FuncArgInt extends FuncArgBase<NumericValue> {\n constructor(required: boolean, name: string, defaultValue?: NumericValue) {\n super(required, name, defaultValue);\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const result = invocationValue.result;\n if (!NumericValue.isNumericValueType(result)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a NumericValue, but was ${result}`,\n result\n );\n }\n const value = result.numericValue;\n if (value.isInteger()) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Value of argument ${this.name} must be an integer, but was ${value}`,\n value\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/arg/FuncArgInt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,OAAO,UAAW,SAAQ,WAAyB;IACvD,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAES,qBAAqB,CAC7B,eAAsD;QAEtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;YAC5C,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,oCAAoC,MAAM,EAAE,EACjE,MAAM,CACP,CAAC;SACH;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS,EAAE,EAAE;YACrB,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,qBAAqB,IAAI,CAAC,IAAI,gCAAgC,KAAK,EAAE,EACrE,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgInt.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\n\nexport class FuncArgInt extends FuncArgBase<NumericValue> {\n constructor(required: boolean, name: string, defaultValue?: NumericValue) {\n super(required, name, defaultValue);\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const result = invocationValue.result;\n if (!NumericValue.isNumericValueType(result)) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a NumericValue, but was ${result}`,\n result\n );\n }\n const value = result.numericValue;\n if (value.isInteger()) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Value of argument ${this.name} must be an integer, but was ${value}`,\n value\n );\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { FuncArgBase } from "./FuncArgBase";
2
2
  import { ExprEvalTypeErrorObj, } from "../../ExprEvalResult";
3
- import { ExprKind } from "../../ExprKind";
3
+ import { ExprKind } from "../../ExprKind.js";
4
4
  import { Decimal } from "decimal.js";
5
5
  export class FuncArgNumeric extends FuncArgBase {
6
6
  constructor(required, name, defaultValue) {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/arg/FuncArgNumeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,cAAe,SAAQ,WAAyB;IAC3D,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAES,qBAAqB,CAC7B,eAAsD;QAEtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,8BAA8B,IAAI,CAAC,SAAS,CAC/D,KAAK,CACN,EAAE,EACH,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgNumeric.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult\";\nimport { ExprKind } from \"../../ExprKind\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { Decimal } from \"decimal.js\";\n\nexport class FuncArgNumeric extends FuncArgBase<NumericValue> {\n constructor(required: boolean, name: string, defaultValue?: NumericValue) {\n super(required, name, defaultValue);\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (Decimal.isDecimal(value)) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a number, but was ${JSON.stringify(\n value\n )}`,\n value\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/arg/FuncArgNumeric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAGL,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,cAAe,SAAQ,WAAyB;IAC3D,YAAY,QAAiB,EAAE,IAAY,EAAE,YAA2B;QACtE,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IACtC,CAAC;IAES,qBAAqB,CAC7B,eAAsD;QAEtD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,IAAI,oBAAoB,CAC7B,QAAQ,CAAC,kBAAkB,EAC3B,YAAY,IAAI,CAAC,IAAI,8BAA8B,IAAI,CAAC,SAAS,CAC/D,KAAK,CACN,EAAE,EACH,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/function/arg/FuncArgNumeric.js","sourcesContent":["import { FuncArgBase } from \"./FuncArgBase\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport {\n ExprEvalResult,\n ExprEvalSuccess,\n ExprEvalTypeErrorObj,\n} from \"../../ExprEvalResult\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport class FuncArgNumeric extends FuncArgBase<NumericValue> {\n constructor(required: boolean, name: string, defaultValue?: NumericValue) {\n super(required, name, defaultValue);\n }\n\n protected transformForTypeCheck(\n invocationValue: ExprEvalSuccess<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const result = invocationValue.result;\n const value = result.getValue();\n if (Decimal.isDecimal(value)) {\n return invocationValue;\n }\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be a number, but was ${JSON.stringify(\n value\n )}`,\n value\n );\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { Func } from "../Func";
1
+ import { Func } from "../Func.js";
2
2
  import { ExprEvalFunctionEvaluationErrorObj, ExprEvalStatus, ExprEvalSuccessObj, ExprEvalTypeErrorObj, isExprEvalSuccess, } from "../../ExprEvalResult";
3
- import { isNullish } from "../../../IfcExpression";
4
- import { FuncArg } from "../FuncArg";
5
- import { ExprKind } from "../../ExprKind";
3
+ import { isNullish } from "../../../IfcExpression.js";
4
+ import { FuncArg } from "../FuncArg.js";
5
+ import { ExprKind } from "../../ExprKind.js";
6
6
  export class MAP extends Func {
7
7
  constructor() {
8
8
  super("MAP", [
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult\";\nimport { isNullish, LiteralValue } from \"../../../IfcExpression\";\nimport { FuncArg } from \"../FuncArg\";\nimport { ExprKind } from \"../../ExprKind\";\nimport { ArrayValue } from \"../../../value/ArrayValue\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new MappingsArg(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as LiteralValueAnyArity;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as LiteralValue;\n let matchIndex = -1;\n const leftColumn = (\n mappings.getValue()[0] as unknown as ArrayValue\n ).getValue();\n const rightColumn = (\n mappings.getValue()[1] as unknown as ArrayValue\n ).getValue();\n const numMappings = leftColumn.length;\n for (let i = 0; i < numMappings; i++) {\n if (leftColumn[i].equals(input)) {\n matchIndex = i;\n break;\n }\n }\n if (matchIndex === -1) {\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n } else {\n return new ExprEvalSuccessObj(defaultValue);\n }\n }\n return new ExprEvalSuccessObj(\n rightColumn[matchIndex] as LiteralValueAnyArity\n );\n }\n}\n\nclass MappingsArg extends FuncArg<any> {\n constructor(required: boolean, name: string) {\n super(required, name);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(invocationValue)) {\n const mappings = invocationValue.result as ArrayValue;\n if (!Array.isArray(mappings.getValue())) {\n return this.makeError(mappings, \"The value is not an array\");\n }\n if (mappings.getValue().length !== 2) {\n return this.makeError(mappings, \"The array is not of length 2\");\n }\n const firstElement = mappings.getValue()[0] as unknown as ArrayValue;\n if (!Array.isArray(firstElement.getValue())) {\n return this.makeError(\n mappings,\n \"The first element of the array is not itself an array\"\n );\n }\n const secondElement = mappings.getValue()[1] as unknown as ArrayValue;\n if (!Array.isArray(secondElement.getValue())) {\n return this.makeError(\n mappings,\n \"The second element of the array is not itself an array\"\n );\n }\n if (firstElement.getValue().length !== secondElement.getValue().length) {\n return this.makeError(\n mappings,\n `The first element of the array and the second differ in length ${\n firstElement.getValue().length\n } and ${secondElement.getValue().length}`\n );\n }\n }\n return invocationValue;\n }\n\n private makeError(mappings: LiteralValueAnyArity, problem: string) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be an array containing two arrays of the same length (i.e., a 2xn matrix: 2 rows, N columns). Problem: ${problem}.`,\n mappings\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/MAP.ts"],"names":[],"mappings":"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","file":"expression/function/impl/MAP.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport {\n ExprEvalFunctionEvaluationErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n ExprEvalSuccessObj,\n ExprEvalTypeErrorObj,\n isExprEvalSuccess,\n} from \"../../ExprEvalResult\";\nimport { isNullish, LiteralValue } from \"../../../IfcExpression.js\";\nimport { FuncArg } from \"../FuncArg.js\";\nimport { ExprKind } from \"../../ExprKind.js\";\nimport { ArrayValue } from \"../../../value/ArrayValue.js\";\n\nexport class MAP extends Func {\n private static readonly ARG_NAME_MAPPINGS = \"mappings\";\n private static readonly ARG_NAME_MAPPING_INPUT = \"input\";\n private static readonly ARG_NAME_DEFAULT_VALUE = \"defaultValue\";\n\n constructor() {\n super(\"MAP\", [\n new FuncArg(true, MAP.ARG_NAME_MAPPING_INPUT),\n new MappingsArg(true, MAP.ARG_NAME_MAPPINGS),\n new FuncArg(false, MAP.ARG_NAME_DEFAULT_VALUE),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const mappings = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPINGS\n ) as unknown as ArrayValue;\n const input = evaluatedArguments.get(\n MAP.ARG_NAME_MAPPING_INPUT\n ) as unknown as LiteralValueAnyArity;\n const defaultValue = evaluatedArguments.get(\n MAP.ARG_NAME_DEFAULT_VALUE\n ) as unknown as LiteralValue;\n let matchIndex = -1;\n const leftColumn = (\n mappings.getValue()[0] as unknown as ArrayValue\n ).getValue();\n const rightColumn = (\n mappings.getValue()[1] as unknown as ArrayValue\n ).getValue();\n const numMappings = leftColumn.length;\n for (let i = 0; i < numMappings; i++) {\n if (leftColumn[i].equals(input)) {\n matchIndex = i;\n break;\n }\n }\n if (matchIndex === -1) {\n if (isNullish(defaultValue)) {\n return new ExprEvalFunctionEvaluationErrorObj(\n ExprKind.FUNCTION,\n ExprEvalStatus.UNDEFINED_RESULT,\n \"Input value not found in left column. No default return value specified, therefore the result of MAP() is undefined \",\n this.name\n );\n } else {\n return new ExprEvalSuccessObj(defaultValue);\n }\n }\n return new ExprEvalSuccessObj(\n rightColumn[matchIndex] as LiteralValueAnyArity\n );\n }\n}\n\nclass MappingsArg extends FuncArg<any> {\n constructor(required: boolean, name: string) {\n super(required, name);\n }\n\n transformValue(\n invocationValue: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(invocationValue)) {\n const mappings = invocationValue.result as ArrayValue;\n if (!Array.isArray(mappings.getValue())) {\n return this.makeError(mappings, \"The value is not an array\");\n }\n if (mappings.getValue().length !== 2) {\n return this.makeError(mappings, \"The array is not of length 2\");\n }\n const firstElement = mappings.getValue()[0] as unknown as ArrayValue;\n if (!Array.isArray(firstElement.getValue())) {\n return this.makeError(\n mappings,\n \"The first element of the array is not itself an array\"\n );\n }\n const secondElement = mappings.getValue()[1] as unknown as ArrayValue;\n if (!Array.isArray(secondElement.getValue())) {\n return this.makeError(\n mappings,\n \"The second element of the array is not itself an array\"\n );\n }\n if (firstElement.getValue().length !== secondElement.getValue().length) {\n return this.makeError(\n mappings,\n `The first element of the array and the second differ in length ${\n firstElement.getValue().length\n } and ${secondElement.getValue().length}`\n );\n }\n }\n return invocationValue;\n }\n\n private makeError(mappings: LiteralValueAnyArity, problem: string) {\n return new ExprEvalTypeErrorObj(\n ExprKind.FUNCTION_ARGUMENTS,\n `Argument ${this.name} must be an array containing two arrays of the same length (i.e., a 2xn matrix: 2 rows, N columns). Problem: ${problem}.`,\n mappings\n );\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { Func } from "../Func";
2
- import { FuncArgInt } from "../arg/FuncArgInt";
3
- import { NumericValue } from "../../../value/NumericValue";
4
- import { FuncArgNumeric } from "../arg/FuncArgNumeric";
5
- import { ExprEvalSuccessObj } from "../../ExprEvalResult";
1
+ import { Func } from "../Func.js";
2
+ import { FuncArgInt } from "../arg/FuncArgInt.js";
3
+ import { NumericValue } from "../../../value/NumericValue.js";
4
+ import { FuncArgNumeric } from "../arg/FuncArgNumeric.js";
5
+ import { ExprEvalSuccessObj } from "../../ExprEvalResult.js";
6
6
  import { Decimal } from "decimal.js";
7
7
  export class ROUND extends Func {
8
8
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/function/impl/ROUND.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAkB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,KAAM,SAAQ,IAAI;IAI7B;QACE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;YACzC,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,kBAAqD;QAErD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAiB,CAAC;QACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CACxC,KAAK,CAAC,gBAAgB,CACP,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK;aAClB,QAAQ,EAAE;aACV,eAAe,CACd,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EACjC,OAAO,CAAC,aAAa,CACtB,CAAC;QACJ,OAAO,IAAI,kBAAkB,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;;AAxBc,eAAS,GAAG,OAAO,CAAC;AACpB,sBAAgB,GAAG,cAAc,CAAC","file":"expression/function/impl/ROUND.js","sourcesContent":["import { Func } from \"../Func\";\nimport { FuncArgInt } from \"../arg/FuncArgInt\";\nimport { NumericValue } from \"../../../value/NumericValue\";\nimport { FuncArgNumeric } from \"../arg/FuncArgNumeric\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult\";\nimport { Decimal } from \"decimal.js\";\n\nexport class ROUND extends Func {\n private static KEY_INPUT = \"input\";\n private static KEY_NUM_DECMIALS = \"num_decimals\";\n\n constructor() {\n super(\"ROUND\", [\n new FuncArgNumeric(true, ROUND.KEY_INPUT),\n new FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue(0)),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const input = evaluatedArguments.get(ROUND.KEY_INPUT) as NumericValue;\n const numDecimals = evaluatedArguments.get(\n ROUND.KEY_NUM_DECMIALS\n ) as NumericValue;\n const rounded = input\n .getValue()\n .toDecimalPlaces(\n numDecimals.getValue().toNumber(),\n Decimal.ROUND_HALF_UP\n );\n return new ExprEvalSuccessObj(new NumericValue(rounded));\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/function/impl/ROUND.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAkB,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,KAAM,SAAQ,IAAI;IAI7B;QACE,KAAK,CAAC,OAAO,EAAE;YACb,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;YACzC,IAAI,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;SACnE,CAAC,CAAC;IACL,CAAC;IAES,eAAe,CACvB,kBAAqD;QAErD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAiB,CAAC;QACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CACxC,KAAK,CAAC,gBAAgB,CACP,CAAC;QAClB,MAAM,OAAO,GAAG,KAAK;aAClB,QAAQ,EAAE;aACV,eAAe,CACd,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EACjC,OAAO,CAAC,aAAa,CACtB,CAAC;QACJ,OAAO,IAAI,kBAAkB,CAAC,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;;AAxBc,eAAS,GAAG,OAAO,CAAC;AACpB,sBAAgB,GAAG,cAAc,CAAC","file":"expression/function/impl/ROUND.js","sourcesContent":["import { Func } from \"../Func.js\";\nimport { FuncArgInt } from \"../arg/FuncArgInt.js\";\nimport { NumericValue } from \"../../../value/NumericValue.js\";\nimport { FuncArgNumeric } from \"../arg/FuncArgNumeric.js\";\nimport { LiteralValueAnyArity } from \"../../../value/LiteralValueAnyArity.js\";\nimport { ExprEvalResult, ExprEvalSuccessObj } from \"../../ExprEvalResult.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport class ROUND extends Func {\n private static KEY_INPUT = \"input\";\n private static KEY_NUM_DECMIALS = \"num_decimals\";\n\n constructor() {\n super(\"ROUND\", [\n new FuncArgNumeric(true, ROUND.KEY_INPUT),\n new FuncArgInt(false, ROUND.KEY_NUM_DECMIALS, new NumericValue(0)),\n ]);\n }\n\n protected calculateResult(\n evaluatedArguments: Map<string, LiteralValueAnyArity>\n ): ExprEvalResult<LiteralValueAnyArity> {\n const input = evaluatedArguments.get(ROUND.KEY_INPUT) as NumericValue;\n const numDecimals = evaluatedArguments.get(\n ROUND.KEY_NUM_DECMIALS\n ) as NumericValue;\n const rounded = input\n .getValue()\n .toDecimalPlaces(\n numDecimals.getValue().toNumber(),\n Decimal.ROUND_HALF_UP\n );\n return new ExprEvalSuccessObj(new NumericValue(rounded));\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Expr2 } from "../Expr2.js";
2
2
  import { NumericValue } from "../../value/NumericValue.js";
3
- import { ExprKind } from "../ExprKind";
3
+ import { ExprKind } from "../ExprKind.js";
4
4
  import { ExprEvalError2Obj, ExprEvalStatus, } from "../ExprEvalResult";
5
5
  export class DivideExpr extends Expr2 {
6
6
  constructor(left, right) {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/DivideExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAEL,iBAAiB,EAEjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,UAAW,SAAQ,KAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAAwC,EACxC,WAAyC;QAEzC,OAAO,IAAI,iBAAiB,CAC1B,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,CAAC,UAAU,EACzB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\n\nexport class DivideExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_DIVIDE, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().dividedBy(right.getValue()));\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<NumericValue>,\n rightResult: ExprEvalResult<NumericValue>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n error,\n leftResult,\n rightResult,\n ExprEvalStatus.MATH_ERROR,\n error\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/DivideExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEL,iBAAiB,EAEjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,UAAW,SAAQ,KAI/B;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAAwC,EACxC,WAAyC;QAEzC,OAAO,IAAI,iBAAiB,CAC1B,KAAK,EACL,UAAU,EACV,WAAW,EACX,cAAc,CAAC,UAAU,EACzB,KAAK,CACN,CAAC;IACJ,CAAC;CACF","file":"expression/numeric/DivideExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalResult,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\n\nexport class DivideExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_DIVIDE, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().dividedBy(right.getValue()));\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<NumericValue>,\n rightResult: ExprEvalResult<NumericValue>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n error,\n leftResult,\n rightResult,\n ExprEvalStatus.MATH_ERROR,\n error\n );\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Expr2 } from "../Expr2.js";
2
2
  import { NumericValue } from "../../value/NumericValue.js";
3
- import { ExprKind } from "../ExprKind";
3
+ import { ExprKind } from "../ExprKind.js";
4
4
  export class MinusExpr extends Expr2 {
5
5
  constructor(left, right) {
6
6
  super(ExprKind.NUM_MINUS, left, right);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/MinusExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,SAAU,SAAQ,KAA+C;IAC5E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF","file":"expression/numeric/MinusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind\";\nimport { ExprEvalError } from \"../ExprEvalResult\";\n\nexport class MinusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MINUS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().minus(right.getValue()));\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/MinusExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,SAAU,SAAQ,KAA+C;IAC5E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF","file":"expression/numeric/MinusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\n\nexport class MinusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MINUS, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().minus(right.getValue()));\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Expr2 } from "../Expr2.js";
2
2
  import { NumericValue } from "../../value/NumericValue.js";
3
- import { ExprKind } from "../ExprKind";
3
+ import { ExprKind } from "../ExprKind.js";
4
4
  export class MultiplyExpr extends Expr2 {
5
5
  constructor(left, right) {
6
6
  super(ExprKind.NUM_MULTIPLY, left, right);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/MultiplyExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,OAAO,YAAa,SAAQ,KAIjC;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF","file":"expression/numeric/MultiplyExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind\";\nimport { ExprEvalError } from \"../ExprEvalResult\";\n\nexport class MultiplyExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MULTIPLY, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().mul(right.getValue()));\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/MultiplyExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,YAAa,SAAQ,KAIjC;IACC,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,IAAkB,EAClB,KAAmB;QAEnB,OAAO,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;CACF","file":"expression/numeric/MultiplyExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\n\nexport class MultiplyExpr extends Expr2<\n NumericValue,\n NumericValue,\n NumericValue\n> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_MULTIPLY, left, right);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n left: NumericValue,\n right: NumericValue\n ): NumericValue | ExprEvalError {\n return NumericValue.of(left.getValue().mul(right.getValue()));\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Expr1 } from "../Expr1.js";
2
- import { ExprKind } from "../ExprKind";
2
+ import { ExprKind } from "../ExprKind.js";
3
3
  export class NumParenthesisExpr extends Expr1 {
4
4
  constructor(expression) {
5
5
  super(ExprKind.NUM_PARENTHESIS, expression);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/NumParenthesisExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,kBAAmB,SAAQ,KAAiC;IACvE,YAAY,UAA8B;QACxC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,kBAAgC;QAEhC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF","file":"expression/numeric/NumParenthesisExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind\";\n\nexport class NumParenthesisExpr extends Expr1<NumericValue, NumericValue> {\n constructor(expression: Expr<NumericValue>) {\n super(ExprKind.NUM_PARENTHESIS, expression);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionValue: NumericValue\n ): NumericValue {\n return subExpressionValue;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/NumParenthesisExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAIpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,kBAAmB,SAAQ,KAAiC;IACvE,YAAY,UAA8B;QACxC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC9C,CAAC;IAES,eAAe,CACvB,GAAyB,EACzB,QAA0B,EAC1B,kBAAgC;QAEhC,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CACF","file":"expression/numeric/NumParenthesisExpr.js","sourcesContent":["import { Expr1 } from \"../Expr1.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class NumParenthesisExpr extends Expr1<NumericValue, NumericValue> {\n constructor(expression: Expr<NumericValue>) {\n super(ExprKind.NUM_PARENTHESIS, expression);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n subExpressionValue: NumericValue\n ): NumericValue {\n return subExpressionValue;\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { ExprKind } from "../ExprKind";
2
- import { LiteralExpr } from "../LiteralExpr";
1
+ import { ExprKind } from "../ExprKind.js";
2
+ import { LiteralExpr } from "../LiteralExpr.js";
3
3
  export class NumericLiteralExpr extends LiteralExpr {
4
4
  constructor(value) {
5
5
  super(ExprKind.NUM_LITERAL, value);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/NumericLiteralExpr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,OAAO,kBAAmB,SAAQ,WAGvC;IACC,YAAY,KAAmB;QAC7B,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","file":"expression/numeric/NumericLiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprEvalError } from \"../ExprEvalResult\";\nimport { ExprKind } from \"../ExprKind\";\nimport { LiteralExpr } from \"../LiteralExpr\";\n\nexport class NumericLiteralExpr extends LiteralExpr<\n NumericValue,\n NumericValue\n> {\n constructor(value: NumericValue) {\n super(ExprKind.NUM_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): NumericValue | ExprEvalError {\n return this.value;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/NumericLiteralExpr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,OAAO,kBAAmB,SAAQ,WAGvC;IACC,YAAY,KAAmB;QAC7B,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAES,eAAe,CACvB,GAAyB;QAEzB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF","file":"expression/numeric/NumericLiteralExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprEvalError } from \"../ExprEvalResult.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport { LiteralExpr } from \"../LiteralExpr.js\";\n\nexport class NumericLiteralExpr extends LiteralExpr<\n NumericValue,\n NumericValue\n> {\n constructor(value: NumericValue) {\n super(ExprKind.NUM_LITERAL, value);\n }\n\n protected calculateResult(\n ctx: IfcExpressionContext\n ): NumericValue | ExprEvalError {\n return this.value;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Expr2 } from "../Expr2.js";
2
2
  import { NumericValue } from "../../value/NumericValue.js";
3
- import { ExprKind } from "../ExprKind";
3
+ import { ExprKind } from "../ExprKind.js";
4
4
  export class PlusExpr extends Expr2 {
5
5
  constructor(left, right) {
6
6
  super(ExprKind.NUM_PLUS, left, right);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/numeric/PlusExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,QAAS,SAAQ,KAA+C;IAC3E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAA0B,EAC1B,UAAwB,EACxB,WAAyB;QAEzB,OAAO,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF","file":"expression/numeric/PlusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind\";\n\nexport class PlusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_PLUS, left, right);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: NumericValue,\n rightResult: NumericValue\n ): NumericValue {\n return NumericValue.of(leftResult.getValue().plus(rightResult.getValue()));\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/numeric/PlusExpr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,QAAS,SAAQ,KAA+C;IAC3E,YAAY,IAAwB,EAAE,KAAyB;QAC7D,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAA0B,EAC1B,UAAwB,EACxB,WAAyB;QAEzB,OAAO,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;CACF","file":"expression/numeric/PlusExpr.js","sourcesContent":["import { Expr2 } from \"../Expr2.js\";\nimport { Expr } from \"../Expr.js\";\nimport { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { NumericValue } from \"../../value/NumericValue.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class PlusExpr extends Expr2<NumericValue, NumericValue, NumericValue> {\n constructor(left: Expr<NumericValue>, right: Expr<NumericValue>) {\n super(ExprKind.NUM_PLUS, left, right);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: NumericValue,\n rightResult: NumericValue\n ): NumericValue {\n return NumericValue.of(leftResult.getValue().plus(rightResult.getValue()));\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Expr2 } from "../Expr2.js";
2
- import { ExprKind } from "../ExprKind";
2
+ import { ExprKind } from "../ExprKind.js";
3
3
  import { ExprEvalError2Obj, ExprEvalRefChainErrorObj, ExprEvalStatus, isExprEvalRefChainError, isExprEvalSuccess, } from "../ExprEvalResult";
4
4
  import { LocalContextKeys } from "../LocalContextKeys";
5
5
  export class AttributeReferenceExpr extends Expr2 {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/reference/AttributeReferenceExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,EAExB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,OAAO,sBAAuB,SAAQ,KAI3C;IACC,YAAY,IAA0B,EAAE,KAAiC;QACvE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAES,oBAAoB,CAC5B,GAAyB,EACzB,QAA0B,EAC1B,UAA0B;QAE1B,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAAQ,EACR,cAA8B,EAC9B,iBAAuC;QAEvC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,8BAA8B,CACtC,GAAyB,EACzB,QAA0B,EAC1B,UAA0C,EAC1C,WAA0B;QAE1B,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,uBAAuB,CAAC,WAAW,CAAC,EAAE;YACzE,OAAO,wBAAwB,CAAC,QAAQ,CACtC,WAAW,EACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CACpB,CAAC;SACH;QACD,OAAO,KAAK,CAAC,8BAA8B,CACzC,GAAG,EACH,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA0C,EAC1C,WAAiD;QAEjD,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,cAAc,CAAC,eAAe,EAC9B,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAClD,CAAC;IACJ,CAAC;CACF","file":"expression/reference/AttributeReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { ExprKind } from \"../ExprKind\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalRefChainErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalRefChainError,\n isExprEvalSuccess,\n} from \"../ExprEvalResult\";\nimport { Expr } from \"../Expr\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\n\nexport class AttributeReferenceExpr extends Expr2<\n ObjectAccessor,\n LiteralValueAnyArity,\n LiteralValueAnyArity\n> {\n constructor(left: Expr<ObjectAccessor>, right: Expr<LiteralValueAnyArity>) {\n super(ExprKind.REF_ATTRIBUTE, left, right);\n }\n\n protected onAfterLeftRecursion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ObjectAccessor\n ) {\n localCtx.set(LocalContextKeys.OBJECT_ACCESSOR, leftResult);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx,\n objectAccessor: ObjectAccessor,\n dereferencedValue: LiteralValueAnyArity\n ): LiteralValueAnyArity | ExprEvalError {\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return dereferencedValue;\n }\n\n protected makeResultForRightSubExprError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(leftResult) && isExprEvalRefChainError(rightResult)) {\n return ExprEvalRefChainErrorObj.bubbleUp(\n rightResult,\n this.left.getKind()\n );\n }\n return super.makeResultForRightSubExprError(\n ctx,\n localCtx,\n leftResult,\n rightResult\n );\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n this.getKind(),\n leftResult,\n rightResult,\n ExprEvalStatus.REFERENCE_ERROR,\n [\"Unable to resolve attribute reference:\", error]\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/reference/AttributeReferenceExpr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEL,iBAAiB,EACjB,wBAAwB,EAExB,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,OAAO,sBAAuB,SAAQ,KAI3C;IACC,YAAY,IAA0B,EAAE,KAAiC;QACvE,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAES,oBAAoB,CAC5B,GAAyB,EACzB,QAA0B,EAC1B,UAA0B;QAE1B,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe,CACb,GAAyB,EACzB,QAAQ,EACR,cAA8B,EAC9B,iBAAuC;QAEvC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAES,8BAA8B,CACtC,GAAyB,EACzB,QAA0B,EAC1B,UAA0C,EAC1C,WAA0B;QAE1B,IAAI,iBAAiB,CAAC,UAAU,CAAC,IAAI,uBAAuB,CAAC,WAAW,CAAC,EAAE;YACzE,OAAO,wBAAwB,CAAC,QAAQ,CACtC,WAAW,EACX,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CACpB,CAAC;SACH;QACD,OAAO,KAAK,CAAC,8BAA8B,CACzC,GAAG,EACH,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IACJ,CAAC;IAES,WAAW,CACnB,KAAU,EACV,UAA0C,EAC1C,WAAiD;QAEjD,OAAO,IAAI,iBAAiB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,UAAU,EACV,WAAW,EACX,cAAc,CAAC,eAAe,EAC9B,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAClD,CAAC;IACJ,CAAC;CACF","file":"expression/reference/AttributeReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { Expr2 } from \"../Expr2.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalError2Obj,\n ExprEvalRefChainErrorObj,\n ExprEvalResult,\n ExprEvalStatus,\n isExprEvalRefChainError,\n isExprEvalSuccess,\n} from \"../ExprEvalResult\";\nimport { Expr } from \"../Expr.js\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\n\nexport class AttributeReferenceExpr extends Expr2<\n ObjectAccessor,\n LiteralValueAnyArity,\n LiteralValueAnyArity\n> {\n constructor(left: Expr<ObjectAccessor>, right: Expr<LiteralValueAnyArity>) {\n super(ExprKind.REF_ATTRIBUTE, left, right);\n }\n\n protected onAfterLeftRecursion(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ObjectAccessor\n ) {\n localCtx.set(LocalContextKeys.OBJECT_ACCESSOR, leftResult);\n }\n\n calculateResult(\n ctx: IfcExpressionContext,\n localCtx,\n objectAccessor: ObjectAccessor,\n dereferencedValue: LiteralValueAnyArity\n ): LiteralValueAnyArity | ExprEvalError {\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return dereferencedValue;\n }\n\n protected makeResultForRightSubExprError(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalError\n ): ExprEvalResult<LiteralValueAnyArity> {\n if (isExprEvalSuccess(leftResult) && isExprEvalRefChainError(rightResult)) {\n return ExprEvalRefChainErrorObj.bubbleUp(\n rightResult,\n this.left.getKind()\n );\n }\n return super.makeResultForRightSubExprError(\n ctx,\n localCtx,\n leftResult,\n rightResult\n );\n }\n\n protected handleError(\n error: any,\n leftResult: ExprEvalResult<ObjectAccessor>,\n rightResult: ExprEvalResult<LiteralValueAnyArity>\n ): ExprEvalError {\n return new ExprEvalError2Obj(\n this.getKind(),\n leftResult,\n rightResult,\n ExprEvalStatus.REFERENCE_ERROR,\n [\"Unable to resolve attribute reference:\", error]\n );\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Expr0 } from "../Expr0.js";
2
- import { ExprKind } from "../ExprKind";
2
+ import { ExprKind } from "../ExprKind.js";
3
3
  export class ElemObjectReferenceExpr extends Expr0 {
4
4
  constructor() {
5
5
  super(ExprKind.REF_ELEMENT);
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/reference/ElemObjectReferenceExpr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,uBACX,SAAQ,KAAqB;IAG7B;QACE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,GAAyB;QAClC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF","file":"expression/reference/ElemObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ExprKind } from \"../ExprKind\";\n\nexport class ElemObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super(ExprKind.REF_ELEMENT);\n }\n\n doEvaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolveElemRef();\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/reference/ElemObjectReferenceExpr.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,OAAO,uBACX,SAAQ,KAAqB;IAG7B;QACE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,UAAU,CAAC,GAAyB;QAClC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;IAC9B,CAAC;CACF","file":"expression/reference/ElemObjectReferenceExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { ObjectReferenceExpr } from \"./ObjectReferenceExpr.js\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { ExprKind } from \"../ExprKind.js\";\n\nexport class ElemObjectReferenceExpr\n extends Expr0<ObjectAccessor>\n implements ObjectReferenceExpr\n{\n constructor() {\n super(ExprKind.REF_ELEMENT);\n }\n\n doEvaluate(ctx: IfcExpressionContext): ObjectAccessor {\n return ctx.resolveElemRef();\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { ExprKind } from "../ExprKind";
1
+ import { ExprKind } from "../ExprKind.js";
2
2
  import { ExprEvalErrorObj, ExprEvalRefChainErrorObj, ExprEvalStatus, } from "../ExprEvalResult";
3
3
  import { isNullish } from "../../IfcExpressionUtils";
4
- import { Expr0 } from "../Expr0";
4
+ import { Expr0 } from "../Expr0.js";
5
5
  import { LocalContextKeys } from "../LocalContextKeys";
6
6
  export class NestedObjectChainEndExpr extends Expr0 {
7
7
  constructor(value) {
@@ -1 +1 @@
1
- {"version":3,"sources":["expression/reference/NestedObjectChainEndExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAEL,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,OAAO,wBAAyB,SAAQ,KAA2B;IAEvE,YAAY,KAAa;QACvB,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,cAAc,GAAmB,QAAQ,CAAC,GAAG,CACjD,gBAAgB,CAAC,eAAe,CACjC,CAAC;QACF,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,OAAO,EAAE,EACd,cAAc,CAAC,eAAe,EAC9B,qFAAqF,IAAI,CAAC,aAAa,EAAE,CAC1G,CAAC;SACH;QACD,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,wBAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,cAAc,CAAC,eAAe,EAC9B,IAAI,CAAC,aAAa,EAClB,2BAA2B,IAAI,CAAC,aAAa,GAAG,CACjD,CAAC;SACH;QACD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF","file":"expression/reference/NestedObjectChainEndExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ExprKind } from \"../ExprKind\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalRefChainErrorObj,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { Expr0 } from \"../Expr0\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor\";\n\nexport class NestedObjectChainEndExpr extends Expr0<LiteralValueAnyArity> {\n private readonly attributeName: string;\n constructor(value: string) {\n super(ExprKind.REF_NESTED_OBJECT_CHAIN_END);\n this.attributeName = value;\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | LiteralValueAnyArity {\n const objectAccessor: ObjectAccessor = localCtx.get(\n LocalContextKeys.OBJECT_ACCESSOR\n );\n if (isNullish(objectAccessor)) {\n return new ExprEvalErrorObj(\n this.getKind(),\n ExprEvalStatus.MISSING_OPERAND,\n `No ObjectAccessor found in localContext when trying to access attribute with name'${this.attributeName}`\n );\n }\n const attributeValue = objectAccessor.getAttribute(this.attributeName);\n if (isNullish(attributeValue)) {\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n ExprEvalStatus.REFERENCE_ERROR,\n this.attributeName,\n `No such nested object: '${this.attributeName}'`\n );\n }\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return attributeValue;\n }\n}\n"]}
1
+ {"version":3,"sources":["expression/reference/NestedObjectChainEndExpr.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEL,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,OAAO,wBAAyB,SAAQ,KAA2B;IAEvE,YAAY,KAAa;QACvB,KAAK,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAES,UAAU,CAClB,GAAyB,EACzB,QAA0B;QAE1B,MAAM,cAAc,GAAmB,QAAQ,CAAC,GAAG,CACjD,gBAAgB,CAAC,eAAe,CACjC,CAAC;QACF,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,gBAAgB,CACzB,IAAI,CAAC,OAAO,EAAE,EACd,cAAc,CAAC,eAAe,EAC9B,qFAAqF,IAAI,CAAC,aAAa,EAAE,CAC1G,CAAC;SACH;QACD,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACvE,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE;YAC7B,OAAO,IAAI,wBAAwB,CACjC,IAAI,CAAC,OAAO,EAAE,EACd,cAAc,CAAC,eAAe,EAC9B,IAAI,CAAC,aAAa,EAClB,2BAA2B,IAAI,CAAC,aAAa,GAAG,CACjD,CAAC;SACH;QACD,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,OAAO,cAAc,CAAC;IACxB,CAAC;CACF","file":"expression/reference/NestedObjectChainEndExpr.js","sourcesContent":["import { IfcExpressionContext } from \"../../context/IfcExpressionContext.js\";\nimport { LiteralValueAnyArity } from \"../../value/LiteralValueAnyArity.js\";\nimport { ExprKind } from \"../ExprKind.js\";\nimport {\n ExprEvalError,\n ExprEvalErrorObj,\n ExprEvalRefChainErrorObj,\n ExprEvalStatus,\n} from \"../ExprEvalResult\";\nimport { isNullish } from \"../../IfcExpressionUtils\";\nimport { Expr0 } from \"../Expr0.js\";\nimport { LocalContextKeys } from \"../LocalContextKeys\";\nimport { ObjectAccessor } from \"../../context/ObjectAccessor.js\";\n\nexport class NestedObjectChainEndExpr extends Expr0<LiteralValueAnyArity> {\n private readonly attributeName: string;\n constructor(value: string) {\n super(ExprKind.REF_NESTED_OBJECT_CHAIN_END);\n this.attributeName = value;\n }\n\n protected doEvaluate(\n ctx: IfcExpressionContext,\n localCtx: Map<string, any>\n ): ExprEvalError | LiteralValueAnyArity {\n const objectAccessor: ObjectAccessor = localCtx.get(\n LocalContextKeys.OBJECT_ACCESSOR\n );\n if (isNullish(objectAccessor)) {\n return new ExprEvalErrorObj(\n this.getKind(),\n ExprEvalStatus.MISSING_OPERAND,\n `No ObjectAccessor found in localContext when trying to access attribute with name'${this.attributeName}`\n );\n }\n const attributeValue = objectAccessor.getAttribute(this.attributeName);\n if (isNullish(attributeValue)) {\n return new ExprEvalRefChainErrorObj(\n this.getKind(),\n ExprEvalStatus.REFERENCE_ERROR,\n this.attributeName,\n `No such nested object: '${this.attributeName}'`\n );\n }\n localCtx.delete(LocalContextKeys.OBJECT_ACCESSOR);\n return attributeValue;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { ExprKind } from "../ExprKind";
1
+ import { ExprKind } from "../ExprKind.js";
2
2
  import { ExprEvalErrorObj, ExprEvalRefChainErrorObj, ExprEvalStatus, isExprEvalRefChainError, mapErrorObjectToMessage, } from "../ExprEvalResult";
3
- import { Expr1 } from "../Expr1";
3
+ import { Expr1 } from "../Expr1.js";
4
4
  import { isNullish } from "../../IfcExpressionUtils";
5
5
  import { LocalContextKeys } from "../LocalContextKeys";
6
6
  export class NestedObjectChainExpr extends Expr1 {