{"version":3,"sources":["../../src/utils.ts","../../src/expression.ts","../../src/helpers.ts","../../src/compile.ts","../../src/nodes/Location.ts","../../src/nodes/Node.ts","../../src/nodes/Block.ts","../../src/nodes/Token.ts","../../src/parse.ts","../../src/expand.ts"],"sourcesContent":["import isNumber from 'is-number';\nimport { Segmenter } from 'intl-segmenter'; // optimized version of Intl.Segmenter\nexport { isNumber };\n\nconst { defineProperty } = Reflect;\n\nexport const isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\nexport const unquote = str => {\n  if (!str) return '';\n  return str.replace(/^['\"`]|['\"`]$/g, '');\n};\n\nexport const define = (node, key, value) => {\n  defineProperty(node, key, {\n    configurable: true,\n    enumerable: false,\n    writable: true,\n    value\n  });\n};\n\nexport const size = value => {\n  if (value == null) return 0;\n  if (isNumber(value)) return String(value).length;\n  if (isObject(value)) return Object.keys(value).length;\n  if (typeof value.length === 'number') return value.length;\n  if (typeof value.size === 'number') return value.size;\n  return null;\n};\n\nexport const isValidObject = val => {\n  return isObject(val) || Array.isArray(val) || typeof val === 'function';\n};\n\nexport const isSafeKey = key => {\n  return key !== '__proto__' && key !== 'constructor' && key !== 'prototype';\n};\n\nexport const isValid = (key, data, options) => {\n  if (!isSafeKey(key)) {\n    return false;\n  }\n\n  if (typeof options.isValid === 'function') {\n    return options.isValid(key, data);\n  }\n\n  return true;\n};\n\nexport const isArrayLike = obj => {\n  return obj != null && typeof obj === 'object' && typeof obj.length === 'number';\n};\n\nexport const toKey = value => {\n  if (typeof value === 'symbol') return value;\n  if (value === 0 && 1 / value === -Infinity) return '-0';\n  return String(value);\n};\n\nexport const findSafeBreakPoint = input => {\n  // Work backwards from the end of the input\n  for (let i = input.length - 1; i >= 0; i--) {\n    // Check for whitespace or simple ASCII characters\n    if (/\\s/.test(input[i]) || /^[\\x20-\\x7E]$/.test(input[i])) {\n      return i + 1;\n    }\n  }\n\n  // If no safe break points were found, return the full length\n  return input.length;\n};\n\nexport const getSegments = (input, language = 'en', granularity) => {\n  const segmenter = new Segmenter(language, { granularity, localeMatcher: 'best fit' });\n  return Array.from(segmenter.segment(input)).map(segment => segment.segment);\n};\n\nexport const getGraphemes = (input, language = 'en', maxChunkLength = 500) => {\n  const graphemes = [];\n  let position = 0;\n\n  while (position < input.length) {\n    const remainingText = input.slice(position);\n    const chunkSize = Math.min(maxChunkLength, remainingText.length);\n    const potentialChunk = remainingText.slice(0, chunkSize);\n\n    // Find a safe position to break the chunk\n    const breakPoint = findSafeBreakPoint(potentialChunk);\n    const chunk = potentialChunk.slice(0, breakPoint);\n\n    // Process the chunk with Intl.Segmenter\n    const chunkSegments = getSegments(chunk, language, 'grapheme');\n    graphemes.push(...chunkSegments);\n\n    position += breakPoint;\n  }\n\n  return graphemes;\n};\n","function parse(expression) {\n  let pos = 0;\n\n  function peek() {\n    return expression[pos];\n  }\n\n  function consume() {\n    return expression[pos++];\n  }\n\n  function skipWs() {\n    while (pos < expression.length && /\\s/.test(peek())) {\n      pos++;\n    }\n  }\n\n  function parseNum() {\n    let n = '';\n    while (pos < expression.length && /\\d/.test(peek())) {\n      n += consume();\n    }\n    return { type: 'number', val: parseInt(n, 10) };\n  }\n\n  function parseIdent() {\n    let id = '';\n    while (pos < expression.length && /[\\w$]/.test(peek())) {\n      id += consume();\n    }\n    return id;\n  }\n\n  function parsePath() {\n    const parts = [parseIdent()];\n\n    while (peek() === '.') {\n      consume();\n      parts.push(parseIdent());\n    }\n\n    return { type: 'path', parts };\n  }\n\n  function parsePrimary() {\n    skipWs();\n\n    const ch = peek();\n    if (/\\d/.test(ch)) {\n      return parseNum();\n    }\n\n    if (/[\\w$]/.test(ch)) {\n      return parsePath();\n    }\n\n    if (ch === '(') {\n      consume();\n      const node = parseExpr();\n      skipWs();\n      if (peek() === ')') consume();\n      return node;\n    }\n\n    return null;\n  }\n\n  function parseExpr() {\n    let left = parsePrimary();\n\n    while (true) {\n      skipWs();\n\n      const op = peek();\n      if (op !== '+' && op !== '-') {\n        break;\n      }\n\n      consume();\n      const right = parsePrimary();\n      left = { type: 'binary', op, left, right };\n    }\n\n    return left;\n  }\n\n  return parseExpr();\n}\n\nfunction evaluateExpression(node, data) {\n  if (!node) return undefined;\n\n  switch (node.type) {\n    case 'number': {\n      return node.val;\n    }\n\n    case 'path': {\n      let val = data;\n      for (const p of node.parts) {\n        if (val == null) return undefined;\n        val = val[p];\n      }\n      return val;\n    }\n\n    case 'binary': {\n      const l = evaluateExpression(node.left, data);\n      const r = evaluateExpression(node.right, data);\n      if (node.op === '+') return l + r;\n      if (node.op === '-') return l - r;\n      return undefined;\n    }\n\n    default: {\n      return undefined;\n    }\n  }\n}\n\nexport function evaluate(expression: string, data) {\n  const ast = parse(expression);\n  return evaluateExpression(ast, data);\n}\n","import { getGraphemes, isObject, size as utilsSize } from '~/utils';\n\nexport const first = value => {\n  if (!value) return;\n\n  if (value instanceof Set || value instanceof Map) {\n    value = [...value];\n  }\n\n  if (isObject(value)) {\n    return typeof value.first === 'function' ? value.first() : value.first;\n  }\n\n  if (Array.isArray(value)) {\n    return value[0];\n  }\n\n  if (typeof value === 'string') {\n    const graphemes = getGraphemes(value.slice(0, 20));\n    return graphemes[0];\n  }\n\n  return value[0];\n};\n\nexport const last = value => {\n  if (!value) return;\n\n  if (value instanceof Set || value instanceof Map) {\n    value = [...value];\n  }\n\n  if (isObject(value)) {\n    return typeof value.last === 'function' ? value.last() : value.last;\n  }\n\n  if (Array.isArray(value)) {\n    return value[value.length - 1];\n  }\n\n  if (typeof value === 'string') {\n    const graphemes = getGraphemes(value.slice(-20));\n    return graphemes[graphemes.length - 1];\n  }\n\n  return value[value.length - 1];\n};\n\nexport const length = value => {\n  if (typeof value?.length === 'number') {\n    return value.length;\n  }\n\n  if (typeof value?.size === 'number') {\n    return value.size;\n  }\n\n  return size(value);\n};\n\nexport const size = value => {\n  if (value === null) {\n    return 1;\n  }\n\n  if (typeof value?.size === 'number') {\n    return value.size;\n  }\n\n  if (typeof value?.length === 'number') {\n    return value.length;\n  }\n\n  return utilsSize(value);\n};\n","import { isObject, isSafeKey, unquote } from '~/utils';\nimport { evaluate } from '~/expression';\nimport { expand } from '~/expand';\nimport * as helpers from '~/helpers';\n\nexport interface Node {\n  type: string;\n  value?: string;\n  nodes?: Node[];\n  skip?: boolean;\n  symbol?: symbol;\n  parent?: Node;\n  siblings?: Node[];\n  match?: string[];\n}\n\nexport interface Options {\n  helpers?: Record<string, Function>;\n  resolve?: (target: unknown, prop: PropertyKey, value: unknown, state: { segments: PropertyKey[]; index: number }) => unknown;\n  strict?: boolean;\n}\n\nexport const compile = (ast: Node, data: Record<string, unknown> = {}, options: Options = {}): unknown => {\n  const orig = { ...data };\n  let context: unknown = orig;\n  let prev: unknown = context;\n  const segments: PropertyKey[] = [];\n  const fns = options.helpers ? { ...helpers, ...options.helpers } : helpers;\n  const resolveValue = (target: unknown, prop: PropertyKey, value: unknown): unknown => {\n    const index = segments.push(prop) - 1;\n    return options.resolve?.(target, prop, value, { segments, index }) ?? value;\n  };\n\n  const resolve = (node: Node): void => {\n    if (node.skip || node.type === 'separator') {\n      return;\n    }\n\n    if (context === undefined) {\n      return;\n    }\n\n    if (node.type === 'paren') {\n      const args: unknown[] = [];\n\n      for (let i = 1; i < node.nodes!.length - 1; i++) {\n        const child = node.nodes![i];\n\n        switch (child.type) {\n          case 'integer':\n            args.push(Number(child.value));\n            break;\n          case 'quoted':\n            args.push(unquote(child.value!));\n            break;\n          case 'symbol':\n            args.push(Symbol.for(child.value!));\n            break;\n          case 'ident':\n            args.push(expand(context, child.value!));\n            break;\n          default: {\n            break;\n          }\n        }\n      }\n\n      context = `(${args.join('..')})`;\n      return;\n    }\n\n    if (node.nodes) {\n      if (node.type !== 'root') {\n        const inner = node.nodes.slice(1, -1);\n\n        if (inner.some(n => n.value === ' ')) {\n          try {\n            const text = inner.map(n => n.value).join('');\n            resolve({ type: 'ident', value: evaluate(text, data) });\n            return;\n          } catch {}\n        }\n\n        if (inner.length === 1 && inner[0].type === 'ident') {\n          resolve(inner[0]);\n          return;\n        }\n\n        if (node.type === 'bracket' && inner.some(n => n.type === 'bracket')) {\n          const value = expand(orig, node.output.slice(1, -1), options);\n\n          if (value === undefined) {\n            context = undefined;\n            return;\n          }\n\n          prev = context;\n          context = resolveValue(context, value, context?.[value]);\n          return;\n        }\n      }\n\n      node.nodes.forEach(child => resolve(child));\n      return;\n    }\n\n    if (node.type === 'symbol') {\n      prev = context;\n\n      for (const symbol of Object.getOwnPropertySymbols(context)) {\n        if (symbol === node.symbol || symbol.toString() === node.symbol!.toString()) {\n          context = resolveValue(context, symbol, context[symbol]);\n          return;\n        }\n      }\n\n      const symbol = node.symbol || Symbol.for(node.value!);\n      context = resolveValue(context, symbol, context[symbol]);\n      return;\n    }\n\n    if (node.type === 'ident') {\n      if (!isSafeKey(node.value!)) {\n        context = undefined;\n        return;\n      }\n\n      let value = node.value!;\n\n      if (node.parent?.type === 'bracket') {\n        let temp = orig;\n        value = expand(temp, value);\n\n        if (value === undefined) {\n          context = undefined;\n          return;\n        }\n\n        if (typeof value === 'number') {\n          prev = context;\n          context = resolveValue(context, value, context[value]);\n          return;\n        }\n\n        if (isObject(value)) {\n          const siblings = node.siblings!.filter(n => ['ident', 'quoted', 'symbol'].includes(n.type));\n          let index = siblings.indexOf(node) + 1;\n          let next = siblings[index];\n\n          while (isObject(value) && isObject(next) && temp) {\n            const key = next.value!;\n            value = expand(value, key);\n            next.skip = true;\n            temp = expand(temp, value);\n            next = siblings[++index];\n          }\n        }\n      }\n\n      const target = context;\n      prev = target;\n      context = resolveValue(target, value, target?.[value]);\n\n      if (context !== undefined) {\n        if (typeof context === 'function') {\n          context = context.call(prev);\n        }\n\n        return;\n      }\n\n      context = target;\n      const helper = fns[value];\n\n      if (typeof helper === 'function') {\n        context = helper(context);\n      }\n\n      if (context === undefined && options.strict === true) {\n        throw new Error(`Variable is undefined: \"${node.value}\"`);\n      }\n\n      return;\n    }\n\n    if (node.type === 'integer' || node.type === 'number') {\n      if (node.parent.type === 'bracket') {\n        const index = node.parent.nodes.indexOf(node);\n        const next = node.parent.nodes[index + 1];\n        const after = node.parent.nodes[index + 2];\n\n        if (next?.type === 'range' && (after?.type === 'integer' || after?.type === 'number')) {\n          next.skip = true;\n          after.skip = true;\n          const start = Number(node.value);\n          const end = Number(after.value);\n          const range = Array.from({ length: end - start + 1 }, (_, i) => start + i);\n          context = range.map(i => resolveValue(context, i, context[i]));\n          return;\n        }\n      }\n\n      prev = context;\n      const key = Number(node.value);\n      context = resolveValue(context, key, context[key]);\n      return;\n    }\n\n    if (node.type === 'quoted') {\n      prev = context;\n      const key = node.match![2];\n      context = resolveValue(context, key, context[key]);\n    }\n  };\n\n  resolve(ast);\n\n  if (typeof context === 'function') {\n    context.context = prev;\n  }\n\n  if (ast.nodes?.length > 0 && context === orig) {\n    return undefined;\n  }\n\n  return context;\n};\n\nexport default compile;\n","export class Position {\n  index: number;\n  line: number;\n  col: number;\n\n  constructor(loc: { index: number; line: number; col: number }) {\n    this.index = loc.index;\n    this.line = loc.line;\n    this.col = loc.col;\n  }\n}\n\nexport class Location {\n  start: Position;\n  end: Position;\n\n  constructor(start: Position, end: Position) {\n    this.start = start;\n    this.end = end;\n  }\n\n  slice(input: string): string {\n    return input.slice(...this.range);\n  }\n\n  get range(): [number, number] {\n    return [this.start.index, this.end.index];\n  }\n\n  get lines(): [number, number] {\n    return [this.start.line, this.end.line];\n  }\n}\n\nexport const location = (loc: { index: number; line: number; col: number }) => {\n  const start = new Position(loc);\n\n  return (node: unknown) => {\n    node.loc = new Location(start, new Position(loc));\n    return node;\n  };\n};\n\nlocation.Position = Position;\nlocation.Location = Location;\nlocation.location = location;\n\nexport default Location;\n","import { define } from '~/utils';\n\nexport class Node {\n  type: string;\n  value: string;\n  output?: string;\n  symbol?: string;\n  parent?: { nodes: Node[] };\n\n  constructor(node: {\n    type: string;\n    value?: string;\n    output?: string;\n    symbol?: string;\n    alt?: unknown;\n    match?: unknown;\n    loc?: unknown;\n  }) {\n    this.type = node.type;\n    this.value = node.value || '';\n\n    if (node.output != null && node.output !== '') {\n      this.output = node.output;\n    }\n\n    if (node.symbol) {\n      this.symbol = node.symbol;\n    }\n\n    define(this, 'alt', node.alt);\n    define(this, 'match', node.match);\n    define(this, 'loc', node.loc);\n  }\n\n  get siblings(): Node[] {\n    return this.parent?.nodes || [];\n  }\n}\n\nexport default Node;\n","import { define } from '~/utils';\nimport { Node } from './Node';\n\nexport class Block extends Node {\n  nodes: unknown[];\n\n  constructor(node: unknown) {\n    super(node);\n    this.nodes = node.nodes || [];\n  }\n\n  append(input: string): void {\n    // eslint-disable-next-line\n    this.parent && this.parent.append(input);\n    this.output = this.output || '';\n    this.output += input;\n  }\n\n  push(node: unknown): void {\n    define(node, 'parent', this);\n    this.nodes.push(node);\n  }\n}\n\nexport default Block;\n","const { defineProperty } = Reflect;\n\nexport class Token {\n  type: string;\n  value: unknown;\n  loc: unknown;\n  match: unknown;\n\n  constructor(token: { type: string; value: unknown; loc: unknown; match: unknown }) {\n    this.type = token.type;\n    this.value = token.value;\n    defineProperty(this, 'loc', { value: token.loc, writable: true });\n    defineProperty(this, 'match', { value: token.match });\n  }\n}\n\nexport default Token;\n","import { location } from './nodes/Location';\nimport { Block } from './nodes/Block';\nimport { Token } from './nodes/Token';\nimport { Node } from './nodes/Node';\nimport * as utils from './utils';\n\nconst QUOTED_STRING = /^(['\"`])((?:\\\\.|(?!\\1)[\\s\\S])*?)(\\1)/;\nconst IDENT_DOT = /^([a-zA-Z_][-a-zA-Z0-9_.]*(?<!\\.))/;\nconst IDENT = /^([a-zA-Z_$][a-zA-Z0-9_$-]*(?<!-))/;\nconst NUMBER = /^(-?[0-9]+(?:\\.[0-9]+)?|-?Infinity|NaN)/;\nconst RANGE = /^\\.\\.(?=[0-9a-z])/i;\nconst SYMBOL = /^Symbol\\((.*?)\\)/;\n\ninterface ParseOptions {\n  separator?: string;\n  newlines?: boolean;\n}\n\ninterface Location {\n  index: number;\n  line: number;\n  col: number;\n  row: number;\n}\n\nexport const parse = (input = '', options: ParseOptions = {}) => {\n  if (!utils.isObject(options)) options = {};\n\n  const loc: Location = { index: 0, line: 1, col: 0, row: 1 };\n  let pos = location(loc);\n\n  const str = String(input);\n  const ast = new Block({ type: 'root' });\n  ast.output = '';\n\n  const stack = [ast];\n  const stash = [];\n\n  const tokens: Token[] = [];\n  let remaining = str;\n  let block = ast;\n  let token: Token | undefined;\n  let match: RegExpExecArray | null;\n  let prev: Node | undefined;\n\n  let separator = /^\\./;\n  let IDENTITY = IDENT;\n  if (typeof options.separator === 'string') {\n    separator = new RegExp(`^\\\\${options.separator.replace(/^[\\\\^]+/, '')}`);\n    IDENTITY = IDENT_DOT;\n  }\n\n  const eos = () => remaining === undefined || remaining === '';\n  const scan = (regex: RegExp, type: string = 'text') => {\n    if ((match = regex.exec(remaining))) {\n      consume(match[0]);\n      return new Token({ type, value: match[0], match });\n    }\n  };\n\n  const updateLocation = (value: string, len: number) => {\n    const i = value.lastIndexOf('\\n');\n    loc.index += len;\n    loc.col = ~i ? len - i : loc.col + len;\n    loc.row += Math.max(0, value.split('\\n').length - 1);\n  };\n\n  const consume = (value: string, len: number = value.length) => {\n    updateLocation(value, len);\n    remaining = remaining.slice(len);\n    return value;\n  };\n\n  const drop = () => {\n    if (stash.length) {\n      block.push(stash.shift() as Node);\n    }\n  };\n\n  const shouldPush = (node: Node) => {\n    return node.type !== 'newline' || options.newlines !== false;\n  };\n\n  const push = (node: Node) => {\n    pos(node);\n\n    if (prev?.type === 'ident' && node.type === 'ident') {\n      block.append(node.output || node.match[0]);\n      prev.value += node.value;\n      return;\n    }\n\n    if (!shouldPush(node)) return;\n    block.push(node);\n\n    if (node.nodes) {\n      stack.push(node);\n      block = node;\n    } else {\n      block.append(node.output || node.match[0]);\n      tokens.push(node);\n    }\n\n    pos = location(loc);\n    prev = node;\n\n    if (block.type === 'root') {\n      drop();\n    }\n  };\n\n  const pop = () => {\n    const parent = stack.pop();\n    block = stack[stack.length - 1];\n    return parent;\n  };\n\n  const advance = () => {\n    /**\n     * Escaped text\n     */\n\n    if ((token = scan(/^\\\\+/, 'escaped'))) {\n      if (token.value.length % 2 === 1) {\n        token.value += consume(remaining[0]);\n      }\n\n      if (token.value === '\\\\.') {\n        token.type = 'ident';\n        token.value = '.';\n        token.output = '\\\\.';\n      }\n\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Symbols\n     */\n\n    if ((token = scan(SYMBOL, 'symbol'))) {\n      token.value = token.match[1];\n      token.symbol = Symbol.for(token.value);\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Brackets\n     */\n\n    if ((token = scan(/^\\[/, 'left_bracket'))) {\n      token.index = tokens.length;\n      push(new Block({ type: 'bracket' }));\n      push(new Node(token));\n      return;\n    }\n\n    if ((token = scan(/^\\]/, 'right_bracket'))) {\n      push(new Node(token));\n\n      if (block.type === 'bracket') {\n        pop();\n      }\n      return;\n    }\n\n    /**\n     * Parens\n     */\n\n    if ((token = scan(/^\\(/, 'left_paren'))) {\n      token.index = tokens.length;\n      push(new Block({ type: 'paren' }));\n      push(new Node(token));\n      return;\n    }\n\n    if ((token = scan(/^\\)/, 'right_paren'))) {\n      push(new Node(token));\n\n      if (block.type === 'paren') {\n        pop();\n      }\n      return;\n    }\n\n    /**\n     * Ranges\n     */\n\n    if (block.type === 'bracket' && (token = scan(RANGE, 'range'))) {\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Separator\n     */\n\n    if (!options.separator && (token = scan(separator, 'separator'))) {\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Integer\n     */\n\n    if ((token = scan(/^[0-9]+/, 'integer'))) {\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Identifier\n     */\n\n    if ((token = scan(IDENTITY, 'ident'))) {\n      push(new Node(token));\n      return;\n    }\n\n    if (options.separator && options.separator !== '.') {\n      if ((token = scan(separator, 'separator'))) {\n        push(new Node(token));\n        return;\n      }\n    }\n\n    /**\n     * Quoted string\n     */\n\n    if ((token = scan(QUOTED_STRING, 'quoted'))) {\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Number\n     */\n\n    if ((token = scan(NUMBER, 'number'))) {\n      if (token.value === '-0') {\n        token.alt = '0';\n      }\n\n      push(new Node(token));\n      return;\n    }\n\n    /**\n     * Text (anything not matched by previous scanners)\n     */\n\n    push(new Node(scan(/^(.)/, 'text')));\n  };\n\n  while (!eos()) advance();\n  return { ast, tokens, output: ast.output };\n};\n","import { compile } from '~/compile';\nimport { parse } from '~/parse';\nimport { isObject, isValidObject, isValid } from '~/utils';\n\n// const METHOD_REGEX = /([[\"()]|\\.(?:blank|empty|first|last|length|nil|size)(\\.|$))/;\nconst METHOD_REGEX = /(\\[[^[\\]]+?\\]|\\.(?:blank|empty|first|last|length|nil|size)(\\.|$))/;\n\nexport const expand = (data, path, options = {}) => {\n  if (!isObject(options)) {\n    options = { default: options };\n  }\n\n  const fallback = options.default !== undefined ? options.default : options.fallback;\n  const helpers = options.helpers;\n  const resolveValue = (target, prop, value, state) => {\n    return options.resolve?.(target, prop, value, state) ?? value;\n  };\n  const readValue = (target, key) => {\n    const value = target?.[key];\n    return value === undefined && typeof target?.get === 'function' ? target.get(key) : value;\n  };\n\n  if (data && typeof path === 'string') {\n    if (path.startsWith('[') && path.endsWith(']') && !path.slice(1).includes('[')) {\n      const prop = path.slice(1, -1);\n      const value = readValue(data, prop);\n\n      if (isValid(prop, data, options)) {\n        const resolved = resolveValue(data, prop, value, { segments: [prop], index: 0 });\n        if (resolved !== undefined) {\n          return resolved;\n        }\n      }\n    }\n\n    const value = readValue(data, path);\n    const hasSegments = /(?<!\\\\)\\.(?!$)/.test(path);\n    if ((!hasSegments || value !== undefined) && isValid(path, data, options)) {\n      const resolved = resolveValue(data, path, value, { segments: [path], index: 0 });\n      if (resolved !== undefined) {\n        return resolved;\n      }\n    }\n  }\n\n  if ((typeof path === 'symbol' || typeof path === 'number') && isValid(path, data, options)) {\n    return resolveValue(data, path, readValue(data, path), { segments: [path], index: 0 });\n  }\n\n  if (typeof path !== 'string' && !Array.isArray(path)) {\n    return data;\n  }\n\n  if (!isValidObject(data)) {\n    return fallback;\n  }\n\n  const value = readValue(data, path);\n  if ((value !== undefined || path in data) && isValid(path, data, options)) {\n    return resolveValue(data, path, value, { segments: [path], index: 0 });\n  }\n\n  if ((Array.isArray(path) || !METHOD_REGEX.test(path)) && !options.separator) {\n    const segs = Array.isArray(path) ? path : path.split(/(?<!\\\\)\\.(?!$)/);\n    let ctx = data;\n    let prev = ctx;\n    let i = 0;\n\n    if (segs.length === 0) {\n      return fallback;\n    }\n\n    for (; i < segs.length; i++) {\n      if (ctx === undefined) {\n        return fallback;\n      }\n\n      let key = String(segs[i]).replace(/\\\\(.)/g, '$1');\n      const helper = helpers?.[key];\n\n      if (!isValidObject(ctx)) {\n        if (!helper) {\n          return fallback;\n        }\n\n        ctx = helper(ctx);\n        continue;\n      }\n\n      if (options.onResolve) {\n        options.onResolve(ctx, key);\n      }\n\n      // Handle negative indices and special number cases\n      if (Array.isArray(ctx) || typeof ctx === 'string') {\n        const index = Number(key);\n        if (!Number.isNaN(index)) {\n          key = index;\n        }\n      } else if (key === '-0') {\n        key = -0;\n      } else if (key === 'NaN') {\n        key = NaN;\n      } else if (key === 'Infinity' || key === '-Infinity') {\n        key = Number(key);\n      }\n\n      if (!isValid(key, ctx, options)) {\n        return fallback;\n      }\n\n      let val = resolveValue(ctx, key, readValue(ctx, key), { segments: segs, index: i });\n\n      if (val === undefined && helper) {\n        val = helper(ctx);\n      }\n\n      if (val !== undefined) {\n        if (!isValid(key, ctx, options)) {\n          return fallback;\n        }\n\n        prev = ctx;\n        ctx = val;\n        continue;\n      }\n\n      let temp = ctx;\n      let next = segs[i + 1];\n      let found = false;\n\n      while (next) {\n        i++;\n        key += `.${next}`;\n\n        if (!isValid(key, ctx, options)) {\n          return fallback;\n        }\n\n        temp = resolveValue(ctx, key, readValue(ctx, key), { segments: segs, index: i });\n        next = segs[i + 1];\n\n        if (temp !== undefined) {\n          prev = ctx;\n          ctx = temp;\n          found = true;\n          break;\n        }\n      }\n\n      if (!found) {\n        prev = ctx;\n        ctx = fallback;\n        break;\n      }\n    }\n\n    if (i < segs.length) {\n      if (options.strict === true && fallback === undefined) {\n        throw new Error(`Variable is undefined: \"${segs[i - 1]}\"`);\n      }\n\n      return fallback;\n    }\n\n    if (typeof ctx === 'function' && isObject(prev)) {\n      ctx.context = prev;\n    }\n\n    return ctx;\n  }\n\n  const { ast } = parse(path, options);\n  const output = compile(ast, data, options);\n\n  if (output === undefined) {\n    return fallback;\n  }\n\n  return output;\n};\n\nexpand.parse = parse;\nexpand.compile = compile;\n\nexport { parse, compile };\nexport default expand;\n"],"mappings":"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","names":["size","size","symbol","defineProperty","parse","value","parse"]}