@growsalesai/n8n-nodes-datacrazy 1.8.8 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -29
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.d.ts.map +1 -1
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.js +123 -24
- package/dist/nodes/Datacrazy/DatacrazyUtils.node.js.map +1 -1
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.description.js +100 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.handler.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.handler.js +61 -0
- package/dist/nodes/Datacrazy/automations/businessCreator/businessCreator.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.description.js +104 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.handler.d.ts +3 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.handler.js +67 -0
- package/dist/nodes/Datacrazy/automations/businessHoursChecker/businessHoursChecker.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.description.js +54 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.handler.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.handler.js +48 -0
- package/dist/nodes/Datacrazy/automations/firstMessageDetector/firstMessageDetector.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.description.d.ts +3 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.description.js +59 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.handler.d.ts +3 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.handler.js +40 -0
- package/dist/nodes/Datacrazy/automations/keywordRouter/keywordRouter.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.description.js +63 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.handler.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.handler.js +92 -0
- package/dist/nodes/Datacrazy/automations/leadDuplicateChecker/leadDuplicateChecker.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.description.js +62 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.handler.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.handler.js +116 -0
- package/dist/nodes/Datacrazy/automations/leadUpsert/leadUpsert.handler.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.description.d.ts +4 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.description.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.description.js +49 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.description.js.map +1 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.handler.d.ts +3 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.handler.d.ts.map +1 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.handler.js +30 -0
- package/dist/nodes/Datacrazy/automations/phoneFormatter/phoneFormatter.handler.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,9 @@ Nó da comunidade N8N para integração completa com a plataforma **Datacrazy CR
|
|
|
12
12
|
- [Nós Disponíveis](#nós-disponíveis)
|
|
13
13
|
- [Módulos do CRM](#módulos-do-crm)
|
|
14
14
|
- [Nó de Automações](#nó-de-automações)
|
|
15
|
+
- [Webhook & Mensagens](#webhook--mensagens)
|
|
16
|
+
- [Lead & Pipeline](#lead--pipeline)
|
|
17
|
+
- [Utilitários Locais](#utilitários-locais)
|
|
15
18
|
- [Desenvolvimento](#desenvolvimento)
|
|
16
19
|
- [Reportar Issues](#reportar-issues)
|
|
17
20
|
- [Contribuição](#contribuição)
|
|
@@ -324,9 +327,11 @@ Gerenciamento de automações e fluxos do Datacrazy.
|
|
|
324
327
|
|
|
325
328
|
## 🤖 Nó de Automações
|
|
326
329
|
|
|
327
|
-
O nó **Datacrazy Automações** oferece utilitários inteligentes para construir fluxos com webhooks e lógica de CRM sem precisar escrever código.
|
|
330
|
+
O nó **Datacrazy Automações** oferece **17 utilitários inteligentes** para construir fluxos com webhooks e lógica de CRM sem precisar escrever código.
|
|
328
331
|
|
|
329
|
-
###
|
|
332
|
+
### Webhook & Mensagens
|
|
333
|
+
|
|
334
|
+
#### ⚡ Analisar Webhook Datacrazy
|
|
330
335
|
> `automations/webhookParser/`
|
|
331
336
|
|
|
332
337
|
Normaliza o payload recebido de um webhook do Datacrazy e extrai os campos principais: provedor, tipo de mensagem, texto, mídia, lead, token, conversa e muito mais.
|
|
@@ -337,7 +342,7 @@ Normaliza o payload recebido de um webhook do Datacrazy e extrai os campos princ
|
|
|
337
342
|
|
|
338
343
|
---
|
|
339
344
|
|
|
340
|
-
|
|
345
|
+
#### ⚡ Switch Tipo de Mensagem
|
|
341
346
|
> `automations/messageTypeSwitch/`
|
|
342
347
|
|
|
343
348
|
Roteia o item para a saída correta com base no tipo da mensagem recebida.
|
|
@@ -346,7 +351,7 @@ Roteia o item para a saída correta com base no tipo da mensagem recebida.
|
|
|
346
351
|
|
|
347
352
|
---
|
|
348
353
|
|
|
349
|
-
|
|
354
|
+
#### ⚡ É Mensagem Referenciada?
|
|
350
355
|
> `automations/replyChecker/`
|
|
351
356
|
|
|
352
357
|
Verifica se a mensagem recebida é uma resposta (reply) a outra mensagem.
|
|
@@ -355,7 +360,7 @@ Verifica se a mensagem recebida é uma resposta (reply) a outra mensagem.
|
|
|
355
360
|
|
|
356
361
|
---
|
|
357
362
|
|
|
358
|
-
|
|
363
|
+
#### ⚡ Detectar Provedor do Webhook
|
|
359
364
|
> `automations/providerDetector/`
|
|
360
365
|
|
|
361
366
|
Identifica o provedor de origem do webhook.
|
|
@@ -364,14 +369,14 @@ Identifica o provedor de origem do webhook.
|
|
|
364
369
|
|
|
365
370
|
---
|
|
366
371
|
|
|
367
|
-
|
|
372
|
+
#### ⚡ Extrair Info do Webhook
|
|
368
373
|
> `automations/webhookExtractor/`
|
|
369
374
|
|
|
370
375
|
Estrutura todos os campos do payload em objetos aninhados e organizados: `contact`, `message`, `attachment`, `referral`, `instance`, `conversation`.
|
|
371
376
|
|
|
372
377
|
---
|
|
373
378
|
|
|
374
|
-
|
|
379
|
+
#### ⚡ Contexto de Mensagem Referenciada
|
|
375
380
|
> `automations/messageContext/`
|
|
376
381
|
|
|
377
382
|
Verifica se a mensagem é um reply e, se for, busca o conteúdo da mensagem original na conversa do Datacrazy.
|
|
@@ -382,7 +387,67 @@ Verifica se a mensagem é um reply e, se for, busca o conteúdo da mensagem orig
|
|
|
382
387
|
|
|
383
388
|
---
|
|
384
389
|
|
|
385
|
-
|
|
390
|
+
#### ⚡ Roteador por Palavra-chave
|
|
391
|
+
> `automations/keywordRouter/`
|
|
392
|
+
|
|
393
|
+
Verifica o texto da mensagem contra até 4 grupos de palavras-chave configuráveis e roteia para a saída correspondente.
|
|
394
|
+
|
|
395
|
+
**Saídas:** Grupo 1 · Grupo 2 · Grupo 3 · Grupo 4 · Nenhuma
|
|
396
|
+
|
|
397
|
+
- Palavras-chave separadas por vírgula em cada grupo
|
|
398
|
+
- Opção de diferenciação de maiúsculas/minúsculas
|
|
399
|
+
- Retorna `matchedGroup` e `matchedGroupIndex` no output
|
|
400
|
+
- Operação puramente local — sem chamadas de API
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
### Lead & Pipeline
|
|
405
|
+
|
|
406
|
+
#### ⚡ Verificar se Lead Existe
|
|
407
|
+
> `automations/leadExistsChecker/`
|
|
408
|
+
|
|
409
|
+
Busca um lead e roteia para **Sim** (encontrado) ou **Não**.
|
|
410
|
+
|
|
411
|
+
**Métodos de busca:** WhatsApp · E-mail · Nome · CPF/CNPJ · Instagram · Campo Personalizado
|
|
412
|
+
|
|
413
|
+
| Rota usada | Método | Descrição |
|
|
414
|
+
|---|---|---|
|
|
415
|
+
| `/api/v1/leads` | `GET` | Busca com text search e varredura paginada |
|
|
416
|
+
| `/api/v1/conversations` | `GET` | Fallback para busca via conversas (WhatsApp) |
|
|
417
|
+
| `/api/crm/additional-fields/lead/:leadId/:fieldId` | `GET` | Verifica valor de campo personalizado |
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
#### ⚡ Upsert de Lead
|
|
422
|
+
> `automations/leadUpsert/`
|
|
423
|
+
|
|
424
|
+
Busca o lead pelo identificador informado; se não encontrar, cria automaticamente.
|
|
425
|
+
|
|
426
|
+
**Saídas:** Criado · Já Existia
|
|
427
|
+
|
|
428
|
+
**Métodos de busca/criação:** WhatsApp · E-mail · CPF/CNPJ
|
|
429
|
+
|
|
430
|
+
- O valor de busca é automaticamente usado como `phone`, `email` ou `document` na criação
|
|
431
|
+
- Campo JSON opcional para incluir campos extras na criação
|
|
432
|
+
- Retorna os dados completos do lead em ambas as saídas
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
#### ⚡ Verificar Duplicatas de Lead
|
|
437
|
+
> `automations/leadDuplicateChecker/`
|
|
438
|
+
|
|
439
|
+
Varre toda a base de leads e encontra todos que possuem o mesmo identificador.
|
|
440
|
+
|
|
441
|
+
**Saídas:** Com Duplicatas (≥2 leads) · Único (0 ou 1 lead)
|
|
442
|
+
|
|
443
|
+
**Métodos de busca:** WhatsApp · E-mail · CPF/CNPJ
|
|
444
|
+
|
|
445
|
+
- Retorna `duplicateCount` e a lista completa de leads duplicados
|
|
446
|
+
- Varredura paginada de até 2.000 leads
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
#### ⚡ Mover Lead na Pipeline
|
|
386
451
|
> `automations/leadMover/`
|
|
387
452
|
|
|
388
453
|
Busca os negócios do lead, filtra pela pipeline desejada e move para a etapa destino.
|
|
@@ -397,7 +462,24 @@ Busca os negócios do lead, filtra pela pipeline desejada e move para a etapa de
|
|
|
397
462
|
|
|
398
463
|
---
|
|
399
464
|
|
|
400
|
-
|
|
465
|
+
#### ⚡ Criar Negócio Condicional
|
|
466
|
+
> `automations/businessCreator/`
|
|
467
|
+
|
|
468
|
+
Verifica se o lead já possui um negócio aberto na pipeline; se não tiver, cria automaticamente.
|
|
469
|
+
|
|
470
|
+
**Saídas:** Criado · Já Existe
|
|
471
|
+
|
|
472
|
+
| Rota usada | Método | Descrição |
|
|
473
|
+
|---|---|---|
|
|
474
|
+
| `/api/v1/leads/:leadId/businesses` | `GET` | Verifica negócios existentes |
|
|
475
|
+
| `/api/v1/businesses` | `POST` | Cria o negócio se não houver um aberto |
|
|
476
|
+
|
|
477
|
+
- Dropdowns dinâmicos para pipeline e etapa inicial
|
|
478
|
+
- Retorna dados completos do negócio em ambas as saídas
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
#### ⚡ If Condicional do Lead
|
|
401
483
|
> `automations/leadIfCondition/`
|
|
402
484
|
|
|
403
485
|
Verifica uma condição no lead e roteia para **Sim** ou **Não**.
|
|
@@ -413,7 +495,7 @@ Verifica uma condição no lead e roteia para **Sim** ou **Não**.
|
|
|
413
495
|
|
|
414
496
|
---
|
|
415
497
|
|
|
416
|
-
|
|
498
|
+
#### ⚡ Tracker do Lead
|
|
417
499
|
> `automations/leadTracker/`
|
|
418
500
|
|
|
419
501
|
Define múltiplos campos personalizados em um lead de uma só vez, com controle de erro por campo.
|
|
@@ -424,6 +506,50 @@ Define múltiplos campos personalizados em um lead de uma só vez, com controle
|
|
|
424
506
|
|
|
425
507
|
---
|
|
426
508
|
|
|
509
|
+
#### ⚡ Detector de Primeira Mensagem
|
|
510
|
+
> `automations/firstMessageDetector/`
|
|
511
|
+
|
|
512
|
+
Verifica se é o primeiro contato do lead com base no tempo de criação.
|
|
513
|
+
|
|
514
|
+
**Saídas:** Sim (primeira vez) · Não (recorrente)
|
|
515
|
+
|
|
516
|
+
| Rota usada | Método | Descrição |
|
|
517
|
+
|---|---|---|
|
|
518
|
+
| `/api/v1/leads/:leadId` | `GET` | Lê `createdAt` do lead |
|
|
519
|
+
|
|
520
|
+
- Configura um limiar em minutos (padrão: 5 min)
|
|
521
|
+
- Retorna `isFirstMessage` e `leadAgeMinutes` no output
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
### Utilitários Locais
|
|
526
|
+
|
|
527
|
+
> Estas automações operam **sem chamadas de API** — sem necessidade de credencial.
|
|
528
|
+
|
|
529
|
+
#### ⚡ Verificar Horário de Atendimento
|
|
530
|
+
> `automations/businessHoursChecker/`
|
|
531
|
+
|
|
532
|
+
Verifica se o momento atual está dentro do horário de atendimento configurado.
|
|
533
|
+
|
|
534
|
+
**Saídas:** Dentro do Horário · Fora do Horário
|
|
535
|
+
|
|
536
|
+
- Configuração independente para dias úteis, sábado e domingo
|
|
537
|
+
- Suporte a qualquer fuso horário (ex: `America/Sao_Paulo`, `America/New_York`)
|
|
538
|
+
- Retorna `withinBusinessHours`, `dayOfWeek` e `currentTimeMinutes`
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
#### ⚡ Formatar Número de WhatsApp
|
|
543
|
+
> `automations/phoneFormatter/`
|
|
544
|
+
|
|
545
|
+
Normaliza números de telefone para o formato padrão (somente dígitos, com DDI).
|
|
546
|
+
|
|
547
|
+
- Adiciona DDI automaticamente se ausente (padrão: `55` para Brasil)
|
|
548
|
+
- Opção para remover o 9º dígito de celulares brasileiros
|
|
549
|
+
- Retorna `phoneFormatted`, `phoneOriginal` e `phoneDDI`
|
|
550
|
+
|
|
551
|
+
---
|
|
552
|
+
|
|
427
553
|
## 🛠️ Desenvolvimento
|
|
428
554
|
|
|
429
555
|
### Pré-requisitos
|
|
@@ -510,32 +636,22 @@ nodes/Datacrazy/
|
|
|
510
636
|
│
|
|
511
637
|
├── automations/ # Nós utilitários de automação (cada um com description + handler)
|
|
512
638
|
│ ├── webhookParser/
|
|
513
|
-
│ │ ├── webhookParser.description.ts
|
|
514
|
-
│ │ └── webhookParser.handler.ts
|
|
515
639
|
│ ├── webhookExtractor/
|
|
516
|
-
│ │ ├── webhookExtractor.description.ts
|
|
517
|
-
│ │ └── webhookExtractor.handler.ts
|
|
518
640
|
│ ├── providerDetector/
|
|
519
|
-
│ │ ├── providerDetector.description.ts
|
|
520
|
-
│ │ └── providerDetector.handler.ts
|
|
521
641
|
│ ├── messageContext/
|
|
522
|
-
│ │ ├── messageContext.description.ts
|
|
523
|
-
│ │ └── messageContext.handler.ts
|
|
524
642
|
│ ├── messageTypeSwitch/
|
|
525
|
-
│ │ ├── messageTypeSwitch.description.ts
|
|
526
|
-
│ │ └── messageTypeSwitch.handler.ts
|
|
527
643
|
│ ├── replyChecker/
|
|
528
|
-
│
|
|
529
|
-
│ │ └── replyChecker.handler.ts
|
|
644
|
+
│ ├── keywordRouter/
|
|
530
645
|
│ ├── leadMover/
|
|
531
|
-
│ │ ├── leadMover.description.ts
|
|
532
|
-
│ │ └── leadMover.handler.ts
|
|
533
646
|
│ ├── leadIfCondition/
|
|
534
|
-
│
|
|
535
|
-
│
|
|
536
|
-
│
|
|
537
|
-
│
|
|
538
|
-
│
|
|
647
|
+
│ ├── leadTracker/
|
|
648
|
+
│ ├── leadExistsChecker/
|
|
649
|
+
│ ├── leadUpsert/
|
|
650
|
+
│ ├── leadDuplicateChecker/
|
|
651
|
+
│ ├── businessCreator/
|
|
652
|
+
│ ├── firstMessageDetector/
|
|
653
|
+
│ ├── businessHoursChecker/
|
|
654
|
+
│ └── phoneFormatter/
|
|
539
655
|
│
|
|
540
656
|
├── methods/
|
|
541
657
|
│ └── loadOptions.ts # Carregamento dinâmico de dropdowns
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatacrazyUtils.node.d.ts","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"DatacrazyUtils.node.d.ts","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;AAwCtB,qBAAa,cAAe,YAAW,SAAS;IAC9C,WAAW,EAAE,oBAAoB,CA2K/B;IAEF,OAAO;oBAQA,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;MACrG;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAgGxE"}
|
|
@@ -45,6 +45,13 @@ const replyChecker_description_1 = require("./automations/replyChecker/replyChec
|
|
|
45
45
|
const leadIfCondition_description_1 = require("./automations/leadIfCondition/leadIfCondition.description");
|
|
46
46
|
const leadTracker_description_1 = require("./automations/leadTracker/leadTracker.description");
|
|
47
47
|
const leadExistsChecker_description_1 = require("./automations/leadExistsChecker/leadExistsChecker.description");
|
|
48
|
+
const phoneFormatter_description_1 = require("./automations/phoneFormatter/phoneFormatter.description");
|
|
49
|
+
const businessHoursChecker_description_1 = require("./automations/businessHoursChecker/businessHoursChecker.description");
|
|
50
|
+
const keywordRouter_description_1 = require("./automations/keywordRouter/keywordRouter.description");
|
|
51
|
+
const firstMessageDetector_description_1 = require("./automations/firstMessageDetector/firstMessageDetector.description");
|
|
52
|
+
const leadDuplicateChecker_description_1 = require("./automations/leadDuplicateChecker/leadDuplicateChecker.description");
|
|
53
|
+
const businessCreator_description_1 = require("./automations/businessCreator/businessCreator.description");
|
|
54
|
+
const leadUpsert_description_1 = require("./automations/leadUpsert/leadUpsert.description");
|
|
48
55
|
const webhookParser_handler_1 = require("./automations/webhookParser/webhookParser.handler");
|
|
49
56
|
const webhookExtractor_handler_1 = require("./automations/webhookExtractor/webhookExtractor.handler");
|
|
50
57
|
const providerDetector_handler_1 = require("./automations/providerDetector/providerDetector.handler");
|
|
@@ -55,6 +62,13 @@ const replyChecker_handler_1 = require("./automations/replyChecker/replyChecker.
|
|
|
55
62
|
const leadIfCondition_handler_1 = require("./automations/leadIfCondition/leadIfCondition.handler");
|
|
56
63
|
const leadTracker_handler_1 = require("./automations/leadTracker/leadTracker.handler");
|
|
57
64
|
const leadExistsChecker_handler_1 = require("./automations/leadExistsChecker/leadExistsChecker.handler");
|
|
65
|
+
const phoneFormatter_handler_1 = require("./automations/phoneFormatter/phoneFormatter.handler");
|
|
66
|
+
const businessHoursChecker_handler_1 = require("./automations/businessHoursChecker/businessHoursChecker.handler");
|
|
67
|
+
const keywordRouter_handler_1 = require("./automations/keywordRouter/keywordRouter.handler");
|
|
68
|
+
const firstMessageDetector_handler_1 = require("./automations/firstMessageDetector/firstMessageDetector.handler");
|
|
69
|
+
const leadDuplicateChecker_handler_1 = require("./automations/leadDuplicateChecker/leadDuplicateChecker.handler");
|
|
70
|
+
const businessCreator_handler_1 = require("./automations/businessCreator/businessCreator.handler");
|
|
71
|
+
const leadUpsert_handler_1 = require("./automations/leadUpsert/leadUpsert.handler");
|
|
58
72
|
const loadOptions = __importStar(require("./methods/loadOptions"));
|
|
59
73
|
const request_1 = require("./utils/request");
|
|
60
74
|
class DatacrazyUtils {
|
|
@@ -66,19 +80,37 @@ class DatacrazyUtils {
|
|
|
66
80
|
group: ['transform'],
|
|
67
81
|
version: 1,
|
|
68
82
|
subtitle: '={{$parameter["resource"]}}',
|
|
69
|
-
description: 'Utilitários de automação para fluxos com o Datacrazy CRM
|
|
83
|
+
description: 'Utilitários de automação para fluxos com o Datacrazy CRM',
|
|
70
84
|
defaults: { name: 'Datacrazy Automações' },
|
|
71
85
|
inputs: ['main'],
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
outputs: `={{
|
|
87
|
+
$parameter['resource'] === 'messageTypeSwitch'
|
|
88
|
+
? [{type:'main',displayName:'Texto'},{type:'main',displayName:'Imagem'},{type:'main',displayName:'Vídeo'},{type:'main',displayName:'Áudio'},{type:'main',displayName:'Arquivo'},{type:'main',displayName:'Outro'}]
|
|
89
|
+
: $parameter['resource'] === 'keywordRouter'
|
|
90
|
+
? [{type:'main',displayName:'Grupo 1'},{type:'main',displayName:'Grupo 2'},{type:'main',displayName:'Grupo 3'},{type:'main',displayName:'Grupo 4'},{type:'main',displayName:'Nenhuma'}]
|
|
91
|
+
: ($parameter['resource'] === 'replyChecker' || $parameter['resource'] === 'leadIfCondition' || $parameter['resource'] === 'leadExistsChecker' || $parameter['resource'] === 'firstMessageDetector')
|
|
92
|
+
? [{type:'main',displayName:'Sim'},{type:'main',displayName:'Não'}]
|
|
93
|
+
: $parameter['resource'] === 'businessHoursChecker'
|
|
94
|
+
? [{type:'main',displayName:'Dentro do Horário'},{type:'main',displayName:'Fora do Horário'}]
|
|
95
|
+
: $parameter['resource'] === 'leadUpsert'
|
|
96
|
+
? [{type:'main',displayName:'Criado'},{type:'main',displayName:'Já Existia'}]
|
|
97
|
+
: $parameter['resource'] === 'leadDuplicateChecker'
|
|
98
|
+
? [{type:'main',displayName:'Com Duplicatas'},{type:'main',displayName:'Único'}]
|
|
99
|
+
: $parameter['resource'] === 'businessCreator'
|
|
100
|
+
? [{type:'main',displayName:'Criado'},{type:'main',displayName:'Já Existe'}]
|
|
101
|
+
: ['main']
|
|
102
|
+
}}`,
|
|
75
103
|
credentials: [
|
|
76
104
|
{
|
|
77
105
|
name: 'datacrazyApi',
|
|
78
106
|
required: false,
|
|
79
107
|
displayOptions: {
|
|
80
108
|
show: {
|
|
81
|
-
resource: [
|
|
109
|
+
resource: [
|
|
110
|
+
'messageContext', 'leadMover', 'leadIfCondition', 'leadTracker',
|
|
111
|
+
'leadExistsChecker', 'firstMessageDetector', 'leadDuplicateChecker',
|
|
112
|
+
'businessCreator', 'leadUpsert',
|
|
113
|
+
],
|
|
82
114
|
},
|
|
83
115
|
},
|
|
84
116
|
},
|
|
@@ -138,7 +170,42 @@ class DatacrazyUtils {
|
|
|
138
170
|
{
|
|
139
171
|
name: '⚡ Verificar se Lead Existe',
|
|
140
172
|
value: 'leadExistsChecker',
|
|
141
|
-
description: 'Busca o lead por
|
|
173
|
+
description: 'Busca o lead por WhatsApp, e-mail, nome, CPF/CNPJ ou Instagram — roteia para Sim ou Não',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: '⚡ Upsert de Lead',
|
|
177
|
+
value: 'leadUpsert',
|
|
178
|
+
description: 'Busca o lead; se não existir, cria automaticamente — saída "Criado" ou "Já Existia"',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: '⚡ Verificar Duplicatas de Lead',
|
|
182
|
+
value: 'leadDuplicateChecker',
|
|
183
|
+
description: 'Encontra todos os leads com o mesmo WhatsApp, e-mail ou CPF/CNPJ — saída "Com Duplicatas" ou "Único"',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: '⚡ Criar Negócio Condicional',
|
|
187
|
+
value: 'businessCreator',
|
|
188
|
+
description: 'Cria um negócio para o lead na pipeline se ainda não houver um aberto — saída "Criado" ou "Já Existe"',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
name: '⚡ Verificar Horário de Atendimento',
|
|
192
|
+
value: 'businessHoursChecker',
|
|
193
|
+
description: 'Verifica se o momento atual está dentro do horário configurado — saída "Dentro" ou "Fora"',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
name: '⚡ Roteador por Palavra-chave',
|
|
197
|
+
value: 'keywordRouter',
|
|
198
|
+
description: 'Roteia a mensagem para até 4 saídas baseadas em palavras-chave configuradas, ou "Nenhuma"',
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: '⚡ Detector de Primeira Mensagem',
|
|
202
|
+
value: 'firstMessageDetector',
|
|
203
|
+
description: 'Verifica se é o primeiro contato do lead (lead criado recentemente) — saída "Sim" ou "Não"',
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
name: '⚡ Formatar Número de WhatsApp',
|
|
207
|
+
value: 'phoneFormatter',
|
|
208
|
+
description: 'Normaliza números de telefone para o formato padrão (somente dígitos, com DDI)',
|
|
142
209
|
},
|
|
143
210
|
],
|
|
144
211
|
default: 'webhookParser',
|
|
@@ -151,6 +218,12 @@ class DatacrazyUtils {
|
|
|
151
218
|
...leadIfCondition_description_1.leadIfConditionOperations,
|
|
152
219
|
...leadTracker_description_1.leadTrackerOperations,
|
|
153
220
|
...leadExistsChecker_description_1.leadExistsCheckerOperations,
|
|
221
|
+
...phoneFormatter_description_1.phoneFormatterOperations,
|
|
222
|
+
...businessHoursChecker_description_1.businessHoursCheckerOperations,
|
|
223
|
+
...firstMessageDetector_description_1.firstMessageDetectorOperations,
|
|
224
|
+
...leadDuplicateChecker_description_1.leadDuplicateCheckerOperations,
|
|
225
|
+
...businessCreator_description_1.businessCreatorOperations,
|
|
226
|
+
...leadUpsert_description_1.leadUpsertOperations,
|
|
154
227
|
...webhookParser_description_1.webhookParserFields,
|
|
155
228
|
...webhookExtractor_description_1.webhookExtractorFields,
|
|
156
229
|
...providerDetector_description_1.providerDetectorFields,
|
|
@@ -161,6 +234,13 @@ class DatacrazyUtils {
|
|
|
161
234
|
...leadIfCondition_description_1.leadIfConditionFields,
|
|
162
235
|
...leadTracker_description_1.leadTrackerFields,
|
|
163
236
|
...leadExistsChecker_description_1.leadExistsCheckerFields,
|
|
237
|
+
...phoneFormatter_description_1.phoneFormatterFields,
|
|
238
|
+
...businessHoursChecker_description_1.businessHoursCheckerFields,
|
|
239
|
+
...keywordRouter_description_1.keywordRouterFields,
|
|
240
|
+
...firstMessageDetector_description_1.firstMessageDetectorFields,
|
|
241
|
+
...leadDuplicateChecker_description_1.leadDuplicateCheckerFields,
|
|
242
|
+
...businessCreator_description_1.businessCreatorFields,
|
|
243
|
+
...leadUpsert_description_1.leadUpsertFields,
|
|
164
244
|
],
|
|
165
245
|
};
|
|
166
246
|
this.methods = {
|
|
@@ -177,24 +257,46 @@ class DatacrazyUtils {
|
|
|
177
257
|
async execute() {
|
|
178
258
|
const items = this.getInputData();
|
|
179
259
|
const resource = this.getNodeParameter('resource', 0);
|
|
180
|
-
// Multi-output
|
|
260
|
+
// --- Multi-output: no loop ---
|
|
181
261
|
if (resource === 'messageTypeSwitch') {
|
|
182
262
|
return messageTypeSwitch_handler_1.executeMessageTypeSwitch.call(this, items);
|
|
183
263
|
}
|
|
184
264
|
if (resource === 'replyChecker') {
|
|
185
265
|
return replyChecker_handler_1.executeReplyChecker.call(this, items);
|
|
186
266
|
}
|
|
267
|
+
if (resource === 'keywordRouter') {
|
|
268
|
+
return keywordRouter_handler_1.executeKeywordRouter.call(this, items);
|
|
269
|
+
}
|
|
270
|
+
if (resource === 'businessHoursChecker') {
|
|
271
|
+
return businessHoursChecker_handler_1.executeBusinessHoursChecker.call(this, items);
|
|
272
|
+
}
|
|
273
|
+
if (resource === 'phoneFormatter') {
|
|
274
|
+
return phoneFormatter_handler_1.executePhoneFormatter.call(this, items);
|
|
275
|
+
}
|
|
276
|
+
// --- Multi-output: need credentials ---
|
|
277
|
+
const getUrl = async () => {
|
|
278
|
+
const creds = await this.getCredentials('datacrazyApi');
|
|
279
|
+
return (0, request_1.getBaseUrls)(creds);
|
|
280
|
+
};
|
|
187
281
|
if (resource === 'leadIfCondition') {
|
|
188
|
-
|
|
189
|
-
const url = (0, request_1.getBaseUrls)(credentials);
|
|
190
|
-
return leadIfCondition_handler_1.executeLeadIfCondition.call(this, url, items);
|
|
282
|
+
return leadIfCondition_handler_1.executeLeadIfCondition.call(this, await getUrl(), items);
|
|
191
283
|
}
|
|
192
284
|
if (resource === 'leadExistsChecker') {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
285
|
+
return leadExistsChecker_handler_1.executeLeadExistsChecker.call(this, await getUrl(), items);
|
|
286
|
+
}
|
|
287
|
+
if (resource === 'firstMessageDetector') {
|
|
288
|
+
return firstMessageDetector_handler_1.executeFirstMessageDetector.call(this, await getUrl(), items);
|
|
289
|
+
}
|
|
290
|
+
if (resource === 'leadDuplicateChecker') {
|
|
291
|
+
return leadDuplicateChecker_handler_1.executeLeadDuplicateChecker.call(this, await getUrl(), items);
|
|
292
|
+
}
|
|
293
|
+
if (resource === 'businessCreator') {
|
|
294
|
+
return businessCreator_handler_1.executeBusinessCreator.call(this, await getUrl(), items);
|
|
295
|
+
}
|
|
296
|
+
if (resource === 'leadUpsert') {
|
|
297
|
+
return leadUpsert_handler_1.executeLeadUpsert.call(this, await getUrl(), items);
|
|
196
298
|
}
|
|
197
|
-
// Single-output
|
|
299
|
+
// --- Single-output loop ---
|
|
198
300
|
const returnData = [];
|
|
199
301
|
let baseUrl = { crm: '', v1: '' };
|
|
200
302
|
try {
|
|
@@ -202,7 +304,7 @@ class DatacrazyUtils {
|
|
|
202
304
|
baseUrl = (0, request_1.getBaseUrls)(credentials);
|
|
203
305
|
}
|
|
204
306
|
catch {
|
|
205
|
-
// Credentials
|
|
307
|
+
// Credentials optional for webhook/local resources
|
|
206
308
|
}
|
|
207
309
|
for (let i = 0; i < items.length; i++) {
|
|
208
310
|
let responseData;
|
|
@@ -217,21 +319,18 @@ class DatacrazyUtils {
|
|
|
217
319
|
responseData = await providerDetector_handler_1.executeProviderDetector.call(this, i);
|
|
218
320
|
}
|
|
219
321
|
else if (resource === 'messageContext') {
|
|
220
|
-
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
221
|
-
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para
|
|
222
|
-
}
|
|
322
|
+
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
323
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para "Contexto de Mensagem Referenciada".');
|
|
223
324
|
responseData = await messageContext_handler_1.executeMessageContext.call(this, baseUrl, i);
|
|
224
325
|
}
|
|
225
326
|
else if (resource === 'leadMover') {
|
|
226
|
-
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
227
|
-
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para
|
|
228
|
-
}
|
|
327
|
+
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
328
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para "Mover Lead na Pipeline".');
|
|
229
329
|
responseData = await leadMover_handler_1.executeLeadMover.call(this, baseUrl, i);
|
|
230
330
|
}
|
|
231
331
|
else if (resource === 'leadTracker') {
|
|
232
|
-
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
233
|
-
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para
|
|
234
|
-
}
|
|
332
|
+
if (typeof baseUrl === 'object' && !baseUrl.crm)
|
|
333
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Credenciais do Datacrazy são necessárias para "Tracker do Lead".');
|
|
235
334
|
responseData = await leadTracker_handler_1.executeLeadTracker.call(this, baseUrl, i);
|
|
236
335
|
}
|
|
237
336
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatacrazyUtils.node.js","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAQsB;AAEtB,qGAAqH;AACrH,8GAAiI;AACjI,8GAAiI;AACjI,wGAAyH;AACzH,yFAAqG;AACrG,iHAAwG;AACxG,kGAAyF;AACzF,2GAA6H;AAC7H,+FAA6G;AAC7G,iHAAqI;
|
|
1
|
+
{"version":3,"file":"DatacrazyUtils.node.js","sourceRoot":"","sources":["../../../nodes/Datacrazy/DatacrazyUtils.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"businessCreator.description.d.ts","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/businessCreator/businessCreator.description.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAgBtD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAAe,EA8ElD,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.businessCreatorFields = exports.businessCreatorOperations = void 0;
|
|
4
|
+
exports.businessCreatorOperations = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operação',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: { show: { resource: ['businessCreator'] } },
|
|
11
|
+
options: [
|
|
12
|
+
{
|
|
13
|
+
name: 'Criar Negócio se Não Existir',
|
|
14
|
+
value: 'createIfNotExists',
|
|
15
|
+
action: 'Cria um negócio para o lead na pipeline se ainda não houver um aberto — saída "Criado" ou "Já Existe"',
|
|
16
|
+
},
|
|
17
|
+
],
|
|
18
|
+
default: 'createIfNotExists',
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
exports.businessCreatorFields = [
|
|
22
|
+
{
|
|
23
|
+
displayName: 'Lead',
|
|
24
|
+
name: 'leadId',
|
|
25
|
+
type: 'resourceLocator',
|
|
26
|
+
default: { mode: 'list', value: '' },
|
|
27
|
+
required: true,
|
|
28
|
+
description: 'Lead para o qual o negócio será criado',
|
|
29
|
+
displayOptions: { show: { resource: ['businessCreator'], operation: ['createIfNotExists'] } },
|
|
30
|
+
modes: [
|
|
31
|
+
{
|
|
32
|
+
displayName: 'Da Lista',
|
|
33
|
+
name: 'list',
|
|
34
|
+
type: 'list',
|
|
35
|
+
typeOptions: { searchListMethod: 'searchLeadsCrm', searchable: true },
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
displayName: 'Por ID',
|
|
39
|
+
name: 'id',
|
|
40
|
+
type: 'string',
|
|
41
|
+
placeholder: 'Ex: cluid123...',
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
displayName: 'Pipeline',
|
|
47
|
+
name: 'pipelineId',
|
|
48
|
+
type: 'resourceLocator',
|
|
49
|
+
default: { mode: 'list', value: '' },
|
|
50
|
+
required: true,
|
|
51
|
+
description: 'Pipeline onde o negócio será criado',
|
|
52
|
+
displayOptions: { show: { resource: ['businessCreator'], operation: ['createIfNotExists'] } },
|
|
53
|
+
modes: [
|
|
54
|
+
{
|
|
55
|
+
displayName: 'Da Lista',
|
|
56
|
+
name: 'list',
|
|
57
|
+
type: 'list',
|
|
58
|
+
typeOptions: { searchListMethod: 'searchPipelines', searchable: true },
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
displayName: 'Por ID',
|
|
62
|
+
name: 'id',
|
|
63
|
+
type: 'string',
|
|
64
|
+
placeholder: 'Ex: cluid123...',
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
displayName: 'Título do Negócio',
|
|
70
|
+
name: 'title',
|
|
71
|
+
type: 'string',
|
|
72
|
+
default: 'Novo Negócio',
|
|
73
|
+
required: true,
|
|
74
|
+
description: 'Título do negócio a ser criado',
|
|
75
|
+
displayOptions: { show: { resource: ['businessCreator'], operation: ['createIfNotExists'] } },
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
displayName: 'Etapa Inicial',
|
|
79
|
+
name: 'stageId',
|
|
80
|
+
type: 'resourceLocator',
|
|
81
|
+
default: { mode: 'list', value: '' },
|
|
82
|
+
description: 'Etapa inicial do negócio (opcional — usa a primeira etapa da pipeline se não informado)',
|
|
83
|
+
displayOptions: { show: { resource: ['businessCreator'], operation: ['createIfNotExists'] } },
|
|
84
|
+
modes: [
|
|
85
|
+
{
|
|
86
|
+
displayName: 'Da Lista',
|
|
87
|
+
name: 'list',
|
|
88
|
+
type: 'list',
|
|
89
|
+
typeOptions: { searchListMethod: 'searchLeadMoverStages', searchable: true },
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
displayName: 'Por ID',
|
|
93
|
+
name: 'id',
|
|
94
|
+
type: 'string',
|
|
95
|
+
placeholder: 'Ex: cluid123...',
|
|
96
|
+
},
|
|
97
|
+
],
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
//# sourceMappingURL=businessCreator.description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"businessCreator.description.js","sourceRoot":"","sources":["../../../../../nodes/Datacrazy/automations/businessCreator/businessCreator.description.ts"],"names":[],"mappings":";;;AAEa,QAAA,yBAAyB,GAAsB;IAC1D;QACE,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE;QAC3D,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,8BAA8B;gBACpC,KAAK,EAAE,mBAAmB;gBAC1B,MAAM,EAAE,uGAAuG;aAChH;SACF;QACD,OAAO,EAAE,mBAAmB;KAC7B;CACF,CAAC;AAEW,QAAA,qBAAqB,GAAsB;IACtD;QACE,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,wCAAwC;QACrD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE;QAC7F,KAAK,EAAE;YACL;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;aACtE;YACD;gBACE,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;KACF;IACD;QACE,WAAW,EAAE,UAAU;QACvB,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,qCAAqC;QAClD,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE;QAC7F,KAAK,EAAE;YACL;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE;aACvE;YACD;gBACE,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;KACF;IACD;QACE,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,gCAAgC;QAC7C,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE;KAC9F;IACD;QACE,WAAW,EAAE,eAAe;QAC5B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpC,WAAW,EAAE,yFAAyF;QACtG,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE;QAC7F,KAAK,EAAE;YACL;gBACE,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAE;aAC7E;YACD;gBACE,WAAW,EAAE,QAAQ;gBACrB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iBAAiB;aAC/B;SACF;KACF;CACF,CAAC"}
|