{"version":3,"sources":["../src/discoverers/discoverType.ts","../src/discoverers/discoverOperation.ts","../src/discoverers/discoverAttributes.ts","../src/discoverers/discoverMedia.ts","../src/discoverers/discoverTags.ts","../src/discoverers/discoverSearch.ts","../src/converter.ts"],"sourcesContent":["import { ArboProperty } from \"../types\"\n\nexport function discoverType(arbo: ArboProperty): { type: string; subtype: string } {\n  const tipoImovel = arbo.tipo_imovel?.toLowerCase() || \"\"\n  const categoria = arbo.categoria?.toLowerCase() || \"\"\n  \n  const typeMap: Record<string, { type: string; subtype: string }> = {\n    \"casa\": { type: \"Casa\", subtype: \"Casa padrão\" },\n    \"casa térrea\": { type: \"Casa\", subtype: \"Casa padrão\" },\n    \"sobrado\": { type: \"Casa\", subtype: \"Sobrado\" },\n    \"apartamento\": { type: \"Apartamento\", subtype: \"Apartamento\" },\n    \"cobertura\": { type: \"Apartamento\", subtype: \"Cobertura\" },\n    \"duplex\": { type: \"Apartamento\", subtype: \"Duplex\" },\n    \"triplex\": { type: \"Apartamento\", subtype: \"Triplex\" },\n    \"kitnet\": { type: \"Apartamento\", subtype: \"Kitnet\" },\n    \"studio\": { type: \"Apartamento\", subtype: \"Studio\" },\n    \"flat\": { type: \"Apartamento\", subtype: \"Flat\" },\n    \"loft\": { type: \"Apartamento\", subtype: \"Loft\" },\n    \"terreno\": { type: \"Terreno/Lote\", subtype: \"Terreno\" },\n    \"lote\": { type: \"Terreno/Lote\", subtype: \"Lote\" },\n    \"chácara\": { type: \"Rural\", subtype: \"Chácara\" },\n    \"sítio\": { type: \"Rural\", subtype: \"Sítio\" },\n    \"fazenda\": { type: \"Rural\", subtype: \"Fazenda\" },\n    \"sala comercial\": { type: \"Comercial\", subtype: \"Sala comercial\" },\n    \"loja\": { type: \"Comercial\", subtype: \"Loja\" },\n    \"galpão\": { type: \"Barracão/Armazém\", subtype: \"Barracão\" },\n    \"barracão\": { type: \"Barracão/Armazém\", subtype: \"Barracão\" },\n    \"armazém\": { type: \"Barracão/Armazém\", subtype: \"Armazém\" },\n    \"prédio\": { type: \"Comercial\", subtype: \"Prédio comercial\" },\n    \"ponto comercial\": { type: \"Comercial\", subtype: \"Ponto comercial\" },\n  }\n\n  for (const [key, value] of Object.entries(typeMap)) {\n    if (tipoImovel.includes(key) || categoria.includes(key)) {\n      return value\n    }\n  }\n\n  if (categoria.includes(\"comercial\")) {\n    return { type: \"Comercial\", subtype: \"Imóvel comercial\" }\n  }\n\n  if (categoria.includes(\"residencial\")) {\n    return { type: \"Casa\", subtype: \"Casa padrão\" }\n  }\n\n  return { type: \"Outros\", subtype: \"Outros\" }\n}","import { ArboProperty } from \"../types\"\n\nexport function discoverOperation(arbo: ArboProperty): string {\n  const finalidade = arbo.finalidade?.toLowerCase() || \"\"\n  \n  if (finalidade.includes(\"venda\") || finalidade.includes(\"vender\")) {\n    return \"sale\"\n  }\n  \n  if (finalidade.includes(\"aluguel\") || finalidade.includes(\"alugar\") || finalidade.includes(\"locação\")) {\n    return \"rent\"\n  }\n  \n  if (finalidade.includes(\"temporada\")) {\n    return \"season\"\n  }\n  \n  if (arbo.valor_venda && arbo.valor_venda > 0) {\n    return \"sale\"\n  }\n  \n  if (arbo.valor_aluguel && arbo.valor_aluguel > 0) {\n    return \"rent\"\n  }\n  \n  return \"sale\"\n}","import { ArboProperty, PropertyV2Attribute } from \"../types\"\n\nexport function discoverAttributes(\n  arbo: ArboProperty,\n  operation: string,\n  type: string,\n  subtype: string,\n  options: { agentId?: string; clientId?: string } = {}\n): PropertyV2Attribute[] {\n  const attributes: PropertyV2Attribute[] = []\n\n  // Room attributes\n  if (arbo.qtd_quartos && arbo.qtd_quartos > 0) {\n    attributes.push({\n      key: \"bedrooms\",\n      ref: \"bedroom\",\n      type: \"amount\",\n      label: \"Quarto(s)\",\n      value: arbo.qtd_quartos,\n      section: \"rooms\"\n    })\n  }\n\n  if (arbo.qtd_banheiro && arbo.qtd_banheiro > 0) {\n    attributes.push({\n      key: \"bathrooms\",\n      ref: \"bathroom\",\n      type: \"amount\",\n      label: \"Banheiro(s)\",\n      value: arbo.qtd_banheiro,\n      section: \"rooms\"\n    })\n  }\n\n  if (arbo.qtd_suites && arbo.qtd_suites > 0) {\n    attributes.push({\n      key: \"suites\",\n      ref: \"suites\",\n      tags: [\"has-suite\"],\n      type: \"amount\",\n      label: \"Suíte(s)\",\n      value: arbo.qtd_suites,\n      section: \"rooms\"\n    })\n  }\n\n  // Features\n  if (arbo.area_total && arbo.area_total > 0) {\n    attributes.push({\n      key: \"total-area\",\n      ref: \"total-area\",\n      type: \"area\",\n      label: \"Área total - m²\",\n      value: arbo.area_total.toString(),\n      section: \"feature\"\n    })\n  }\n\n  if (arbo.area_privativa && arbo.area_privativa > 0) {\n    attributes.push({\n      key: \"util-area\",\n      type: \"number\",\n      label: \"Área útil - m²\",\n      value: arbo.area_privativa.toString(),\n      section: \"feature\"\n    })\n  }\n\n  if (arbo.qtd_vagas && arbo.qtd_vagas > 0) {\n    attributes.push({\n      key: \"garage\",\n      ref: \"garage\",\n      type: \"amount\",\n      label: \"Vaga(s) na garagem\",\n      value: arbo.qtd_vagas,\n      section: \"feature\"\n    })\n  }\n\n  // Process characteristics\n  if (arbo.caracteristicas && arbo.caracteristicas.length > 0) {\n    const charMap: Record<string, PropertyV2Attribute> = {\n      \"cozinha\": {\n        key: \"kitchen\",\n        type: \"bool\",\n        label: \"Cozinha\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"sala de estar\": {\n        key: \"living-room\",\n        type: \"bool\",\n        label: \"Sala de estar\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"sala de jantar\": {\n        key: \"dinner-room\",\n        type: \"bool\",\n        label: \"Sala de jantar\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"área de serviço\": {\n        key: \"service-area\",\n        type: \"bool\",\n        label: \"Área de serviço\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"lavanderia\": {\n        key: \"service-area\",\n        type: \"bool\",\n        label: \"Área de serviço\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"closet\": {\n        key: \"closet \",\n        type: \"bool\",\n        label: \"Closet \",\n        value: true,\n        section: \"rooms\"\n      },\n      \"sala de tv\": {\n        key: \"tv-room\",\n        type: \"bool\",\n        label: \"Sala de TV\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"escritório\": {\n        key: \"office\",\n        type: \"bool\",\n        label: \"Escritório\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"espaço gourmet\": {\n        key: \"gourmet-space\",\n        type: \"bool\",\n        label: \"Espaço Gourmet\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"área gourmet\": {\n        key: \"gourmet-space\",\n        type: \"bool\",\n        label: \"Espaço Gourmet\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"varanda\": {\n        key: \"balcony\",\n        tags: [\"balcony\"],\n        type: \"text\",\n        label: \"Sacada\",\n        value: \"padrao\",\n        section: \"rooms\",\n        \"value.label\": \"Padrão\"\n      },\n      \"sacada\": {\n        key: \"balcony\",\n        tags: [\"balcony\"],\n        type: \"text\",\n        label: \"Sacada\",\n        value: \"padrao\",\n        section: \"rooms\",\n        \"value.label\": \"Padrão\"\n      },\n      \"suíte master\": {\n        key: \"master-suite\",\n        tags: [\"suite\"],\n        type: \"bool\",\n        label: \"Suíte Master\",\n        value: true,\n        section: \"rooms\"\n      },\n      \"piscina\": {\n        key: \"pool\",\n        type: \"bool\",\n        label: \"Piscina\",\n        value: true,\n        section: \"improvement\"\n      },\n      \"churrasqueira\": {\n        key: \"barbecue\",\n        tags: [\"bbq\"],\n        type: \"bool\",\n        label: \"Churrasqueira\",\n        value: true,\n        section: \"improvement\"\n      },\n      \"área de lazer\": {\n        key: \"recreation-area\",\n        type: \"bool\",\n        label: \"Área de lazer\",\n        value: true,\n        section: \"improvement\"\n      },\n      \"playground\": {\n        key: \"playground\",\n        type: \"bool\",\n        label: \"Parquinho\",\n        value: true,\n        section: \"improvement\"\n      },\n      \"segurança 24h\": {\n        key: \"security-guard\",\n        tags: [\"security\"],\n        type: \"bool\",\n        label: \"Segurança 24h\",\n        value: true,\n        section: \"improvement\"\n      },\n      \"portaria 24h\": {\n        key: \"security-guard\",\n        tags: [\"security\"],\n        type: \"bool\",\n        label: \"Segurança 24h\",\n        value: true,\n        section: \"improvement\"\n      }\n    }\n\n    const addedKeys = new Set<string>()\n    \n    for (const char of arbo.caracteristicas) {\n      const charLower = char.toLowerCase()\n      for (const [key, attr] of Object.entries(charMap)) {\n        if (charLower.includes(key) && !addedKeys.has(attr.key)) {\n          attributes.push(attr)\n          addedKeys.add(attr.key)\n        }\n      }\n    }\n  }\n\n  // Condominium\n  if (arbo.end_condominio || (arbo.valor_condominio && arbo.valor_condominio > 0)) {\n    attributes.push({\n      key: \"in-condominium\",\n      tags: [\"in-condominium\"],\n      type: \"bool\",\n      label: \"Em condomínio\",\n      value: true,\n      section: \"improvement\"\n    })\n    \n    attributes.push({\n      key: \"em-condominio\",\n      value: true\n    })\n  }\n\n  // Basic attributes\n  if (options.agentId) {\n    attributes.push({\n      key: \"agent\",\n      value: options.agentId\n    })\n  }\n\n  // Location\n  if (arbo.latitude && arbo.longitude) {\n    attributes.push({\n      key: \"position\",\n      value: `${arbo.latitude},${arbo.longitude}`\n    })\n  }\n\n  const city = arbo.end_cidade && arbo.end_estado\n    ? `${arbo.end_cidade} - ${arbo.end_estado}`\n    : arbo.end_cidade || \"\"\n    \n  if (city) {\n    attributes.push({\n      key: \"city\",\n      value: city\n    })\n  }\n\n  attributes.push(\n    { key: \"description\", value: arbo.descricao || \"\" },\n    { key: \"type\", value: type },\n    { key: \"title\", value: arbo.titulo || \"\" },\n    { key: \"objective\", value: \"Residencial\" },\n    { key: \"reference\", value: arbo.codigo || \"\" }\n  )\n\n  if (options.clientId) {\n    attributes.push({\n      key: \"client\",\n      value: options.clientId\n    })\n  }\n\n  attributes.push(\n    { key: \"model\", value: `${subtype.toLowerCase().replace(/ /g, \"-\")}@1.0` },\n    { key: \"id\", value: `ppt_${generateId()}` },\n    { key: \"modified_at\", value: new Date().toISOString() }\n  )\n\n  // Address\n  if (arbo.end_logradouro) {\n    attributes.push({\n      key: \"address-street\",\n      value: arbo.end_logradouro\n    })\n  }\n\n  // Values\n  if (operation === \"sale\" && arbo.valor_venda) {\n    attributes.push(\n      { key: \"value\", value: arbo.valor_venda },\n      {\n        key: \"sale-value\",\n        ref: \"sale-value\",\n        type: \"currency\",\n        value: arbo.valor_venda\n      }\n    )\n  } else if (operation === \"rent\" && arbo.valor_aluguel) {\n    attributes.push(\n      { key: \"value\", value: arbo.valor_aluguel },\n      {\n        key: \"rent-value\",\n        ref: \"rent-value\",\n        type: \"currency\",\n        value: arbo.valor_aluguel\n      }\n    )\n  }\n\n  attributes.push(\n    { key: \"published\", value: false },\n    { key: \"postal-code\", value: arbo.end_cep || \"\" },\n    { key: \"friendly-url\", value: arbo.codigo?.toLowerCase() || \"\" }\n  )\n\n  if (arbo.end_complemento) {\n    attributes.push({\n      key: \"address-complement\",\n      value: arbo.end_complemento\n    })\n  }\n\n  if (arbo.end_bairro) {\n    attributes.push({\n      key: \"district\",\n      value: arbo.end_bairro\n    })\n  }\n\n  attributes.push(\n    { key: \"operation\", value: operation },\n    {\n      key: \"integrations\",\n      value: [\n        { key: \"imovelweb\", title: \"Imóvel Web\" },\n        { key: \"chavesnamao\", title: \"Chaves na mão\" },\n        { key: \"procure-imovel\", title: \"Procure Imóvel\" },\n        { key: \"vivareal\", title: \"Viva Real\" },\n        { key: \"zapimoveis\", title: \"Zap Imóveis\" },\n        { key: \"olx\", title: \"OLX\" }\n      ]\n    }\n  )\n\n  // Full address\n  const fullAddress = buildFullAddress(arbo)\n  if (fullAddress) {\n    attributes.push({\n      key: \"full-address\",\n      ref: \"address\",\n      type: \"address\",\n      value: fullAddress,\n      section: \"location\"\n    })\n  }\n\n  attributes.push({\n    key: \"subtype\",\n    value: subtype\n  })\n\n  return attributes\n}\n\nfunction buildFullAddress(arbo: ArboProperty): string {\n  const parts = []\n  \n  if (arbo.end_logradouro) {\n    parts.push(arbo.end_logradouro)\n    if (arbo.end_numero) {\n      parts[parts.length - 1] += `, ${arbo.end_numero}`\n    }\n  }\n  \n  if (arbo.end_complemento) {\n    parts.push(arbo.end_complemento)\n  }\n  \n  if (arbo.end_bairro) {\n    parts.push(arbo.end_bairro)\n  }\n  \n  const cityState = []\n  if (arbo.end_cidade) cityState.push(arbo.end_cidade)\n  if (arbo.end_estado) cityState.push(arbo.end_estado)\n  \n  if (cityState.length > 0) {\n    parts.push(cityState.join(\" - \"))\n  }\n  \n  return parts.join(\" - \")\n}\n\nfunction generateId(): string {\n  const chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"\n  let result = \"\"\n  for (let i = 0; i < 28; i++) {\n    result += chars.charAt(Math.floor(Math.random() * chars.length))\n  }\n  return result\n}","import { ArboProperty, PropertyV2Media, PropertyV2Picture } from \"../types\"\n\nexport function discoverMedia(arbo: ArboProperty): PropertyV2Media {\n  const media: PropertyV2Media = {\n    videos: [],\n    tour360: [],\n    pictures: []\n  }\n\n  if (arbo.fotos && arbo.fotos.length > 0) {\n    const sortedPhotos = [...arbo.fotos].sort((a, b) => {\n      if (a.principal && !b.principal) return -1\n      if (!a.principal && b.principal) return 1\n      return (a.ordem || 999) - (b.ordem || 999)\n    })\n\n    media.pictures = sortedPhotos.map((foto, index) => ({\n      id: generatePhotoId(),\n      src: foto.url,\n      name: extractFileName(foto.url) || `foto_${index + 1}.jpg`,\n      label: extractFileName(foto.url) || `foto_${index + 1}.jpg`\n    }))\n  }\n\n  if (arbo.url_video) {\n    media.videos.push({\n      url: arbo.url_video,\n      type: \"youtube\"\n    })\n  }\n\n  if (arbo.url_tour) {\n    media.tour360.push({\n      url: arbo.url_tour,\n      type: \"external\"\n    })\n  }\n\n  return media\n}\n\nfunction generatePhotoId(): string {\n  return Math.random().toString().slice(2, 20)\n}\n\nfunction extractFileName(url: string): string {\n  try {\n    const urlParts = url.split(\"/\")\n    const fileName = urlParts[urlParts.length - 1]\n    return fileName.split(\"?\")[0]\n  } catch {\n    return \"\"\n  }\n}\n\nexport function discoverThumbnails(arbo: ArboProperty, media: PropertyV2Media): string {\n  if (media.pictures.length > 0) {\n    return media.pictures[0].src\n  }\n\n  if (arbo.fotos && arbo.fotos.length > 0) {\n    const mainPhoto = arbo.fotos.find(f => f.principal)\n    if (mainPhoto) return mainPhoto.url\n    return arbo.fotos[0].url\n  }\n\n  return \"\"\n}","import { ArboProperty, PropertyV2Attribute } from \"../types\"\n\nexport function discoverTags(arbo: ArboProperty, attributes: PropertyV2Attribute[], operation: string): string {\n  const tags = new Set<string>()\n\n  // Operation\n  tags.add(operation)\n\n  // From attributes with tags\n  for (const attr of attributes) {\n    if (attr.tags) {\n      attr.tags.forEach(tag => tags.add(tag))\n    }\n  }\n\n  // Characteristics to tags mapping\n  if (arbo.caracteristicas) {\n    const tagMap: Record<string, string> = {\n      \"piscina\": \"pool\",\n      \"churrasqueira\": \"bbq\",\n      \"segurança\": \"security\",\n      \"portaria\": \"security\",\n      \"área de lazer\": \"recreation\",\n      \"playground\": \"playground\",\n      \"academia\": \"gym\",\n      \"salão de festas\": \"party-room\",\n      \"quadra\": \"court\",\n      \"jardim\": \"garden\",\n      \"pet place\": \"pet-friendly\",\n      \"pet\": \"pet-friendly\",\n      \"mobiliado\": \"furnished\",\n      \"semi mobiliado\": \"semi-furnished\"\n    }\n\n    for (const char of arbo.caracteristicas) {\n      const charLower = char.toLowerCase()\n      for (const [key, tag] of Object.entries(tagMap)) {\n        if (charLower.includes(key)) {\n          tags.add(tag)\n        }\n      }\n    }\n  }\n\n  // Property type tags\n  const tipo = arbo.tipo_imovel?.toLowerCase() || \"\"\n  if (tipo.includes(\"cobertura\")) tags.add(\"penthouse\")\n  if (tipo.includes(\"duplex\")) tags.add(\"duplex\")\n  if (tipo.includes(\"triplex\")) tags.add(\"triplex\")\n  if (tipo.includes(\"loft\")) tags.add(\"loft\")\n\n  // Category tags\n  const categoria = arbo.categoria?.toLowerCase() || \"\"\n  if (categoria.includes(\"residencial\")) tags.add(\"residencial\")\n  if (categoria.includes(\"comercial\")) tags.add(\"comercial\")\n\n  // Special attributes\n  if (arbo.mobiliado) tags.add(\"furnished\")\n  if (arbo.permuta) tags.add(\"exchange\")\n  if (arbo.financiamento) tags.add(\"financing\")\n\n  return Array.from(tags).join(\" \")\n}\n\nexport function discoverKeywords(arbo: ArboProperty, attributes: PropertyV2Attribute[]): string {\n  const keywords = new Set<string>()\n\n  // Basic property info\n  if (arbo.codigo) keywords.add(arbo.codigo.toLowerCase())\n  if (arbo.tipo_imovel) keywords.add(arbo.tipo_imovel.toLowerCase())\n  if (arbo.categoria) keywords.add(arbo.categoria.toLowerCase())\n\n  // Title and description words\n  const titleWords = (arbo.titulo || \"\").toLowerCase().split(/\\s+/)\n  const descWords = (arbo.descricao || \"\").toLowerCase().split(/\\s+/)\n  \n  const allWords = [...titleWords, ...descWords]\n  allWords.forEach(word => {\n    const cleanWord = word.replace(/[^\\w]/g, \"\")\n    if (cleanWord.length > 2) {\n      keywords.add(cleanWord)\n    }\n  })\n\n  // Location\n  if (arbo.end_cidade) keywords.add(arbo.end_cidade.toLowerCase())\n  if (arbo.end_bairro) keywords.add(arbo.end_bairro.toLowerCase())\n  if (arbo.end_estado) keywords.add(arbo.end_estado.toLowerCase())\n\n  // Characteristics\n  if (arbo.caracteristicas) {\n    arbo.caracteristicas.forEach(char => {\n      const words = char.toLowerCase().split(/\\s+/)\n      words.forEach(word => {\n        const cleanWord = word.replace(/[^\\w]/g, \"\")\n        if (cleanWord.length > 2) {\n          keywords.add(cleanWord)\n        }\n      })\n    })\n  }\n\n  // Attribute keys and values\n  attributes.forEach(attr => {\n    if (attr.key) keywords.add(attr.key.replace(/[^a-z0-9]/gi, \"-\"))\n    if (typeof attr.value === \"string\" && attr.value.length > 2) {\n      keywords.add(attr.value.toLowerCase().replace(/[^\\w]/g, \"\"))\n    }\n  })\n\n  return Array.from(keywords).join(\" \")\n}","import { ArboProperty, PropertyV2Search, PropertyV2Attribute } from \"../types\"\n\nexport function discoverPropertySearch(\n  arbo: ArboProperty,\n  id: number,\n  title: string,\n  reference: string,\n  type: string,\n  subtype: string,\n  operation: string,\n  price: number,\n  tags: string,\n  keywords: string,\n  description: string,\n  attributes: PropertyV2Attribute[]\n): PropertyV2Search {\n  \n  const city = arbo.end_cidade && arbo.end_estado\n    ? `${arbo.end_cidade} - ${arbo.end_estado}`\n    : arbo.end_cidade || \"\"\n\n  const bedrooms = arbo.qtd_quartos || 0\n  const bathrooms = arbo.qtd_banheiro || 0\n  const garage = arbo.qtd_vagas || 0\n  const area = arbo.area_total || arbo.area_privativa || 0\n\n  // Clean description for search\n  const cleanDescription = description\n    .toLowerCase()\n    .replace(/[^\\w\\s]/g, \" \")\n    .replace(/\\s+/g, \" \")\n    .trim()\n\n  return {\n    id,\n    title,\n    reference,\n    type,\n    subtype,\n    operation,\n    price,\n    tags,\n    keywords,\n    description: cleanDescription,\n    highlighted_date: null,\n    state: arbo.end_estado || null,\n    city,\n    district: arbo.end_bairro || \"\",\n    lat: arbo.latitude || 0,\n    lon: arbo.longitude || 0,\n    created_at: new Date().toISOString(),\n    modified_at: null,\n    updated_at: null,\n    bed: bedrooms,\n    bath: bathrooms,\n    garage,\n    area\n  }\n}","import { ArboProperty, PropertyV2, ConversionOptions } from \"./types\"\nimport { discoverType } from \"./discoverers/discoverType\"\nimport { discoverOperation } from \"./discoverers/discoverOperation\"\nimport { discoverAttributes } from \"./discoverers/discoverAttributes\"\nimport { discoverMedia, discoverThumbnails } from \"./discoverers/discoverMedia\"\nimport { discoverTags, discoverKeywords } from \"./discoverers/discoverTags\"\nimport { discoverPropertySearch } from \"./discoverers/discoverSearch\"\n\nexport function convertArboToPropertyV2(\n  arbo: ArboProperty,\n  options: ConversionOptions = {}\n): PropertyV2 {\n  \n  const { type, subtype } = discoverType(arbo)\n  const operation = discoverOperation(arbo)\n  const attributes = discoverAttributes(arbo, operation, type, subtype, options)\n  const media = discoverMedia(arbo)\n  const thumbnails = discoverThumbnails(arbo, media)\n  \n  const tags = options.generateTags !== false \n    ? discoverTags(arbo, attributes, operation)\n    : \"\"\n    \n  const keywords = options.generateKeywords !== false\n    ? discoverKeywords(arbo, attributes)\n    : \"\"\n\n  const title = arbo.titulo || \"\"\n  const description = arbo.descricao || \"\"\n  const reference = arbo.codigo || \"\"\n  \n  const price = operation === \"sale\" \n    ? (arbo.valor_venda || 0)\n    : (arbo.valor_aluguel || 0)\n\n  const id = arbo.ref_id\n  const now = new Date().toISOString()\n\n  const propertySearch = discoverPropertySearch(\n    arbo,\n    id,\n    title,\n    reference,\n    type,\n    subtype,\n    operation,\n    price,\n    tags,\n    keywords,\n    description,\n    attributes\n  )\n\n  const propertyV2: PropertyV2 = {\n    id,\n    source_id: arbo.ref_id,\n    reference,\n    title,\n    description,\n    type,\n    subtype,\n    operation,\n    attributes,\n    media,\n    tags,\n    keywords,\n    thumbnails: options.defaultThumbnail || thumbnails,\n    web_code: null,\n    provider: \"arbo-crm\",\n    index: null,\n    seo: null,\n    visibility: null,\n    preview: null,\n    created_at: arbo.created_at || now,\n    modified_at: arbo.updated_at || now,\n    updated_at: now,\n    property_search: [propertySearch]\n  }\n\n  return propertyV2\n}\n\nexport function convertMultipleArboToPropertyV2(\n  arboProperties: ArboProperty[],\n  options: ConversionOptions = {}\n): PropertyV2[] {\n  return arboProperties.map(arbo => convertArboToPropertyV2(arbo, options))\n}"],"mappings":"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","names":[]}