@routier/core 0.0.7 → 0.1.0-rc.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"expressions/index.js","sources":["webpack://@routier/core/./src/expressions/parser.ts","webpack://@routier/core/./src/expressions/types.ts","webpack://@routier/core/./src/expressions/utils.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/expressions/index.ts"],"sourcesContent":["import { CompiledSchema, SchemaTypes } from \"../schema\";\nimport { Expression, OperatorExpression, ComparatorExpression, ValueExpression, PropertyExpression, Filter, ParamsFilter, Operator } from \"./types\";\n\n// Pre-compiled regex patterns for better performance\nconst METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(startsWith|endsWith|includes)\\(([^)]+)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst TRANSFORM_METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)\\.(startsWith|endsWith|includes)\\(((?:[^()]|\\([^)]*\\))*)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst EQUALITY_REGEX = /([^=!<>]+?)\\s*(===|==|!==|!=)\\s*(.+)/;\nconst COMPARISON_REGEX = /([^=!<>]+?)\\s*(>=|<=|>|<)\\s*(.+)/;\nconst PARAM_PATH_REGEX = /^([a-zA-Z0-9_.]+)/;\n\n// Pre-compiled regex patterns for comment removal\nconst SINGLE_LINE_COMMENT_REGEX = /\\/\\/.*$/gm;\nconst MULTI_LINE_COMMENT_REGEX = /\\/\\*[\\s\\S]*?\\*\\//g;\nconst WHITESPACE_REGEX = /\\s+/g;\n\n// need to have negated + strict\nconst comparators: Record<string, ComparatorExpression> = {\n startsWith: new ComparatorExpression({\n comparator: \"starts-with\",\n negated: false,\n strict: false\n }),\n endsWith: new ComparatorExpression({\n comparator: \"ends-with\",\n negated: false,\n strict: false\n }),\n includes: new ComparatorExpression({\n comparator: \"includes\",\n negated: false,\n strict: false\n }),\n \"==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: false\n }),\n \"===\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: true\n }),\n \"!=\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: false\n }),\n \"!==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: true\n }),\n \">=\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: false\n }),\n \">==\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: true\n }),\n \"<=\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: false\n }),\n \"<==\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: true\n }),\n \">\": new ComparatorExpression({\n comparator: \"greater-than\",\n negated: false,\n strict: false\n }),\n \"<\": new ComparatorExpression({\n comparator: \"less-than\",\n negated: false,\n strict: false\n })\n} as const;\n\n// Optimized comparator lookup using Map\nconst COMPARATOR_MAP = new Map(Object.entries(comparators));\n\n// Error message constants\nconst ERROR_MESSAGES = {\n COMPARATOR_NOT_FOUND: (value: string) => `Cannot find comparator: ${value}`,\n PROPERTY_NOT_FOUND: (path: string) => `Error parsing query, could not find PropertyInfo for path: ${path}`,\n PARAM_PATH_NOT_FOUND: (value: string, params: any) => `Cannot find path in params for .where(). Make sure parameters are not used inline.\\r\\nPath: ${value}, Params: ${JSON.stringify(params)}`\n};\n\nconst STRINGIFIED_COMPARE_OPERATORS = [\"true\", \"false\"];\n\nexport const combineExpressions = (...expressions: Expression[]): Expression => {\n\n if (expressions.length === 0) {\n throw new Error(\"combineExpressions requires at least 1 expression\");\n }\n\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n // Start with the first expression\n let result = expressions[0];\n\n // Loop through remaining expressions and combine them\n for (let i = 1; i < expressions.length; i++) {\n result = new OperatorExpression({\n operator: \"&&\",\n left: result,\n right: expressions[i]\n });\n }\n\n return result;\n};\n\nexport const toExpression = <T extends any, P extends any>(schema: CompiledSchema<any>, fn: Filter<T> | ParamsFilter<T, P>, params?: P) => {\n try {\n const stringifiedFunction = fn.toString();\n\n // Optimized string parsing\n const arrowIndex = stringifiedFunction.indexOf('=>');\n if (arrowIndex === -1) {\n throw new Error(\"Invalid Function\");\n }\n\n const parameterNames = stringifiedFunction.substring(0, arrowIndex).trim();\n let expression = stringifiedFunction.substring(arrowIndex + 2).trim();\n\n // Remove JavaScript comments from the expression\n expression = expression\n .replace(SINGLE_LINE_COMMENT_REGEX, '') // Remove single-line comments\n .replace(MULTI_LINE_COMMENT_REGEX, '') // Remove multi-line comments\n .replace(WHITESPACE_REGEX, ' ') // Normalize whitespace\n .trim();\n\n let parameterData: { name: string, data: P } | undefined = undefined;\n\n if (params != null) {\n let name: string;\n if (parameterNames.includes(\"[\") && parameterNames.includes(\"]\")) {\n // Optimized parameter name extraction\n const commaIndex = parameterNames.indexOf(\",\");\n if (commaIndex !== -1) {\n const bracketIndex = parameterNames.indexOf(\"]\", commaIndex);\n if (bracketIndex !== -1) {\n name = parameterNames.substring(commaIndex + 1, bracketIndex).trim();\n }\n }\n }\n\n parameterData = {\n name,\n data: params\n };\n }\n\n return parseExpressionToTree(schema, expression, parameterData);\n } catch (e) {\n console.warn(\"Error parsing expression\", e);\n return Expression.NOT_PARSABLE;\n }\n}\n\nconst parseExpressionToTree = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }) => {\n\n const parse = (exp: string): Expression => {\n // Remove any wrapping parentheses\n exp = exp.trim();\n if (exp.startsWith('(') && exp.endsWith(')')) {\n let depth = 0;\n let isWrapper = true;\n for (let i = 0; i < exp.length; i++) {\n const char = exp[i];\n if (char === '(') {\n depth++;\n } else if (char === ')') {\n depth--;\n if (depth < 0) break; // Early exit for invalid parentheses\n }\n // Early exit if we find a closing parenthesis that's not the last character\n if (depth === 0 && i !== exp.length - 1) {\n isWrapper = false;\n break; // Early exit\n }\n // Early exit if we go negative (invalid parentheses)\n if (depth < 0) {\n isWrapper = false;\n break;\n }\n }\n if (isWrapper) {\n exp = exp.slice(1, -1).trim();\n }\n }\n\n // Parse based on the operator precedence\n let operator: Operator | null = null, splitIndex = -1, depth = 0;\n\n for (let i = 0; i < exp.length - 1; i++) {\n const char = exp[i];\n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (depth === 0) {\n // Optimized operator detection using character comparison\n if (char === '&' && exp[i + 1] === '&') {\n operator = '&&';\n splitIndex = i;\n break; // AND takes precedence over OR\n } else if (operator === null && char === '|' && exp[i + 1] === '|') {\n operator = '||';\n splitIndex = i;\n }\n }\n }\n\n if (operator) {\n const left = exp.slice(0, splitIndex).trim();\n const right = exp.slice(splitIndex + 2).trim();\n\n return new OperatorExpression({\n operator,\n left: parse(left),\n right: parse(right)\n });\n }\n\n // If no operator, try to parse as a condition\n return parseCondition(schema, exp, params);\n }\n\n return parse(expression);\n}\n\nconst convertAndAssignValue = (valueExpression: unknown, propertyPathExpression: unknown) => {\n\n assertIsPropertyPathExpression(propertyPathExpression);\n\n assertIsValueExpression(valueExpression)\n\n const propertyType = propertyPathExpression.property.type;\n\n valueExpression.value = converters[propertyType](valueExpression.value);\n}\n\nconst converters: Record<SchemaTypes, (value: unknown) => unknown> = {\n Array: v => v,\n Boolean: v => v == null ? v : Boolean(v),\n Computed: v => v,\n Date: v => v,\n Definition: v => v,\n Function: v => v,\n Number: v => v == null ? v : Number(v),\n Object: v => v,\n String: v => v == null ? v : String(v)\n};\n\nconst isExpression = (value: unknown): value is Expression => {\n return typeof value === \"object\" && value !== null && \"type\" in value;\n}\n\nfunction assertIsExpression(value: unknown): asserts value is Expression {\n if (isExpression(value) === false) {\n throw new Error(\"Assertion Failed: Value is not a Expression\")\n }\n}\n\nfunction assertIsPropertyPathExpression(value: unknown): asserts value is PropertyExpression {\n\n assertIsExpression(value);\n\n if (!(\"property\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a PropertyPathExpression\")\n }\n}\n\nfunction assertIsValueExpression(value: unknown): asserts value is ValueExpression {\n\n assertIsExpression(value);\n\n if (!(\"value\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a ValueExpression\")\n }\n}\n\n// Helper function to detect if a string is a property path\nconst isPropertyPath = (value: string, params?: { name: string, data: any }): boolean => {\n // Check for dot notation (e.g., entity.name)\n if (value.includes('.') && value.match(/^[a-zA-Z0-9_.]+$/) !== null) {\n return true;\n }\n // Check for bracket notation with literal strings (e.g., entity[\"name\"], entity['name'], or entity[\\\"name\\\"] with escaped quotes)\n const literalBracketPattern = /^[a-zA-Z_$][a-zA-Z0-9_$]*(\\[\\\\?[\"'][^\"']+\\\\?[\"']\\])+$/;\n if (literalBracketPattern.test(value)) {\n return true;\n }\n // Check for bracket notation with parameter paths (e.g., entity[p.name], entity[params.property])\n if (params && value.includes('[') && value.includes(']')) {\n const bracketMatch = value.match(/\\[([^\\]]+)\\]/);\n if (bracketMatch) {\n const bracketContent = bracketMatch[1].trim();\n // Check if it's a parameter path - should start with params.name followed by dot, or be just params.name\n const isParamPath = bracketContent.startsWith(params.name + '.') || bracketContent === params.name;\n if (isParamPath || (bracketContent.includes('.') && bracketContent.match(PARAM_PATH_REGEX))) {\n return true;\n }\n }\n }\n return false;\n};\n\n// Helper function to determine if we need to swap the operator for reversed comparisons\nconst getSwappedOperator = (operator: string): string => {\n const swapMap: Record<string, string> = {\n '>': '<',\n '<': '>',\n '>=': '<=',\n '<=': '>='\n };\n return swapMap[operator] || operator;\n};\n\nconst parseCondition = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }): Expression => {\n\n // Optimized string operations - single trim operation\n const trimmed = expression.trim();\n const isNegation = trimmed.startsWith('!');\n const finalExpression = isNegation ? trimmed.slice(1).trim() : trimmed;\n\n // Enhanced pattern matching for complex expressions\n const methodMatch = finalExpression.match(METHOD_REGEX);\n const transformMethodMatch = finalExpression.match(TRANSFORM_METHOD_REGEX);\n const equalityMatch = finalExpression.match(EQUALITY_REGEX);\n const comparisonMatch = finalExpression.match(COMPARISON_REGEX);\n\n if (methodMatch) {\n // Handle .startsWith or .endsWith\n const comparator = getComparator(methodMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Check if the left side is a parameter path\n const leftSide = methodMatch[1];\n const rightSide = methodMatch[3];\n\n if (params && leftSide.startsWith(params.name)) {\n // This is a parameter path on the left side (e.g., params.distinctPlayers.includes(entity.playerId))\n // For includes method, we need to swap left and right sides\n if (methodMatch[2] === 'includes') {\n\n const property = getProperty(schema, rightSide, params);\n const value = getValue(leftSide, params); // retrieve the original value\n const serializer = property.property.valueSerializer;\n\n comparator.left = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n comparator.right = property;\n } else {\n // For other methods, return NOT_PARSABLE for now\n return Expression.NOT_PARSABLE;\n }\n } else {\n // Normal case: property on left, value on right\n const property = getProperty(schema, leftSide, params);\n const serializer = property.property.valueSerializer;\n const value = getValue(rightSide, params); // retrieve the original value\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n }\n\n // If the comparison is explicitly to false, mark it as negated\n if (methodMatch[6] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n // Check for transformations on the value side (right side of comparison) - check this FIRST\n const valueTransformMatch = finalExpression.match(/([^=!<>]+?)\\s*(===|==|!==|!=)\\s*([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)/);\n if (valueTransformMatch) {\n const comparator = getComparator(valueTransformMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, valueTransformMatch[1].trim(), params);\n const serializer = property.property.valueSerializer;\n const value = getValue(valueTransformMatch[3], params); // retrieve the original value\n\n // Create the property expression for the left side (no transformer)\n const propertyExpression = property;\n\n // Create a ValueExpression for the right side with transformer\n const valueExpression = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n\n // Set transformer and locale based on the method\n const method = valueTransformMatch[4];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n valueExpression.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n valueExpression.locale = 'en-US';\n }\n } else {\n valueExpression.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n valueExpression.locale = 'en-US';\n }\n }\n\n comparator.left = propertyExpression;\n comparator.right = valueExpression;\n\n return comparator;\n }\n\n if (transformMethodMatch) {\n // Handle .toLowerCase or .toUpperCase on the property side\n const comparator = getComparator(transformMethodMatch[3]); // e.g., startsWith, endsWith, includes\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Create the property expression for the left side with transformer\n const property = getProperty(schema, transformMethodMatch[1], params);\n\n // Set transformer and locale based on the method\n const method = transformMethodMatch[2];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n property.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n property.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n } else {\n property.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n property.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n }\n\n // Create a ValueExpression for the right side\n let value = getValue(transformMethodMatch[4], params);\n\n // Check if the value also has a transformation (but only if it's not already handled by value-side check)\n const valueTransformMatch = transformMethodMatch[4].match(/^([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)$/);\n\n if (valueTransformMatch) {\n // Create a new ValueExpression with the base value and transformer\n value = new ValueExpression({\n value: valueTransformMatch[1].replace(/^[\"']|[\"']$/g, '') // Remove quotes\n });\n\n // Set transformer and locale based on the method\n const valueMethod = valueTransformMatch[2];\n if (valueMethod === 'toLowerCase' || valueMethod === 'toLocaleLowerCase') {\n value.transformer = 'to-lower-case';\n if (valueMethod === 'toLocaleLowerCase') {\n value.locale = 'en-US'; // Default locale\n }\n } else {\n value.transformer = 'to-upper-case';\n if (valueMethod === 'toLocaleUpperCase') {\n value.locale = 'en-US'; // Default locale\n }\n }\n }\n\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n\n // If the comparison is explicitly to false, mark it as negated\n if (transformMethodMatch[7] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n if (equalityMatch) {\n const left = equalityMatch[1].trim();\n const operator = equalityMatch[2];\n const right = equalityMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left, params);\n const rightIsProperty = isPropertyPath(right, params);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property === value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value === property\n propertySide = right;\n valueSide = left;\n finalOperator = operator;\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, propertySide, params);\n const value = getValue(valueSide, params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n if (comparisonMatch) {\n const left = comparisonMatch[1].trim();\n const operator = comparisonMatch[2];\n const right = comparisonMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left, params);\n const rightIsProperty = isPropertyPath(right, params);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property > value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value > property -> property < value\n propertySide = right;\n valueSide = left;\n finalOperator = getSwappedOperator(operator);\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, propertySide, params);\n const value = getValue(valueSide, params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n // Check for standalone property reference (truthy comparison)\n // Pattern: property name only (e.g., \"w.inStock\" -> w.inStock === true)\n const standalonePropertyMatch = finalExpression.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*(\\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/);\n if (standalonePropertyMatch && isPropertyPath(finalExpression, params)) {\n const comparator = getComparator('===');\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, finalExpression, params);\n const value = getValue('true', params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n // need to parse the value so it matches what the serializer expects\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value as any)))) : value;\n\n return comparator;\n }\n\n // If we get here, the expression is too complex for the current parser\n // This is expected for complex real-world expressions\n throw new Error(`Unsupported expression format: ${finalExpression}`);\n}\n\nconst getComparator = (value: string): ComparatorExpression => {\n\n const comparator = COMPARATOR_MAP.get(value);\n\n if (comparator == null) {\n throw new Error(ERROR_MESSAGES.COMPARATOR_NOT_FOUND(value))\n }\n\n // Return a new instance to avoid modifying the cached one\n return new ComparatorExpression({\n comparator: comparator.comparator,\n negated: comparator.negated,\n strict: comparator.strict\n });\n}\n\nconst getValue = <P extends any>(value: string, params?: { name: string, data: P }): ValueExpression => {\n\n // Early return for string literals\n if (value.startsWith(\"\\'\") || value.startsWith(\"\\\"\")) {\n return new ValueExpression({\n value: value.replace(/\\\"|\\'/g, \"\")\n });\n }\n\n // Early return for null/undefined\n if (value === \"null\") {\n return new ValueExpression({ value: null });\n }\n\n if (value === \"undefined\" || value === \"void 0\") {\n return new ValueExpression({ value: undefined });\n }\n\n // Optimized number parsing with early return\n const numValue = +value;\n if (!isNaN(numValue) && isFinite(numValue)) {\n return new ValueExpression({ value: numValue });\n }\n\n // Handle parameter paths if params are provided\n if (params != null) {\n // Check if this is a parameter path (starts with params.name)\n if (value.startsWith(params.name)) {\n return new ValueExpression({\n value: getValueFromParams(value, params)\n });\n }\n\n // Check if this is a parameter path without the params prefix\n if (value.includes('.')) {\n // Try to extract the parameter path\n const paramMatch = value.match(PARAM_PATH_REGEX);\n if (paramMatch) {\n const potentialParamPath = paramMatch[1];\n try {\n const paramValue = getValueFromParams(`${params.name}.${potentialParamPath}`, params);\n return new ValueExpression({ value: paramValue });\n } catch (e) {\n // Not a parameter path, continue with normal parsing\n }\n }\n }\n }\n\n if (STRINGIFIED_COMPARE_OPERATORS.includes(value)) {\n return new ValueExpression({ value });\n }\n\n if (isNaN(numValue)) {\n // value is a variable passed in by the dev, we cannot evaluate it's value\n // need to fallback to select all by throwing an error\n throw new Error(`Cannot derive value from variable, please pass parameters into the expression.\n\nExample: .where(([x, params]) => x.id === params.id, { id: someVar.id })\nIssue At: ${value}`);\n }\n\n // Default case: return as-is\n return new ValueExpression({ value });\n}\n\nconst getValueFromParams = <P extends any>(value: string, params: { name: string, data: P }) => {\n\n const split = value.split('.');\n\n // Early exit for invalid paths\n if (split.length === 1) {\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n let result = params.data as any;\n\n // For nested params - start from index 1 to skip the params prefix\n for (let i = 1; i < split.length; i++) {\n const name = split[i];\n\n if (name in result) {\n result = result[name];\n continue;\n }\n\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n return result;\n}\n\nconst getProperty = <P extends any>(schema: CompiledSchema<any>, value: string, params?: { name: string, data: P }): PropertyExpression => {\n let pathString: string;\n\n // Handle bracket notation (e.g., entity[\"name\"], entity['name'], entity[p.name], or entity[\\\"name\\\"] with escaped quotes)\n if (value.includes('[') && value.includes(']')) {\n // First try to match literal string brackets: [\"name\"], ['name'], [\\\"name\\\"], [\\'name\\']\n const literalBracketMatches = value.matchAll(/\\[\\\\?[\"']([^\"']+)\\\\?[\"']\\]/g);\n const pathParts: string[] = [];\n let foundLiteral = false;\n\n for (const match of literalBracketMatches) {\n // match[1] is the property name inside the brackets\n const propName = match[1];\n if (propName) {\n pathParts.push(propName);\n foundLiteral = true;\n }\n }\n\n // If no literal matches found, try parameter path in brackets (e.g., [p.name])\n if (!foundLiteral && params) {\n // Match brackets containing parameter paths: [p.name], [params.property], etc.\n const bracketParamMatch = value.match(/\\[([^\\]]+)\\]/);\n if (bracketParamMatch) {\n const bracketContent = bracketParamMatch[1].trim();\n\n // Check if this is a parameter path\n // It should start with params.name (e.g., \"p\") followed by a dot, or be just params.name\n const isParamPath = bracketContent.startsWith(params.name + '.') || bracketContent === params.name;\n\n if (isParamPath || (bracketContent.includes('.') && bracketContent.match(PARAM_PATH_REGEX))) {\n try {\n // Try to resolve as a parameter path\n let paramPath: string;\n if (bracketContent.startsWith(params.name + '.') || bracketContent === params.name) {\n // Already has params.name prefix\n paramPath = bracketContent;\n } else {\n // Add params.name prefix\n const paramMatch = bracketContent.match(PARAM_PATH_REGEX);\n paramPath = paramMatch\n ? `${params.name}.${paramMatch[1]}`\n : `${params.name}.${bracketContent}`;\n }\n\n const resolvedValue = getValueFromParams(paramPath, params);\n // The resolved value should be the property name\n if (typeof resolvedValue === 'string') {\n pathParts.push(resolvedValue);\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } catch (e) {\n // Not a valid parameter path, continue to error\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n }\n\n if (pathParts.length === 0) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n pathString = pathParts.join(\".\");\n } else if (value.includes('.')) {\n // Handle dot notation (e.g., entity.name)\n const pathSplit = value.split(/[?!.]/g).slice(1);\n pathString = pathSplit.join(\".\");\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n // Early exit if no path found\n if (!pathString) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n const found = schema.properties.find(w => w.getAssignmentPath() == pathString);\n\n if (found == null) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n return new PropertyExpression({ property: found });\n}\n\n\n","import { QueryOptionExecutionTarget } from \"../plugins\";\nimport { PropertyInfo } from \"../schema\";\n\nexport type ParsedExpression = {\n expression: Expression;\n // Will be memory when trying to query on an untracked computed property or on a function\n executionTarget: QueryOptionExecutionTarget;\n}\n\n/**\n * The base class for all expression types.\n */\nexport abstract class Expression {\n /** The type of the expression. */\n abstract readonly type: ExpressionType;\n /** The left-hand side of the expression (if applicable). */\n left?: Expression;\n /** The right-hand side of the expression (if applicable). */\n right?: Expression;\n\n constructor(left?: Expression, right?: Expression) {\n this.left = left;\n this.right = right;\n }\n\n static get EMPTY() {\n return new EmptyExpression();\n }\n\n static get NOT_PARSABLE() {\n return new NotParsableExpression();\n }\n\n static isEmpty(expression: Expression) {\n return expression.type === \"empty\" || expression instanceof EmptyExpression;\n }\n\n static isNotParsable(expression: Expression) {\n return expression.type === \"not-parsable\" || expression instanceof NotParsableExpression;\n }\n}\n\nexport class EmptyExpression extends Expression {\n readonly type = \"empty\" as const;\n}\n\nexport class NotParsableExpression extends Expression {\n readonly type = \"not-parsable\" as const;\n}\n\n/**\n * A class representing a comparison operation (e.g., equals, greater-than).\n */\nexport class ComparatorExpression extends Expression {\n /** The type of the expression (always 'comparator'). */\n readonly type = \"comparator\" as const;\n /** The comparator operation (e.g., equals, greater-than). */\n comparator: Comparator;\n /** Whether the comparison is negated (e.g., not equals). */\n negated: boolean;\n /** Whether the comparison is strict (type-sensitive). */\n strict: boolean;\n\n constructor(\n options: {\n comparator: Comparator,\n negated: boolean,\n strict: boolean,\n left?: Expression,\n right?: Expression\n }\n ) {\n super(options.left, options.right);\n this.comparator = options.comparator;\n this.negated = options.negated;\n this.strict = options.strict;\n }\n}\n\n/**\n * A class representing a logical operator (e.g., &&, ||).\n */\nexport class OperatorExpression extends Expression {\n /** The type of the expression (always 'operator'). */\n readonly type = \"operator\" as const;\n /** The logical operator. */\n operator: Operator;\n\n constructor(options: { operator: Operator, left?: Expression, right?: Expression }) {\n super(options.left, options.right);\n this.operator = options.operator;\n }\n}\n\n/**\n * A class representing a property path.\n */\nexport class PropertyExpression extends Expression {\n /** The type of the expression (always 'property'). */\n readonly type = \"property\" as const;\n /** The property info for the path. */\n property: PropertyInfo<any>;\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: { property: PropertyInfo<any> }) {\n super();\n this.property = options.property;\n }\n}\n\n/**\n * A class representing a literal value.\n */\nexport class ValueExpression extends Expression {\n /** The type of the expression (always 'value'). */\n readonly type = \"value\" as const;\n /** The literal value. */\n value: unknown;\n\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: {\n value: unknown\n }) {\n super();\n this.value = options.value;\n }\n}\n\n\n/**\n * The set of possible expression types.\n */\nexport type ExpressionType = \"operator\" | \"comparator\" | \"property\" | \"value\" | \"empty\" | \"not-parsable\";\n\n/**\n * Supported value transformations that can be applied to values.\n */\nexport type Transformer = \"to-lower-case\" | \"to-upper-case\";\n\n/**\n * Supported comparator operations for expressions.\n */\nexport type Comparator =\n | \"equals\"\n | \"starts-with\"\n | \"includes\"\n | \"ends-with\"\n | \"greater-than\"\n | \"greater-than-equals\"\n | \"less-than\"\n | \"less-than-equals\";\n\n/**\n * Supported logical operators for expressions.\n */\nexport type Operator = \"&&\" | \"||\";\n\n/**\n * A function that filters a value of type T and returns a boolean.\n */\nexport type Filter<T extends any> = (value: T) => boolean;\n\n/**\n * A function that filters a value of type T with additional parameters P.\n */\nexport type ParamsFilter<T extends any, P> = (payload: [T, P]) => boolean;\n\n/**\n * A filter that can be either a simple filter or a parameterized filter.\n */\nexport type CompositeFilter<T extends any, P = never> = Filter<T> | ParamsFilter<T, P>;\n\n/**\n * An object that can be filtered using a composite filter and optional parameters.\n */\nexport type Filterable<T extends any, P = any> = {\n /** The filter function. */\n filter: CompositeFilter<T, P>;\n /** Optional parameters for the filter. */\n params?: P;\n}","import { PropertyInfo } from \"../schema\";\nimport { Expression, PropertyExpression } from \"./types\";\n\n/**\n * Extracts all properties referenced in an expression\n * @param expression The expression to analyze\n * @returns Array of PropertyInfo objects referenced in the expression\n */\nexport function getProperties(expression: Expression): PropertyInfo<any>[] {\n const properties: PropertyInfo<any>[] = [];\n\n function traverse(expr: Expression) {\n // If this is a property expression, add it to our collection\n if (expr.type === \"property\") {\n properties.push((expr as PropertyExpression).property);\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n traverse(expr.left);\n }\n if (expr.right) {\n traverse(expr.right);\n }\n }\n\n traverse(expression);\n return properties;\n}\n\nexport function isPropertyExpression(expression: Expression): expression is PropertyExpression {\n return expression.type === \"property\";\n}\n\nexport function forEach(expression: Expression, callback: (expression: Expression) => boolean) {\n function traverse(expr: Expression): boolean {\n // Call the callback for this expression\n // If callback returns false, stop traversing\n if (!callback(expr)) {\n return false;\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n if (!traverse(expr.left)) {\n return false;\n }\n }\n if (expr.right) {\n if (!traverse(expr.right)) {\n return false;\n }\n }\n\n return true;\n }\n\n traverse(expression);\n}","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './parser';\nexport * from './types';\nexport * from './utils';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expressions/index.js","sources":["webpack://@routier/core/./src/assertions/index.ts","webpack://@routier/core/./src/expressions/parser.ts","webpack://@routier/core/./src/expressions/types.ts","webpack://@routier/core/./src/expressions/utils.ts","webpack://@routier/core/./src/utilities/dates.ts","webpack://@routier/core/webpack/runtime/define_property_getters","webpack://@routier/core/webpack/runtime/has_own_property","webpack://@routier/core/webpack/runtime/make_namespace_object","webpack://@routier/core/./src/expressions/index.ts"],"sourcesContent":["import { isDate } from \"../utilities\";\n\nexport function assertDate(data: unknown): asserts data is Date {\n if (isDate(data) === false) {\n throw new TypeError('Value is not a Date');\n }\n}\n\nexport function assertIsNotNull<T>(data: T | null | undefined, message?: string | (() => string)): asserts data is NonNullable<T> {\n if (data == null) {\n if (message == null) {\n throw new TypeError('Assertion failed, data is null');\n }\n\n if (typeof message === \"string\") {\n throw new TypeError(message);\n }\n\n throw new TypeError(message());\n }\n}\n\nexport function assertIsArray<T>(data: unknown, message?: string): asserts data is T[] {\n if (!Array.isArray(data)) {\n throw new TypeError(message ?? 'Assertion failed, data is not of type Array');\n }\n}\n\nexport function assertString(data: unknown, message?: string): asserts data is string {\n if (typeof data !== \"string\") {\n throw new TypeError(message ?? 'Assertion failed, data is not of type String');\n }\n}\n\nexport function assertInstanceOf<T extends new (...args: any[]) => any>(value: unknown, Instance: T): asserts value is T {\n if (value instanceof Instance) {\n return;\n }\n\n if (value != null && typeof value === \"object\" && \"constructor\" in value) {\n throw new TypeError(`Value is not instance of type. Type: ${value.constructor.name}`);\n }\n\n throw new TypeError(`Value is not instance of type`);\n}","import { assertString } from \"../assertions\";\nimport { CompiledSchema, SchemaTypes } from \"../schema\";\nimport { Expression, OperatorExpression, ComparatorExpression, ValueExpression, PropertyExpression, Filter, ParamsFilter, Operator } from \"./types\";\n\n// Pre-compiled regex patterns for better performance\nconst METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(startsWith|endsWith|includes)\\(([^)]+)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst TRANSFORM_METHOD_REGEX = /([a-zA-Z0-9_.]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)\\.(startsWith|endsWith|includes)\\(((?:[^()]|\\([^)]*\\))*)\\)(\\s*(===|==|!==|!=)\\s*(true|false))?/;\nconst EQUALITY_REGEX = /([^=!<>]+?)\\s*(===|==|!==|!=)\\s*(.+)/;\nconst COMPARISON_REGEX = /([^=!<>]+?)\\s*(>=|<=|>|<)\\s*(.+)/;\nconst PARAM_PATH_REGEX = /^([a-zA-Z0-9_.]+)/;\n\n// Pre-compiled regex patterns for comment removal\nconst SINGLE_LINE_COMMENT_REGEX = /\\/\\/.*$/gm;\nconst MULTI_LINE_COMMENT_REGEX = /\\/\\*[\\s\\S]*?\\*\\//g;\nconst WHITESPACE_REGEX = /\\s+/g;\n\n// need to have negated + strict\nconst comparators: Record<string, ComparatorExpression> = {\n startsWith: new ComparatorExpression({\n comparator: \"starts-with\",\n negated: false,\n strict: false\n }),\n endsWith: new ComparatorExpression({\n comparator: \"ends-with\",\n negated: false,\n strict: false\n }),\n includes: new ComparatorExpression({\n comparator: \"includes\",\n negated: false,\n strict: false\n }),\n \"==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: false\n }),\n \"===\": new ComparatorExpression({\n comparator: \"equals\",\n negated: false,\n strict: true\n }),\n \"!=\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: false\n }),\n \"!==\": new ComparatorExpression({\n comparator: \"equals\",\n negated: true,\n strict: true\n }),\n \">=\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: false\n }),\n \">==\": new ComparatorExpression({\n comparator: \"greater-than-equals\",\n negated: false,\n strict: true\n }),\n \"<=\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: false\n }),\n \"<==\": new ComparatorExpression({\n comparator: \"less-than-equals\",\n negated: false,\n strict: true\n }),\n \">\": new ComparatorExpression({\n comparator: \"greater-than\",\n negated: false,\n strict: false\n }),\n \"<\": new ComparatorExpression({\n comparator: \"less-than\",\n negated: false,\n strict: false\n })\n} as const;\n\n// Optimized comparator lookup using Map\nconst COMPARATOR_MAP = new Map(Object.entries(comparators));\n\n// Error message constants\nconst ERROR_MESSAGES = {\n COMPARATOR_NOT_FOUND: (value: string) => `Cannot find comparator: ${value}`,\n PROPERTY_NOT_FOUND: (path: string) => `Error parsing query, could not find PropertyInfo for path: ${path}`,\n PARAM_PATH_NOT_FOUND: (value: string, params: any) => `Cannot find path in params for .where(). Make sure parameters are not used inline.\\r\\nPath: ${value}, Params: ${JSON.stringify(params)}`\n};\n\nconst STRINGIFIED_COMPARE_OPERATORS = [\"true\", \"false\"];\n\nconst parseUnknown = (value: unknown) => {\n assertString(value);\n return JSON.parse(value);\n}\n\nexport const combineExpressions = (...expressions: Expression[]): Expression => {\n\n if (expressions.length === 0) {\n throw new Error(\"combineExpressions requires at least 1 expression\");\n }\n\n\n if (expressions.length === 1) {\n return expressions[0];\n }\n\n // Start with the first expression\n let result = expressions[0];\n\n // Loop through remaining expressions and combine them\n for (let i = 1; i < expressions.length; i++) {\n result = new OperatorExpression({\n operator: \"&&\",\n left: result,\n right: expressions[i]\n });\n }\n\n return result;\n};\n\nexport const toExpression = <T extends any, P extends any>(schema: CompiledSchema<any>, fn: Filter<T> | ParamsFilter<T, P>, params?: P) => {\n const stringifiedFunction = fn.toString();\n\n try {\n\n // Optimized string parsing\n const arrowIndex = stringifiedFunction.indexOf('=>');\n if (arrowIndex === -1) {\n throw new Error(\"Invalid Function\");\n }\n\n const parameterNames = stringifiedFunction.substring(0, arrowIndex).trim();\n let expression = stringifiedFunction.substring(arrowIndex + 2).trim();\n\n // Remove JavaScript comments from the expression\n expression = expression\n .replace(SINGLE_LINE_COMMENT_REGEX, '') // Remove single-line comments\n .replace(MULTI_LINE_COMMENT_REGEX, '') // Remove multi-line comments\n .replace(WHITESPACE_REGEX, ' ') // Normalize whitespace\n .trim();\n\n let parameterData: { name: string, data: P } | undefined = undefined;\n\n if (params != null) {\n let name: string;\n if (parameterNames.includes(\"[\") && parameterNames.includes(\"]\")) {\n // Optimized parameter name extraction\n const commaIndex = parameterNames.indexOf(\",\");\n if (commaIndex !== -1) {\n const bracketIndex = parameterNames.indexOf(\"]\", commaIndex);\n if (bracketIndex !== -1) {\n name = parameterNames.substring(commaIndex + 1, bracketIndex).trim();\n }\n }\n }\n\n parameterData = {\n name,\n data: params\n };\n }\n\n return parseExpressionToTree(schema, expression, parameterData);\n } catch (error) {\n console.warn(\"Error parsing expression\", {\n error,\n collectionName: schema.collectionName,\n params,\n selector: stringifiedFunction\n });\n return Expression.NOT_PARSABLE;\n }\n}\n\nconst parseExpressionToTree = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }) => {\n\n const parse = (exp: string): Expression => {\n // Remove any wrapping parentheses\n exp = exp.trim();\n if (exp.startsWith('(') && exp.endsWith(')')) {\n let depth = 0;\n let isWrapper = true;\n for (let i = 0; i < exp.length; i++) {\n const char = exp[i];\n if (char === '(') {\n depth++;\n } else if (char === ')') {\n depth--;\n if (depth < 0) break; // Early exit for invalid parentheses\n }\n // Early exit if we find a closing parenthesis that's not the last character\n if (depth === 0 && i !== exp.length - 1) {\n isWrapper = false;\n break; // Early exit\n }\n // Early exit if we go negative (invalid parentheses)\n if (depth < 0) {\n isWrapper = false;\n break;\n }\n }\n if (isWrapper) {\n exp = exp.slice(1, -1).trim();\n }\n }\n\n // Parse based on the operator precedence\n let operator: Operator | null = null, splitIndex = -1, depth = 0;\n\n for (let i = 0; i < exp.length - 1; i++) {\n const char = exp[i];\n if (char === '(') depth++;\n else if (char === ')') depth--;\n else if (depth === 0) {\n // Optimized operator detection using character comparison\n if (char === '&' && exp[i + 1] === '&') {\n operator = '&&';\n splitIndex = i;\n break; // AND takes precedence over OR\n } else if (operator === null && char === '|' && exp[i + 1] === '|') {\n operator = '||';\n splitIndex = i;\n }\n }\n }\n\n if (operator) {\n const left = exp.slice(0, splitIndex).trim();\n const right = exp.slice(splitIndex + 2).trim();\n\n return new OperatorExpression({\n operator,\n left: parse(left),\n right: parse(right)\n });\n }\n\n // If no operator, try to parse as a condition\n return parseCondition(schema, exp, params);\n }\n\n return parse(expression);\n}\n\nconst convertAndAssignValue = (valueExpression: unknown, propertyPathExpression: unknown) => {\n\n assertIsPropertyPathExpression(propertyPathExpression);\n\n assertIsValueExpression(valueExpression)\n\n const propertyType = propertyPathExpression.property.type;\n\n valueExpression.value = converters[propertyType](valueExpression.value);\n}\n\nconst converters: Record<SchemaTypes, (value: unknown) => unknown> = {\n Array: v => v,\n Boolean: v => v == null ? v : Boolean(v),\n Computed: v => v,\n Date: v => v,\n Definition: v => v,\n Function: v => v,\n Number: v => v == null ? v : Number(v),\n Object: v => v,\n String: v => v == null ? v : String(v)\n};\n\nconst isExpression = (value: unknown): value is Expression => {\n return typeof value === \"object\" && value !== null && \"type\" in value;\n}\n\nfunction assertIsExpression(value: unknown): asserts value is Expression {\n if (isExpression(value) === false) {\n throw new Error(\"Assertion Failed: Value is not a Expression\")\n }\n}\n\nfunction assertIsPropertyPathExpression(value: unknown): asserts value is PropertyExpression {\n\n assertIsExpression(value);\n\n if (!(\"property\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a PropertyPathExpression\")\n }\n}\n\nfunction assertIsValueExpression(value: unknown): asserts value is ValueExpression {\n\n assertIsExpression(value);\n\n if (!(\"value\" in value)) {\n throw new Error(\"Assertion Failed: Value is not a ValueExpression\")\n }\n}\n\n// Helper function to detect if a string is a property path\nconst isPropertyPath = (value: string, params?: { name: string, data: any }): boolean => {\n // Check for dot notation (e.g., entity.name)\n if (value.includes('.') && value.match(/^[a-zA-Z0-9_.]+$/) !== null) {\n return true;\n }\n // Check for bracket notation with literal strings (e.g., entity[\"name\"], entity['name'], or entity[\\\"name\\\"] with escaped quotes)\n const literalBracketPattern = /^[a-zA-Z_$][a-zA-Z0-9_$]*(\\[\\\\?[\"'][^\"']+\\\\?[\"']\\])+$/;\n if (literalBracketPattern.test(value)) {\n return true;\n }\n // Check for bracket notation with parameter paths (e.g., entity[p.name], entity[params.property])\n if (params && value.includes('[') && value.includes(']')) {\n const bracketMatch = value.match(/\\[([^\\]]+)\\]/);\n if (bracketMatch) {\n const bracketContent = bracketMatch[1].trim();\n // Check if it's a parameter path - should start with params.name followed by dot, or be just params.name\n const isParamPath = bracketContent.startsWith(params.name + '.') || bracketContent === params.name;\n if (isParamPath || (bracketContent.includes('.') && bracketContent.match(PARAM_PATH_REGEX))) {\n return true;\n }\n }\n }\n return false;\n};\n\n// Helper function to determine if we need to swap the operator for reversed comparisons\nconst getSwappedOperator = (operator: string): string => {\n const swapMap: Record<string, string> = {\n '>': '<',\n '<': '>',\n '>=': '<=',\n '<=': '>='\n };\n return swapMap[operator] || operator;\n};\n\nconst parseCondition = <P extends any>(schema: CompiledSchema<any>, expression: string, params?: { name: string, data: P }): Expression => {\n\n // Optimized string operations - single trim operation\n const trimmed = expression.trim();\n const isNegation = trimmed.startsWith('!');\n const finalExpression = isNegation ? trimmed.slice(1).trim() : trimmed;\n\n // Enhanced pattern matching for complex expressions\n const methodMatch = finalExpression.match(METHOD_REGEX);\n const transformMethodMatch = finalExpression.match(TRANSFORM_METHOD_REGEX);\n const equalityMatch = finalExpression.match(EQUALITY_REGEX);\n const comparisonMatch = finalExpression.match(COMPARISON_REGEX);\n\n if (methodMatch) {\n // Handle .startsWith or .endsWith\n const comparator = getComparator(methodMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Check if the left side is a parameter path\n const leftSide = methodMatch[1];\n const rightSide = methodMatch[3];\n\n if (params && leftSide.startsWith(params.name)) {\n // This is a parameter path on the left side (e.g., params.distinctPlayers.includes(entity.playerId))\n // For includes method, we need to swap left and right sides\n if (methodMatch[2] === 'includes') {\n\n const property = getProperty(schema, rightSide, params);\n const value = getValue(leftSide, params); // retrieve the original value\n const serializer = property.property.valueSerializer;\n comparator.left = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n comparator.right = property;\n } else {\n // For other methods, return NOT_PARSABLE for now\n return Expression.NOT_PARSABLE;\n }\n } else {\n // Normal case: property on left, value on right\n const property = getProperty(schema, leftSide, params);\n const serializer = property.property.valueSerializer;\n const value = getValue(rightSide, params); // retrieve the original value\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n }\n\n // If the comparison is explicitly to false, mark it as negated\n if (methodMatch[6] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n // Check for transformations on the value side (right side of comparison) - check this FIRST\n const valueTransformMatch = finalExpression.match(/([^=!<>]+?)\\s*(===|==|!==|!=)\\s*([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)/);\n if (valueTransformMatch) {\n const comparator = getComparator(valueTransformMatch[2]);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, valueTransformMatch[1].trim(), params);\n const serializer = property.property.valueSerializer;\n const value = getValue(valueTransformMatch[3], params); // retrieve the original value\n\n // Create the property expression for the left side (no transformer)\n const propertyExpression = property;\n\n // Create a ValueExpression for the right side with transformer\n const valueExpression = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n\n // Set transformer and locale based on the method\n const method = valueTransformMatch[4];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n valueExpression.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n valueExpression.locale = 'en-US';\n }\n } else {\n valueExpression.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n valueExpression.locale = 'en-US';\n }\n }\n\n comparator.left = propertyExpression;\n comparator.right = valueExpression;\n\n return comparator;\n }\n\n if (transformMethodMatch) {\n // Handle .toLowerCase or .toUpperCase on the property side\n const comparator = getComparator(transformMethodMatch[3]); // e.g., startsWith, endsWith, includes\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n // Create the property expression for the left side with transformer\n const property = getProperty(schema, transformMethodMatch[1], params);\n\n // Set transformer and locale based on the method\n const method = transformMethodMatch[2];\n if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {\n property.transformer = 'to-lower-case';\n if (method === 'toLocaleLowerCase') {\n property.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n } else {\n property.transformer = 'to-upper-case';\n if (method === 'toLocaleUpperCase') {\n property.locale = 'en-US'; // Default locale, could be extracted from method call\n }\n }\n\n // Create a ValueExpression for the right side\n let value = getValue(transformMethodMatch[4], params);\n\n // Check if the value also has a transformation (but only if it's not already handled by value-side check)\n const valueTransformMatch = transformMethodMatch[4].match(/^([^)]+)\\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\\(\\)$/);\n\n if (valueTransformMatch) {\n // Create a new ValueExpression with the base value and transformer\n value = new ValueExpression({\n value: valueTransformMatch[1].replace(/^[\"']|[\"']$/g, '') // Remove quotes\n });\n\n // Set transformer and locale based on the method\n const valueMethod = valueTransformMatch[2];\n if (valueMethod === 'toLowerCase' || valueMethod === 'toLocaleLowerCase') {\n value.transformer = 'to-lower-case';\n if (valueMethod === 'toLocaleLowerCase') {\n value.locale = 'en-US'; // Default locale\n }\n } else {\n value.transformer = 'to-upper-case';\n if (valueMethod === 'toLocaleUpperCase') {\n value.locale = 'en-US'; // Default locale\n }\n }\n }\n\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n\n // If the comparison is explicitly to false, mark it as negated\n if (transformMethodMatch[7] === \"false\") {\n comparator.negated = true;\n }\n\n return comparator;\n }\n\n if (equalityMatch) {\n const left = equalityMatch[1].trim();\n const operator = equalityMatch[2];\n const right = equalityMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left, params);\n const rightIsProperty = isPropertyPath(right, params);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property === value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value === property\n propertySide = right;\n valueSide = left;\n finalOperator = operator;\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, propertySide, params);\n const value = getValue(valueSide, params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n if (comparisonMatch) {\n const left = comparisonMatch[1].trim();\n const operator = comparisonMatch[2];\n const right = comparisonMatch[3].trim();\n\n const leftIsProperty = isPropertyPath(left, params);\n const rightIsProperty = isPropertyPath(right, params);\n\n // Determine which side is the property and which is the value\n let propertySide: string, valueSide: string, finalOperator: string;\n\n if (leftIsProperty && !rightIsProperty) {\n // Normal case: property > value\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n } else if (!leftIsProperty && rightIsProperty) {\n // Reversed case: value > property -> property < value\n propertySide = right;\n valueSide = left;\n finalOperator = getSwappedOperator(operator);\n } else {\n // Both sides look like properties or neither does - assume left is property\n propertySide = left;\n valueSide = right;\n finalOperator = operator;\n }\n\n const comparator = getComparator(finalOperator);\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, propertySide, params);\n const value = getValue(valueSide, params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n\n convertAndAssignValue(comparator.right, comparator.left);\n\n return comparator;\n }\n\n // Check for standalone property reference (truthy comparison)\n // Pattern: property name only (e.g., \"w.inStock\" -> w.inStock === true)\n const standalonePropertyMatch = finalExpression.match(/^[a-zA-Z_$][a-zA-Z0-9_$]*(\\.[a-zA-Z_$][a-zA-Z0-9_$]*)*$/);\n if (standalonePropertyMatch && isPropertyPath(finalExpression, params)) {\n const comparator = getComparator('===');\n\n if (isNegation) {\n comparator.negated = isNegation;\n }\n\n const property = getProperty(schema, finalExpression, params);\n const value = getValue('true', params);\n const serializer = property.property.valueSerializer;\n\n comparator.left = property;\n // need to parse the value so it matches what the serializer expects\n comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;\n\n return comparator;\n }\n\n // If we get here, the expression is too complex for the current parser\n // This is expected for complex real-world expressions\n throw new Error(`Unsupported expression format: ${finalExpression}`);\n}\n\nconst getComparator = (value: string): ComparatorExpression => {\n\n const comparator = COMPARATOR_MAP.get(value);\n\n if (comparator == null) {\n throw new Error(ERROR_MESSAGES.COMPARATOR_NOT_FOUND(value))\n }\n\n // Return a new instance to avoid modifying the cached one\n return new ComparatorExpression({\n comparator: comparator.comparator,\n negated: comparator.negated,\n strict: comparator.strict\n });\n}\n\nconst getValue = <P extends any>(value: string, params?: { name: string, data: P }): ValueExpression => {\n\n // Early return for string literals\n if (value.startsWith(\"\\'\") || value.startsWith(\"\\\"\")) {\n return new ValueExpression({\n value: value.replace(/\\\"|\\'/g, \"\")\n });\n }\n\n // Early return for null/undefined\n if (value === \"null\") {\n return new ValueExpression({ value: null });\n }\n\n if (value === \"undefined\" || value === \"void 0\") {\n return new ValueExpression({ value: undefined });\n }\n\n // Optimized number parsing with early return\n const numValue = +value;\n if (!isNaN(numValue) && isFinite(numValue)) {\n return new ValueExpression({ value: numValue });\n }\n\n // Handle parameter paths if params are provided\n if (params != null) {\n // Check if this is a parameter path (starts with params.name)\n if (value.startsWith(params.name)) {\n return new ValueExpression({\n value: getValueFromParams(value, params)\n });\n }\n\n // Check if this is a parameter path without the params prefix\n if (value.includes('.')) {\n // Try to extract the parameter path\n const paramMatch = value.match(PARAM_PATH_REGEX);\n if (paramMatch) {\n const potentialParamPath = paramMatch[1];\n try {\n const paramValue = getValueFromParams(`${params.name}.${potentialParamPath}`, params);\n return new ValueExpression({ value: paramValue });\n } catch (e) {\n // Not a parameter path, continue with normal parsing\n }\n }\n }\n }\n\n if (STRINGIFIED_COMPARE_OPERATORS.includes(value)) {\n return new ValueExpression({ value });\n }\n\n if (isNaN(numValue)) {\n // value is a variable passed in by the dev, we cannot evaluate it's value\n // need to fallback to select all by throwing an error\n throw new Error(`Cannot derive value from variable, please pass parameters into the expression.\n\nExample: .where(([x, params]) => x.id === params.id, { id: someVar.id })\nIssue At: ${value}`);\n }\n\n // Default case: return as-is\n return new ValueExpression({ value });\n}\n\nconst getValueFromParams = <P extends any>(value: string, params: { name: string, data: P }) => {\n\n const split = value.split('.');\n\n // Early exit for invalid paths\n if (split.length === 1) {\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n let result = params.data as any;\n\n // For nested params - start from index 1 to skip the params prefix\n for (let i = 1; i < split.length; i++) {\n const name = split[i];\n\n if (name in result) {\n result = result[name];\n continue;\n }\n\n throw new Error(ERROR_MESSAGES.PARAM_PATH_NOT_FOUND(value, params.data))\n }\n\n return result;\n}\n\nconst getProperty = <P extends any>(schema: CompiledSchema<any>, value: string, params?: { name: string, data: P }): PropertyExpression => {\n let pathString: string;\n\n // Handle bracket notation (e.g., entity[\"name\"], entity['name'], entity[p.name], or entity[\\\"name\\\"] with escaped quotes)\n if (value.includes('[') && value.includes(']')) {\n // First try to match literal string brackets: [\"name\"], ['name'], [\\\"name\\\"], [\\'name\\']\n const literalBracketMatches = value.matchAll(/\\[\\\\?[\"']([^\"']+)\\\\?[\"']\\]/g);\n const pathParts: string[] = [];\n let foundLiteral = false;\n\n for (const match of literalBracketMatches) {\n // match[1] is the property name inside the brackets\n const propName = match[1];\n if (propName) {\n pathParts.push(propName);\n foundLiteral = true;\n }\n }\n\n // If no literal matches found, try parameter path in brackets (e.g., [p.name])\n if (!foundLiteral && params) {\n // Match brackets containing parameter paths: [p.name], [params.property], etc.\n const bracketParamMatch = value.match(/\\[([^\\]]+)\\]/);\n if (bracketParamMatch) {\n const bracketContent = bracketParamMatch[1].trim();\n\n // Check if this is a parameter path\n // It should start with params.name (e.g., \"p\") followed by a dot, or be just params.name\n const isParamPath = bracketContent.startsWith(params.name + '.') || bracketContent === params.name;\n\n if (isParamPath || (bracketContent.includes('.') && bracketContent.match(PARAM_PATH_REGEX))) {\n try {\n // Try to resolve as a parameter path\n let paramPath: string;\n if (bracketContent.startsWith(params.name + '.') || bracketContent === params.name) {\n // Already has params.name prefix\n paramPath = bracketContent;\n } else {\n // Add params.name prefix\n const paramMatch = bracketContent.match(PARAM_PATH_REGEX);\n paramPath = paramMatch\n ? `${params.name}.${paramMatch[1]}`\n : `${params.name}.${bracketContent}`;\n }\n\n const resolvedValue = getValueFromParams(paramPath, params);\n // The resolved value should be the property name\n if (typeof resolvedValue === 'string') {\n pathParts.push(resolvedValue);\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } catch (e) {\n // Not a valid parameter path, continue to error\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n }\n\n if (pathParts.length === 0) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n pathString = pathParts.join(\".\");\n } else if (value.includes('.')) {\n // Handle dot notation (e.g., entity.name)\n const pathSplit = value.split(/[?!.]/g).slice(1);\n pathString = pathSplit.join(\".\");\n } else {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n // Early exit if no path found\n if (!pathString) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n const found = schema.properties.find(w => w.getAssignmentPath() == pathString);\n\n if (found == null) {\n throw new Error(ERROR_MESSAGES.PROPERTY_NOT_FOUND(value));\n }\n\n return new PropertyExpression({ property: found });\n}\n\n\n","import { QueryOptionExecutionTarget } from \"../plugins\";\nimport { PropertyInfo } from \"../schema\";\n\nexport type ParsedExpression = {\n expression: Expression;\n // Will be memory when trying to query on an untracked computed property or on a function\n executionTarget: QueryOptionExecutionTarget;\n}\n\n/**\n * The base class for all expression types.\n */\nexport abstract class Expression {\n /** The type of the expression. */\n abstract readonly type: ExpressionType;\n /** The left-hand side of the expression (if applicable). */\n left?: Expression;\n /** The right-hand side of the expression (if applicable). */\n right?: Expression;\n\n constructor(left?: Expression, right?: Expression) {\n this.left = left;\n this.right = right;\n }\n\n static get EMPTY() {\n return new EmptyExpression();\n }\n\n static get NOT_PARSABLE() {\n return new NotParsableExpression();\n }\n\n static isEmpty(expression: Expression) {\n return expression.type === \"empty\" || expression instanceof EmptyExpression;\n }\n\n static isNotParsable(expression: Expression) {\n return expression.type === \"not-parsable\" || expression instanceof NotParsableExpression;\n }\n}\n\nexport class EmptyExpression extends Expression {\n readonly type = \"empty\" as const;\n}\n\nexport class NotParsableExpression extends Expression {\n readonly type = \"not-parsable\" as const;\n}\n\n/**\n * A class representing a comparison operation (e.g., equals, greater-than).\n */\nexport class ComparatorExpression extends Expression {\n /** The type of the expression (always 'comparator'). */\n readonly type = \"comparator\" as const;\n /** The comparator operation (e.g., equals, greater-than). */\n comparator: Comparator;\n /** Whether the comparison is negated (e.g., not equals). */\n negated: boolean;\n /** Whether the comparison is strict (type-sensitive). */\n strict: boolean;\n\n constructor(\n options: {\n comparator: Comparator,\n negated: boolean,\n strict: boolean,\n left?: Expression,\n right?: Expression\n }\n ) {\n super(options.left, options.right);\n this.comparator = options.comparator;\n this.negated = options.negated;\n this.strict = options.strict;\n }\n}\n\n/**\n * A class representing a logical operator (e.g., &&, ||).\n */\nexport class OperatorExpression extends Expression {\n /** The type of the expression (always 'operator'). */\n readonly type = \"operator\" as const;\n /** The logical operator. */\n operator: Operator;\n\n constructor(options: { operator: Operator, left?: Expression, right?: Expression }) {\n super(options.left, options.right);\n this.operator = options.operator;\n }\n}\n\n/**\n * A class representing a property path.\n */\nexport class PropertyExpression extends Expression {\n /** The type of the expression (always 'property'). */\n readonly type = \"property\" as const;\n /** The property info for the path. */\n property: PropertyInfo<any>;\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: { property: PropertyInfo<any> }) {\n super();\n this.property = options.property;\n }\n}\n\n/**\n * A class representing a literal value.\n */\nexport class ValueExpression extends Expression {\n /** The type of the expression (always 'value'). */\n readonly type = \"value\" as const;\n /** The literal value. */\n value: unknown;\n\n transformer: Transformer | null = null;\n locale: string | null = null;\n\n constructor(options: {\n value: unknown\n }) {\n super();\n this.value = options.value;\n }\n}\n\n\n/**\n * The set of possible expression types.\n */\nexport type ExpressionType = \"operator\" | \"comparator\" | \"property\" | \"value\" | \"empty\" | \"not-parsable\";\n\n/**\n * Supported value transformations that can be applied to values.\n */\nexport type Transformer = \"to-lower-case\" | \"to-upper-case\";\n\n/**\n * Supported comparator operations for expressions.\n */\nexport type Comparator =\n | \"equals\"\n | \"starts-with\"\n | \"includes\"\n | \"ends-with\"\n | \"greater-than\"\n | \"greater-than-equals\"\n | \"less-than\"\n | \"less-than-equals\";\n\n/**\n * Supported logical operators for expressions.\n */\nexport type Operator = \"&&\" | \"||\";\n\n/**\n * A function that filters a value of type T and returns a boolean.\n */\nexport type Filter<T extends any> = (value: T) => boolean;\n\n/**\n * A function that filters a value of type T with additional parameters P.\n */\nexport type ParamsFilter<T extends any, P> = (payload: [T, P]) => boolean;\n\n/**\n * A filter that can be either a simple filter or a parameterized filter.\n */\nexport type CompositeFilter<T extends any, P = never> = Filter<T> | ParamsFilter<T, P>;\n\n/**\n * An object that can be filtered using a composite filter and optional parameters.\n */\nexport type Filterable<T extends any, P = any> = {\n /** The filter function. */\n filter: CompositeFilter<T, P>;\n /** Optional parameters for the filter. */\n params?: P;\n}","import { PropertyInfo } from \"../schema\";\nimport { Expression, PropertyExpression } from \"./types\";\n\n/**\n * Extracts all properties referenced in an expression\n * @param expression The expression to analyze\n * @returns Array of PropertyInfo objects referenced in the expression\n */\nexport function getProperties(expression: Expression): PropertyInfo<any>[] {\n const properties: PropertyInfo<any>[] = [];\n\n function traverse(expr: Expression) {\n // If this is a property expression, add it to our collection\n if (expr.type === \"property\") {\n properties.push((expr as PropertyExpression).property);\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n traverse(expr.left);\n }\n if (expr.right) {\n traverse(expr.right);\n }\n }\n\n traverse(expression);\n return properties;\n}\n\nexport function isPropertyExpression(expression: Expression): expression is PropertyExpression {\n return expression.type === \"property\";\n}\n\nexport function forEach(expression: Expression, callback: (expression: Expression) => boolean) {\n function traverse(expr: Expression): boolean {\n // Call the callback for this expression\n // If callback returns false, stop traversing\n if (!callback(expr)) {\n return false;\n }\n\n // Traverse left and right expressions if they exist\n if (expr.left) {\n if (!traverse(expr.left)) {\n return false;\n }\n }\n if (expr.right) {\n if (!traverse(expr.right)) {\n return false;\n }\n }\n\n return true;\n }\n\n traverse(expression);\n}","export const isDate = (data: unknown): data is Date => {\n if (data == null) {\n return false;\n }\n\n if (typeof data !== \"object\") {\n return false;\n }\n\n return data instanceof Date;\n}","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export * from './parser';\nexport * from './types';\nexport * from './utils';"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3887,7 +3887,7 @@ class TagCollection {
3887
3887
  return this.data.keys();
3888
3888
  }
3889
3889
  [Symbol.dispose]() {
3890
- this.data = null;
3890
+ this.data.clear();
3891
3891
  }
3892
3892
  [Symbol.iterator]() {
3893
3893
  return this.data[Symbol.iterator]();
@@ -3998,8 +3998,10 @@ __webpack_require__.d(__webpack_exports__, {
3998
3998
  combineExpressions: () => (combineExpressions),
3999
3999
  toExpression: () => (toExpression)
4000
4000
  });
4001
+ /* ESM import */var _assertions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../assertions */ "./src/assertions/index.ts");
4001
4002
  /* ESM import */var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./src/expressions/types.ts");
4002
4003
 
4004
+
4003
4005
  // Pre-compiled regex patterns for better performance
4004
4006
  const METHOD_REGEX = /([a-zA-Z0-9_.]+)\.(startsWith|endsWith|includes)\(([^)]+)\)(\s*(===|==|!==|!=)\s*(true|false))?/;
4005
4007
  const TRANSFORM_METHOD_REGEX = /([a-zA-Z0-9_.]+)\.(toLowerCase|toUpperCase|toLocaleLowerCase|toLocaleUpperCase)\(\)\.(startsWith|endsWith|includes)\(((?:[^()]|\([^)]*\))*)\)(\s*(===|==|!==|!=)\s*(true|false))?/;
