UNPKG

@horizon-modules/arbo-crm-to-property-v2

Version:

Conversor de dados do Arbo CRM para o formato Property Model V2

1 lines 37.4 kB
{"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":[]}