{"version":3,"sources":["../src/nodes/Location.ts","../src/utils.ts","../src/nodes/Node.ts","../src/nodes/Block.ts","../src/nodes/Token.ts","../src/parse.ts"],"sourcesContent":["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: any) => {\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 isNumber from 'is-number';\nimport { Segmenter } from '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\n// // // Example usage\n// // const text = \"Hello 👨‍👩‍👧‍👦 world! 🌍✨\" + \"a\".repeat(1000);\n// // console.log(getGraphemes(text));\n\n// const start = new Date();\n// // console.log(getGraphemes('a'.repeat(1_000_000)));\n// const text = \"Hello 👨‍👩‍👧‍👦 world! 🌍✨ a\".repeat(1_000_000);\n// console.log(Buffer.from(text).length.toLocaleString(), 'characters');\n// console.log(getGraphemes(text));\n// console.log(`Time: ${((new Date() - start) / 1000).toFixed(2)}s`);\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?: any;\n    match?: any;\n    loc?: any;\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: any[];\n\n  constructor(node: any) {\n    super(node);\n    this.nodes = node.nodes || [];\n  }\n\n  append(input: string): void {\n    // eslint-disable-next-line no-unused-expressions\n    this.parent && this.parent.append(input);\n    this.output = this.output || '';\n    this.output += input;\n  }\n\n  push(node: any): 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: any;\n  loc: any;\n  match: any;\n\n  constructor(token: { type: string; value: any; loc: any; match: any }) {\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  // eslint-disable-next-line complexity\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"],"mappings":"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","names":["defineProperty"]}