{"version":3,"file":"ai-model/shared/model-locate-result/parse.mjs","sources":["../../../../../src/ai-model/shared/model-locate-result/parse.ts"],"sourcesContent":["import type {\n  BboxLocateResultCoordinates,\n  BboxLocateResultValue,\n  LocateResultBbox,\n  LocateResultPoint,\n  LocateResultValue,\n  PointLocateResultCoordinates,\n  PointLocateResultValue,\n  ResolvedLocateResultCoordinates,\n} from './types';\n\ntype CoordinateListLikeInput =\n  | number[]\n  | string[]\n  | string\n  | (number[] | string[])[];\n\nexport function unwrapCoordinateListLikeInput(\n  coordinateList: CoordinateListLikeInput,\n): number[] | string[] | string {\n  if (Array.isArray(coordinateList)) {\n    if (Array.isArray(coordinateList[0])) {\n      return coordinateList[0] as number[] | string[];\n    }\n    return coordinateList as number[] | string[];\n  }\n  return coordinateList as string;\n}\n\nexport function parseCoordinateList(input: unknown, label: string): number[] {\n  const unwrapped = unwrapCoordinateListLikeInput(\n    input as CoordinateListLikeInput,\n  );\n  const values =\n    typeof unwrapped === 'string'\n      ? unwrapped\n          .trim()\n          .split(/[\\s,]+/)\n          .filter(Boolean)\n      : unwrapped;\n\n  if (!Array.isArray(values)) {\n    throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);\n  }\n\n  const numericValues = values.map((value) =>\n    typeof value === 'number' ? value : Number(value),\n  );\n\n  if (!numericValues.every((value) => Number.isFinite(value))) {\n    throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);\n  }\n\n  return numericValues;\n}\n\nexport function createLocateResultValue(\n  coordinatesMeta: PointLocateResultCoordinates,\n  coordinates: number[],\n): PointLocateResultValue;\nexport function createLocateResultValue(\n  coordinatesMeta: BboxLocateResultCoordinates,\n  coordinates: number[],\n): BboxLocateResultValue;\nexport function createLocateResultValue(\n  coordinatesMeta: ResolvedLocateResultCoordinates,\n  coordinates: number[],\n): LocateResultValue {\n  if (coordinatesMeta.shape === 'point') {\n    return {\n      coordinates: [coordinates[0], coordinates[1]] as LocateResultPoint,\n      coordinatesMeta,\n    };\n  }\n\n  return {\n    coordinates: [\n      coordinates[0],\n      coordinates[1],\n      coordinates[2],\n      coordinates[3],\n    ] as LocateResultBbox,\n    coordinatesMeta,\n  };\n}\n\nexport function parseNumericLocateResult(\n  resolvedCoordinates: ResolvedLocateResultCoordinates,\n  input: unknown,\n): LocateResultValue {\n  if (resolvedCoordinates.shape === 'point') {\n    const point = parseCoordinateList(input, 'point');\n    if (point.length < 2) {\n      throw new Error(`invalid point data: ${JSON.stringify(input)} `);\n    }\n    return createLocateResultValue(resolvedCoordinates, point);\n  }\n\n  const bbox = parseCoordinateList(input, 'bbox');\n  if (bbox.length !== 4) {\n    throw new Error(`invalid bbox data: ${JSON.stringify(input)} `);\n  }\n\n  return createLocateResultValue(resolvedCoordinates, bbox);\n}\n"],"names":["unwrapCoordinateListLikeInput","coordinateList","Array","parseCoordinateList","input","label","unwrapped","values","Boolean","Error","JSON","numericValues","value","Number","createLocateResultValue","coordinatesMeta","coordinates","parseNumericLocateResult","resolvedCoordinates","point","bbox"],"mappings":"AAiBO,SAASA,8BACdC,cAAuC;IAEvC,IAAIC,MAAM,OAAO,CAACD,iBAChB;QAAA,IAAIC,MAAM,OAAO,CAACD,cAAc,CAAC,EAAE,GACjC,OAAOA,cAAc,CAAC,EAAE;IAC1B;IAGF,OAAOA;AACT;AAEO,SAASE,oBAAoBC,KAAc,EAAEC,KAAa;IAC/D,MAAMC,YAAYN,8BAChBI;IAEF,MAAMG,SACJ,AAAqB,YAArB,OAAOD,YACHA,UACG,IAAI,GACJ,KAAK,CAAC,UACN,MAAM,CAACE,WACVF;IAEN,IAAI,CAACJ,MAAM,OAAO,CAACK,SACjB,MAAM,IAAIE,MAAM,CAAC,QAAQ,EAAEJ,MAAM,OAAO,EAAEK,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGpE,MAAMO,gBAAgBJ,OAAO,GAAG,CAAC,CAACK,QAChC,AAAiB,YAAjB,OAAOA,QAAqBA,QAAQC,OAAOD;IAG7C,IAAI,CAACD,cAAc,KAAK,CAAC,CAACC,QAAUC,OAAO,QAAQ,CAACD,SAClD,MAAM,IAAIH,MAAM,CAAC,QAAQ,EAAEJ,MAAM,OAAO,EAAEK,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGpE,OAAOO;AACT;AAUO,SAASG,wBACdC,eAAgD,EAChDC,WAAqB;IAErB,IAAID,AAA0B,YAA1BA,gBAAgB,KAAK,EACvB,OAAO;QACL,aAAa;YAACC,WAAW,CAAC,EAAE;YAAEA,WAAW,CAAC,EAAE;SAAC;QAC7CD;IACF;IAGF,OAAO;QACL,aAAa;YACXC,WAAW,CAAC,EAAE;YACdA,WAAW,CAAC,EAAE;YACdA,WAAW,CAAC,EAAE;YACdA,WAAW,CAAC,EAAE;SACf;QACDD;IACF;AACF;AAEO,SAASE,yBACdC,mBAAoD,EACpDd,KAAc;IAEd,IAAIc,AAA8B,YAA9BA,oBAAoB,KAAK,EAAc;QACzC,MAAMC,QAAQhB,oBAAoBC,OAAO;QACzC,IAAIe,MAAM,MAAM,GAAG,GACjB,MAAM,IAAIV,MAAM,CAAC,oBAAoB,EAAEC,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;QAEjE,OAAOU,wBAAwBI,qBAAqBC;IACtD;IAEA,MAAMC,OAAOjB,oBAAoBC,OAAO;IACxC,IAAIgB,AAAgB,MAAhBA,KAAK,MAAM,EACb,MAAM,IAAIX,MAAM,CAAC,mBAAmB,EAAEC,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGhE,OAAOU,wBAAwBI,qBAAqBE;AACtD"}