@@ -4087,6 +4089,10 @@ const ERROR_MESSAGES = {
4087
4089
  PARAM_PATH_NOT_FOUND: (value, params) => `Cannot find path in params for .where(). Make sure parameters are not used inline.\r\nPath: ${value}, Params: ${JSON.stringify(params)}`
4088
4090
  };
4089
4091
  const STRINGIFIED_COMPARE_OPERATORS = ["true", "false"];
4092
+ const parseUnknown = (value) => {
4093
+ (0,_assertions__WEBPACK_IMPORTED_MODULE_1__.assertString)(value);
4094
+ return JSON.parse(value);
4095
+ };
4090
4096
  const combineExpressions = (...expressions) => {
4091
4097
  if (expressions.length === 0) {
4092
4098
  throw new Error("combineExpressions requires at least 1 expression");
@@ -4107,8 +4113,8 @@ const combineExpressions = (...expressions) => {
4107
4113
  return result;
4108
4114
  };
4109
4115
  const toExpression = (schema, fn, params) => {
4116
+ const stringifiedFunction = fn.toString();
4110
4117
  try {
4111
- const stringifiedFunction = fn.toString();
4112
4118
  // Optimized string parsing
4113
4119
  const arrowIndex = stringifiedFunction.indexOf('=>');
4114
4120
  if (arrowIndex === -1) {
@@ -4142,8 +4148,13 @@ const toExpression = (schema, fn, params) => {
4142
4148
  }
4143
4149
  return parseExpressionToTree(schema, expression, parameterData);
4144
4150
  }
4145
- catch (e) {
4146
- console.warn("Error parsing expression", e);
4151
+ catch (error) {
4152
+ console.warn("Error parsing expression", {
4153
+ error,
4154
+ collectionName: schema.collectionName,
4155
+ params,
4156
+ selector: stringifiedFunction
4157
+ });
4147
4158
  return _types__WEBPACK_IMPORTED_MODULE_0__.Expression.NOT_PARSABLE;
4148
4159
  }
4149
4160
  };
@@ -4312,7 +4323,7 @@ const parseCondition = (schema, expression, params) => {
4312
4323
  const property = getProperty(schema, rightSide, params);
4313
4324
  const value = getValue(leftSide, params); // retrieve the original value
4314
4325
  const serializer = property.property.valueSerializer;
4315
- comparator.left = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4326
+ comparator.left = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4316
4327
  comparator.right = property;
4317
4328
  }
4318
4329
  else {
@@ -4326,7 +4337,7 @@ const parseCondition = (schema, expression, params) => {
4326
4337
  const serializer = property.property.valueSerializer;
4327
4338
  const value = getValue(rightSide, params); // retrieve the original value
4328
4339
  comparator.left = property;
4329
- comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4340
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4330
4341
  }
4331
4342
  // If the comparison is explicitly to false, mark it as negated
4332
4343
  if (methodMatch[6] === "false") {
@@ -4347,7 +4358,7 @@ const parseCondition = (schema, expression, params) => {
4347
4358
  // Create the property expression for the left side (no transformer)
4348
4359
  const propertyExpression = property;
4349
4360
  // Create a ValueExpression for the right side with transformer
4350
- const valueExpression = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4361
+ const valueExpression = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4351
4362
  // Set transformer and locale based on the method
4352
4363
  const method = valueTransformMatch[4];
4353
4364
  if (method === 'toLowerCase' || method === 'toLocaleLowerCase') {
@@ -4414,7 +4425,7 @@ const parseCondition = (schema, expression, params) => {
4414
4425
  }
4415
4426
  const serializer = property.property.valueSerializer;
4416
4427
  comparator.left = property;
4417
- comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4428
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4418
4429
  // If the comparison is explicitly to false, mark it as negated
4419
4430
  if (transformMethodMatch[7] === "false") {
4420
4431
  comparator.negated = true;
@@ -4455,7 +4466,7 @@ const parseCondition = (schema, expression, params) => {
4455
4466
  const value = getValue(valueSide, params);
4456
4467
  const serializer = property.property.valueSerializer;
4457
4468
  comparator.left = property;
4458
- comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4469
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4459
4470
  convertAndAssignValue(comparator.right, comparator.left);
4460
4471
  return comparator;
4461
4472
  }
@@ -4493,7 +4504,7 @@ const parseCondition = (schema, expression, params) => {
4493
4504
  const value = getValue(valueSide, params);
4494
4505
  const serializer = property.property.valueSerializer;
4495
4506
  comparator.left = property;
4496
- comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4507
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4497
4508
  convertAndAssignValue(comparator.right, comparator.left);
4498
4509
  return comparator;
4499
4510
  }
@@ -4510,7 +4521,7 @@ const parseCondition = (schema, expression, params) => {
4510
4521
  const serializer = property.property.valueSerializer;
4511
4522
  comparator.left = property;
4512
4523
  // need to parse the value so it matches what the serializer expects
4513
- comparator.right = serializer ? getValue(String(property.property.valueSerializer(JSON.parse(value.value)))) : value;
4524
+ comparator.right = serializer ? getValue(String(property.property.valueSerializer(parseUnknown(value.value)))) : value;
4514
4525
  return comparator;
4515
4526
  }
4516
4527
  // If we get here, the expression is too complex for the current parser
@@ -8988,6 +8999,7 @@ __webpack_require__.d(__webpack_exports__, {
8988
8999
  stringifyObject: () => (/* reexport safe */ _strings__WEBPACK_IMPORTED_MODULE_1__.stringifyObject),
8989
9000
  toEventArray: () => (/* reexport safe */ _dbPluginEventUtils__WEBPACK_IMPORTED_MODULE_8__.toEventArray),
8990
9001
  toMap: () => (/* reexport safe */ _arrays__WEBPACK_IMPORTED_MODULE_0__.toMap),
9002
+ unsafeCast: () => (/* reexport safe */ _unsafeCast__WEBPACK_IMPORTED_MODULE_10__.unsafeCast),
8991
9003
  uuid: () => (/* reexport safe */ _uuid__WEBPACK_IMPORTED_MODULE_5__.uuid),
8992
9004
  uuidv4: () => (/* reexport safe */ _uuid__WEBPACK_IMPORTED_MODULE_5__.uuidv4)
8993
9005
  });
@@ -9001,6 +9013,8 @@ __webpack_require__.d(__webpack_exports__, {
9001
9013
  /* ESM import */var _queryOptionsCollection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./queryOptionsCollection */ "./src/utilities/queryOptionsCollection.ts");
9002
9014
  /* ESM import */var _dbPluginEventUtils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dbPluginEventUtils */ "./src/utilities/dbPluginEventUtils.ts");
9003
9015
  /* ESM import */var _functions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./functions */ "./src/utilities/functions.ts");
9016
+ /* ESM import */var _unsafeCast__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./unsafeCast */ "./src/utilities/unsafeCast.ts");
9017
+
9004
9018
 
9005
9019
 
9006
9020
 
@@ -9267,6 +9281,21 @@ function stringifyPlainObject(obj, maxDepth, currentDepth) {
9267
9281
  }
9268
9282
 
9269
9283
 
9284
+ }),
9285
+ "./src/utilities/unsafeCast.ts":
9286
+ /*!*************************************!*\
9287
+ !*** ./src/utilities/unsafeCast.ts ***!
9288
+ \*************************************/
9289
+ (function (__unused_webpack_module, __webpack_exports__, __webpack_require__) {
9290
+ __webpack_require__.r(__webpack_exports__);
9291
+ __webpack_require__.d(__webpack_exports__, {
9292
+ unsafeCast: () => (unsafeCast)
9293
+ });
9294
+ const unsafeCast = (value) => {
9295
+ return value;
9296
+ };
9297
+
9298
+
9270
9299
  }),
9271
9300
  "./src/utilities/uuid.ts":
9272
9301
  /*!*******************************!*\
@@ -9493,6 +9522,7 @@ __webpack_require__.d(__webpack_exports__, {
9493
9522
  toExpression: () => (/* reexport safe */ _expressions__WEBPACK_IMPORTED_MODULE_4__.toExpression),
9494
9523
  toMap: () => (/* reexport safe */ _utilities__WEBPACK_IMPORTED_MODULE_10__.toMap),
9495
9524
  toPromise: () => (/* reexport safe */ _results__WEBPACK_IMPORTED_MODULE_8__.toPromise),
9525
+ unsafeCast: () => (/* reexport safe */ _utilities__WEBPACK_IMPORTED_MODULE_10__.unsafeCast),
9496
9526
  uuid: () => (/* reexport safe */ _utilities__WEBPACK_IMPORTED_MODULE_10__.uuid),
9497
9527
  uuidv4: () => (/* reexport safe */ _utilities__WEBPACK_IMPORTED_MODULE_10__.uuidv4)
9498
9528
  });
@@ -9626,8 +9656,9 @@ var __webpack_exports__toEventArray = __webpack_exports__.toEventArray;
9626
9656
  var __webpack_exports__toExpression = __webpack_exports__.toExpression;
9627
9657
  var __webpack_exports__toMap = __webpack_exports__.toMap;
9628
9658
  var __webpack_exports__toPromise = __webpack_exports__.toPromise;
9659
+ var __webpack_exports__unsafeCast = __webpack_exports__.unsafeCast;
9629
9660
  var __webpack_exports__uuid = __webpack_exports__.uuid;
9630
9661
  var __webpack_exports__uuidv4 = __webpack_exports__.uuidv4;
9631
- export { __webpack_exports__AndBuilder as AndBuilder, __webpack_exports__ArrayBuilder as ArrayBuilder, __webpack_exports__AssignmentBuilder as AssignmentBuilder, __webpack_exports__AsyncPipeline as AsyncPipeline, __webpack_exports__Block as Block, __webpack_exports__BulkPersistChanges as BulkPersistChanges, __webpack_exports__BulkPersistResult as BulkPersistResult, __webpack_exports__Capability as Capability, __webpack_exports__CodeBuilder as CodeBuilder, __webpack_exports__ComparatorExpression as ComparatorExpression, __webpack_exports__ContainerBlock as ContainerBlock, __webpack_exports__DataTranslator as DataTranslator, __webpack_exports__EmptyExpression as EmptyExpression, __webpack_exports__EphemeralDataPlugin as EphemeralDataPlugin, __webpack_exports__Expression as Expression, __webpack_exports__FunctionBuilder as FunctionBuilder, __webpack_exports__FunctionFactoryBuilder as FunctionFactoryBuilder, __webpack_exports__HashType as HashType, __webpack_exports__IdSet as IdSet, __webpack_exports__IfBuilder as IfBuilder, __webpack_exports__JsonTranslator as JsonTranslator, __webpack_exports__MemoryDataCollection as MemoryDataCollection, __webpack_exports__NotParsableExpression as NotParsableExpression, __webpack_exports__ObjectBuilder as ObjectBuilder, __webpack_exports__OperatorExpression as OperatorExpression, __webpack_exports__OptimisticReplicationDbPlugin as OptimisticReplicationDbPlugin, __webpack_exports__PerformanceCapability as PerformanceCapability, __webpack_exports__PluginEventResult as PluginEventResult, __webpack_exports__PropertyExpression as PropertyExpression, __webpack_exports__PropertyInfo as PropertyInfo, __webpack_exports__Query as Query, __webpack_exports__QueryOptionsCollection as QueryOptionsCollection, __webpack_exports__QueryOrdering as QueryOrdering, __webpack_exports__RawBuilder as RawBuilder, __webpack_exports__ReadonlySchemaCollection as ReadonlySchemaCollection, __webpack_exports__ReplicationDbPlugin as ReplicationDbPlugin, __webpack_exports__Result as Result, __webpack_exports__SchemaArray as SchemaArray, __webpack_exports__SchemaBase as SchemaBase, __webpack_exports__SchemaBoolean as SchemaBoolean, __webpack_exports__SchemaCollection as SchemaCollection, __webpack_exports__SchemaComputed as SchemaComputed, __webpack_exports__SchemaDate as SchemaDate, __webpack_exports__SchemaDefault as SchemaDefault, __webpack_exports__SchemaDeserialize as SchemaDeserialize, __webpack_exports__SchemaDistinct as SchemaDistinct, __webpack_exports__SchemaError as SchemaError, __webpack_exports__SchemaFrom as SchemaFrom, __webpack_exports__SchemaFunction as SchemaFunction, __webpack_exports__SchemaIdentity as SchemaIdentity, __webpack_exports__SchemaIndex as SchemaIndex, __webpack_exports__SchemaKey as SchemaKey, __webpack_exports__SchemaNullable as SchemaNullable, __webpack_exports__SchemaNumber as SchemaNumber, __webpack_exports__SchemaObject as SchemaObject, __webpack_exports__SchemaOptional as SchemaOptional, __webpack_exports__SchemaPersistChanges as SchemaPersistChanges, __webpack_exports__SchemaPersistResult as SchemaPersistResult, __webpack_exports__SchemaReadonly as SchemaReadonly, __webpack_exports__SchemaSerialize as SchemaSerialize, __webpack_exports__SchemaString as SchemaString, __webpack_exports__SchemaTracked as SchemaTracked, __webpack_exports__SchemaTypes as SchemaTypes, __webpack_exports__SlotBlock as SlotBlock, __webpack_exports__SqlTranslator as SqlTranslator, __webpack_exports__StringBuilder as StringBuilder, __webpack_exports__SyncronousQueue as SyncronousQueue, __webpack_exports__TagCollection as TagCollection, __webpack_exports__TracingCapability as TracingCapability, __webpack_exports__TrampolinePipeline as TrampolinePipeline, __webpack_exports__TranslatedArrayValue as TranslatedArrayValue, __webpack_exports__TranslatedGroupValue as TranslatedGroupValue, __webpack_exports__TranslatedSingleValue as TranslatedSingleValue, __webpack_exports__ValueExpression as ValueExpression, __webpack_exports__VariableBuilder as VariableBuilder, __webpack_exports__WorkPipeline as WorkPipeline, __webpack_exports__assertDate as assertDate, __webpack_exports__assertInstanceOf as assertInstanceOf, __webpack_exports__assertIsArray as assertIsArray, __webpack_exports__assertIsNotNull as assertIsNotNull, __webpack_exports__assertString as assertString, __webpack_exports__cast as cast, __webpack_exports__clone as clone, __webpack_exports__combineExpressions as combineExpressions, __webpack_exports__combineQueryOptionsCollections as combineQueryOptionsCollections, __webpack_exports__fastHash as fastHash, __webpack_exports__forEach as forEach, __webpack_exports__getProperties as getProperties, __webpack_exports__hash as hash, __webpack_exports__isDate as isDate, __webpack_exports__isNodeRuntime as isNodeRuntime, __webpack_exports__isPropertyExpression as isPropertyExpression, __webpack_exports__measure as measure, __webpack_exports__noop as noop, __webpack_exports__now as now, __webpack_exports__resolveBulkPersistChanges as resolveBulkPersistChanges, __webpack_exports__s as s, __webpack_exports__stringifyObject as stringifyObject, __webpack_exports__toEventArray as toEventArray, __webpack_exports__toExpression as toExpression, __webpack_exports__toMap as toMap, __webpack_exports__toPromise as toPromise, __webpack_exports__uuid as uuid, __webpack_exports__uuidv4 as uuidv4 };
9662
+ export { __webpack_exports__AndBuilder as AndBuilder, __webpack_exports__ArrayBuilder as ArrayBuilder, __webpack_exports__AssignmentBuilder as AssignmentBuilder, __webpack_exports__AsyncPipeline as AsyncPipeline, __webpack_exports__Block as Block, __webpack_exports__BulkPersistChanges as BulkPersistChanges, __webpack_exports__BulkPersistResult as BulkPersistResult, __webpack_exports__Capability as Capability, __webpack_exports__CodeBuilder as CodeBuilder, __webpack_exports__ComparatorExpression as ComparatorExpression, __webpack_exports__ContainerBlock as ContainerBlock, __webpack_exports__DataTranslator as DataTranslator, __webpack_exports__EmptyExpression as EmptyExpression, __webpack_exports__EphemeralDataPlugin as EphemeralDataPlugin, __webpack_exports__Expression as Expression, __webpack_exports__FunctionBuilder as FunctionBuilder, __webpack_exports__FunctionFactoryBuilder as FunctionFactoryBuilder, __webpack_exports__HashType as HashType, __webpack_exports__IdSet as IdSet, __webpack_exports__IfBuilder as IfBuilder, __webpack_exports__JsonTranslator as JsonTranslator, __webpack_exports__MemoryDataCollection as MemoryDataCollection, __webpack_exports__NotParsableExpression as NotParsableExpression, __webpack_exports__ObjectBuilder as ObjectBuilder, __webpack_exports__OperatorExpression as OperatorExpression, __webpack_exports__OptimisticReplicationDbPlugin as OptimisticReplicationDbPlugin, __webpack_exports__PerformanceCapability as PerformanceCapability, __webpack_exports__PluginEventResult as PluginEventResult, __webpack_exports__PropertyExpression as PropertyExpression, __webpack_exports__PropertyInfo as PropertyInfo, __webpack_exports__Query as Query, __webpack_exports__QueryOptionsCollection as QueryOptionsCollection, __webpack_exports__QueryOrdering as QueryOrdering, __webpack_exports__RawBuilder as RawBuilder, __webpack_exports__ReadonlySchemaCollection as ReadonlySchemaCollection, __webpack_exports__ReplicationDbPlugin as ReplicationDbPlugin, __webpack_exports__Result as Result, __webpack_exports__SchemaArray as SchemaArray, __webpack_exports__SchemaBase as SchemaBase, __webpack_exports__SchemaBoolean as SchemaBoolean, __webpack_exports__SchemaCollection as SchemaCollection, __webpack_exports__SchemaComputed as SchemaComputed, __webpack_exports__SchemaDate as SchemaDate, __webpack_exports__SchemaDefault as SchemaDefault, __webpack_exports__SchemaDeserialize as SchemaDeserialize, __webpack_exports__SchemaDistinct as SchemaDistinct, __webpack_exports__SchemaError as SchemaError, __webpack_exports__SchemaFrom as SchemaFrom, __webpack_exports__SchemaFunction as SchemaFunction, __webpack_exports__SchemaIdentity as SchemaIdentity, __webpack_exports__SchemaIndex as SchemaIndex, __webpack_exports__SchemaKey as SchemaKey, __webpack_exports__SchemaNullable as SchemaNullable, __webpack_exports__SchemaNumber as SchemaNumber, __webpack_exports__SchemaObject as SchemaObject, __webpack_exports__SchemaOptional as SchemaOptional, __webpack_exports__SchemaPersistChanges as SchemaPersistChanges, __webpack_exports__SchemaPersistResult as SchemaPersistResult, __webpack_exports__SchemaReadonly as SchemaReadonly, __webpack_exports__SchemaSerialize as SchemaSerialize, __webpack_exports__SchemaString as SchemaString, __webpack_exports__SchemaTracked as SchemaTracked, __webpack_exports__SchemaTypes as SchemaTypes, __webpack_exports__SlotBlock as SlotBlock, __webpack_exports__SqlTranslator as SqlTranslator, __webpack_exports__StringBuilder as StringBuilder, __webpack_exports__SyncronousQueue as SyncronousQueue, __webpack_exports__TagCollection as TagCollection, __webpack_exports__TracingCapability as TracingCapability, __webpack_exports__TrampolinePipeline as TrampolinePipeline, __webpack_exports__TranslatedArrayValue as TranslatedArrayValue, __webpack_exports__TranslatedGroupValue as TranslatedGroupValue, __webpack_exports__TranslatedSingleValue as TranslatedSingleValue, __webpack_exports__ValueExpression as ValueExpression, __webpack_exports__VariableBuilder as VariableBuilder, __webpack_exports__WorkPipeline as WorkPipeline, __webpack_exports__assertDate as assertDate, __webpack_exports__assertInstanceOf as assertInstanceOf, __webpack_exports__assertIsArray as assertIsArray, __webpack_exports__assertIsNotNull as assertIsNotNull, __webpack_exports__assertString as assertString, __webpack_exports__cast as cast, __webpack_exports__clone as clone, __webpack_exports__combineExpressions as combineExpressions, __webpack_exports__combineQueryOptionsCollections as combineQueryOptionsCollections, __webpack_exports__fastHash as fastHash, __webpack_exports__forEach as forEach, __webpack_exports__getProperties as getProperties, __webpack_exports__hash as hash, __webpack_exports__isDate as isDate, __webpack_exports__isNodeRuntime as isNodeRuntime, __webpack_exports__isPropertyExpression as isPropertyExpression, __webpack_exports__measure as measure, __webpack_exports__noop as noop, __webpack_exports__now as now, __webpack_exports__resolveBulkPersistChanges as resolveBulkPersistChanges, __webpack_exports__s as s, __webpack_exports__stringifyObject as stringifyObject, __webpack_exports__toEventArray as toEventArray, __webpack_exports__toExpression as toExpression, __webpack_exports__toMap as toMap, __webpack_exports__toPromise as toPromise, __webpack_exports__unsafeCast as unsafeCast, __webpack_exports__uuid as uuid, __webpack_exports__uuidv4 as uuidv4 };
9632
9663
 
9633
9664
  //# sourceMappingURL=index.js.map