deploy-webapp 1.0.4 → 1.0.7

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/install.js CHANGED
@@ -12,10 +12,10 @@ function findProjectRoot(startPath) {
12
12
  // Encontrar o índice de node_modules e pegar o diretório pai
13
13
  const nodeModulesIndex = startPath.indexOf('node_modules');
14
14
  const candidateRoot = startPath.substring(0, nodeModulesIndex);
15
-
15
+
16
16
  // Normalizar o caminho (remover barra final se houver)
17
17
  const normalizedRoot = candidateRoot.replace(/[\/\\]$/, '');
18
-
18
+
19
19
  // Verificar se existe package.json nesse diretório (raiz do projeto)
20
20
  const packageJsonPath = path.join(normalizedRoot, 'package.json');
21
21
  if (fs.existsSync(packageJsonPath)) {
@@ -33,7 +33,7 @@ function findProjectRoot(startPath) {
33
33
  // Se não encontrou package.json, ainda assim usar o diretório acima de node_modules
34
34
  return normalizedRoot;
35
35
  }
36
-
36
+
37
37
  // Fallback: usar process.cwd() (diretório onde o comando foi executado)
38
38
  // Isso funciona porque quando yarn/npm instala, o cwd é a raiz do projeto
39
39
  return process.cwd();
@@ -48,6 +48,23 @@ const filesToCopy = [
48
48
  { source: path.join(packagePath, 'README.md'), dest: 'README.md' }
49
49
  ];
50
50
 
51
+ // Conteúdo do arquivo migrate.js a ser criado
52
+ const migrateJsContent = `require('dotenv').config();
53
+ const { runMigration } = require('deploy-webapp');
54
+
55
+ console.log('🚀 Iniciando migração de workflows...\\n');
56
+
57
+ runMigration()
58
+ .then(() => {
59
+ console.log('\\n✅ Migração concluída com sucesso!');
60
+ process.exit(0);
61
+ })
62
+ .catch((error) => {
63
+ console.error('\\n❌ Erro na migração:', error);
64
+ process.exit(1);
65
+ });
66
+ `;
67
+
51
68
  // Verificar se estamos em node_modules (instalação do pacote)
52
69
  const isInstalled = packagePath.includes('node_modules');
53
70
 
@@ -95,17 +112,115 @@ filesToCopy.forEach(({ source, dest }) => {
95
112
  }
96
113
  });
97
114
 
115
+ // Criar arquivo migrate.js se não existir
116
+ const migrateJsPath = path.join(projectRoot, 'migrate.js');
117
+ if (!fs.existsSync(migrateJsPath)) {
118
+ try {
119
+ fs.writeFileSync(migrateJsPath, migrateJsContent, 'utf8');
120
+ console.log('✅ deploy-webapp: migrate.js criado com sucesso!');
121
+ copiedCount++;
122
+ } catch (error) {
123
+ console.error('❌ deploy-webapp: Erro ao criar migrate.js:', error.message);
124
+ }
125
+ } else {
126
+ console.log('ℹ️ deploy-webapp: migrate.js já existe, mantendo arquivo existente.');
127
+ }
128
+
129
+ // Atualizar package.json com scripts se necessário
130
+ const packageJsonPath = path.join(projectRoot, 'package.json');
131
+ if (fs.existsSync(packageJsonPath)) {
132
+ try {
133
+ let packageJson = {};
134
+ const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf8');
135
+
136
+ // Tentar parsear o JSON, se falhar criar um novo objeto
137
+ try {
138
+ packageJson = JSON.parse(packageJsonContent);
139
+ } catch (parseError) {
140
+ console.log('⚠️ deploy-webapp: package.json inválido, criando novo...');
141
+ packageJson = {};
142
+ }
143
+
144
+ let updated = false;
145
+
146
+ // Garantir que name e version existam
147
+ if (!packageJson.name) {
148
+ packageJson.name = path.basename(projectRoot);
149
+ updated = true;
150
+ }
151
+ if (!packageJson.version) {
152
+ packageJson.version = '1.0.0';
153
+ updated = true;
154
+ }
155
+
156
+ // Criar scripts se não existir
157
+ if (!packageJson.scripts) {
158
+ packageJson.scripts = {};
159
+ updated = true;
160
+ }
161
+
162
+ // Adicionar script start se não existir ou se for diferente
163
+ if (!packageJson.scripts.start || packageJson.scripts.start !== 'node migrate.js') {
164
+ packageJson.scripts.start = 'node migrate.js';
165
+ updated = true;
166
+ }
167
+
168
+ // Adicionar script migrate se não existir ou se for diferente
169
+ if (!packageJson.scripts.migrate || packageJson.scripts.migrate !== 'node migrate.js') {
170
+ packageJson.scripts.migrate = 'node migrate.js';
171
+ updated = true;
172
+ }
173
+
174
+ // Garantir que dependencies existe
175
+ if (!packageJson.dependencies) {
176
+ packageJson.dependencies = {};
177
+ }
178
+
179
+ // Salvar sempre (mesmo que não tenha atualizado, garante formatação correta)
180
+ fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf8');
181
+ if (updated) {
182
+ console.log('✅ deploy-webapp: Scripts adicionados/atualizados no package.json!');
183
+ copiedCount++;
184
+ } else {
185
+ console.log('ℹ️ deploy-webapp: Scripts já existem no package.json.');
186
+ }
187
+ } catch (error) {
188
+ console.error('❌ deploy-webapp: Erro ao atualizar package.json:', error.message);
189
+ console.error(' Stack:', error.stack);
190
+ }
191
+ } else {
192
+ // Se não existe package.json, criar um novo
193
+ try {
194
+ const newPackageJson = {
195
+ name: path.basename(projectRoot),
196
+ version: '1.0.0',
197
+ scripts: {
198
+ start: 'node migrate.js',
199
+ migrate: 'node migrate.js'
200
+ },
201
+ dependencies: {
202
+ 'deploy-webapp': require(path.join(packagePath, 'package.json')).version || 'latest'
203
+ }
204
+ };
205
+ fs.writeFileSync(packageJsonPath, JSON.stringify(newPackageJson, null, 2) + '\n', 'utf8');
206
+ console.log('✅ deploy-webapp: package.json criado com scripts!');
207
+ copiedCount++;
208
+ } catch (error) {
209
+ console.error('❌ deploy-webapp: Erro ao criar package.json:', error.message);
210
+ }
211
+ }
212
+
98
213
  if (copiedCount > 0) {
99
- console.log(`\n✨ deploy-webapp: ${copiedCount} arquivo(s) de configuração criado(s) automaticamente na raiz do projeto!`);
214
+ console.log(`\n✨ deploy-webapp: ${copiedCount} arquivo(s) criado(s) automaticamente na raiz do projeto!`);
100
215
  console.log(`\n📝 Arquivos criados em: ${projectRoot}`);
101
216
  console.log('\n📋 Próximos passos:');
102
217
  console.log(' 1. ✏️ Edite ids.csv com os IDs dos workflows que deseja migrar');
103
218
  console.log(' 2. ✏️ Edite updateWorkflow.json com suas configurações específicas');
104
219
  console.log(' 3. 🔐 Crie o arquivo .env na raiz com suas credenciais (veja README.md)');
105
- console.log(' 4. 🚀 Crie um arquivo migrate.js e execute: node migrate.js\n');
106
- console.log('💡 Dica: Os arquivos estão prontos para edição na raiz do seu projeto!\n');
220
+ console.log(' 4. 🚀 Execute: yarn start ou npm start\n');
221
+ console.log('💡 Dica: Tudo está configurado! Basta editar os arquivos e executar yarn start!\n');
107
222
  } else {
108
- console.log('\nℹ️ deploy-webapp: Todos os arquivos de configuração já existem na raiz do projeto.');
109
- console.log(' Se precisar recriar, delete os arquivos e reinstale o pacote.\n');
223
+ console.log('\nℹ️ deploy-webapp: Todos os arquivos já existem na raiz do projeto.');
224
+ console.log(' Execute: yarn start ou npm start para iniciar a migração.\n');
110
225
  }
111
226
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deploy-webapp",
3
- "version": "1.0.4",
3
+ "version": "1.0.7",
4
4
  "description": "Script para deploy de esteiras no WebApp.",
5
5
  "main": "dist/0_index.js",
6
6
  "bin": {
package/src/utils/ids.csv CHANGED
@@ -1,3 +1,2 @@
1
1
  workflow_id;
2
- d8e1d640-f734-4051-b296-1938cbf47e86
3
- 53553938-df30-46a4-9554-eddd7461c6b1
2
+ cole os ids dos workflows que deseja deployar aqui
@@ -1,4 +1,4 @@
1
1
  {
2
- "flow_form_id": "6c1d5b15-c4f7-4fd8-97fa-aa8522d0a20a",
3
- "updateWorkflowProtocolFunction": "const tabChatListAreaReclamante = [\r\n \"5b2c64ba-4ca6-4a42-a5de-8f3f069fd0c2\", // Pendencia com reclamante 1 PROD RC\r\n \"48b76281-fea0-434e-b3e4-047a8e38a7d6\", // Pendencia com reclamante 2 PROD RC\r\n \"ba79e84a-70d3-4d86-b18a-d0649b1d368f\", // Pendencia com reclamante 3 PROD RC\r\n];\r\n\r\nconst tabChatListArea = [\r\n \"607b907a-7eb2-4ef2-b902-9513841de41f\", // Pendencia 1 PROD RC\r\n \"1bc17b34-50c8-4f2a-8049-1c5cabda8478\", // Pendencia 2 PROD RC\r\n \"f3682a6b-1f9c-40cb-ab37-efda6953e66a\", // Pendencia 3 PROD RC\r\n \"4d004afb-0ce8-4559-b95b-a9b450f71355\", // Pendenciar Área [Complemento] PROD RC\r\n \"d1eca09d-929e-40c5-9d7f-46ee9abf37dc\", // Pendenciar Área [Resposta Pendente] PROD RC\r\n];\r\n\r\nconst tabChatListReclamante = [\r\n \"75e43640-02b2-4d3a-a1ee-e7158c8c36ca\", // Pendenciar Reclamante PROD RC\r\n];\r\n\r\nconst tabChatListFechado = [\r\n \"8acf65df-6341-4448-ac88-ebac5e7524ba\", // Captura no cartão recusada PROD RC\r\n \"e609ad49-0d58-48fb-8521-932a3b39b450\", // Consulta CPF - LGPD PROD RC\r\n \"89d1b74a-23e1-4357-bb43-cbcce413ef00\", // Erro AWP Reembolso PROD RC\r\n \"6893fa78-6988-4d42-bbe8-56115ad6dafb\", // Perda Parcial PROD RC\r\n \"994b638d-b77c-4382-93d7-8a3c4a68a335\", // Prazo curto PROD RC\r\n \"7cfd92cd-d13a-4aa2-b4bc-1572d827d30f\", // Reativação ou Não reabilitar PROD RC\r\n \"bf053a72-3cca-46c2-adce-efef7249398f\", // Prêmio devido PROD RC\r\n \"0660628b-95db-4b5a-8b61-537711d73e8e\", // Proposta recusada auto PROD RC\r\n \"36987e66-cd0b-41cd-ba09-cb1f4f62ebc0\", // Sinistro 3o sem responsabilidade PROD RC\r\n \"1137350c-dad4-457c-bbf0-1de44bfb4d1c\", // Sinistro atender PROD RC\r\n \"4c1d0f3b-9c8e-41a4-aad0-c402688835a5\", // Sinistro DNC PROD RC\r\n \"356f351e-5f3f-4902-b145-d0e2aa38f5e4\", // Sinistro Datas / Peças PROD RC\r\n \"7301d8f7-5454-4063-aefe-7a6d73dfa90c\", // Sinistro Negativa PROD RC\r\n \"e3999399-d44d-4b02-adb8-a6215a293395\", // Sinistro pagamento PROD RC\r\n \"34e901e9-834b-4c91-82ee-99dc93b44608\", // Sinistro vendaval PROD RC\r\n \"161d59a0-3ead-4f3e-b355-658be1a01759\", // Template padrão PROD RC\r\n \"47507dd8-29c0-4450-8360-c1137cab8a06\", // Vidro homologado PROD RC\r\n \"183bab26-e4a4-4015-822b-2c97ae6304c6\", // Vidro logomarca PROD RC\r\n \"73e90d69-6f4e-4373-9130-446b5e93a1df\", // Vistoria de qualidade PROD RC\r\n]\r\n\r\nconst tabChatListRejeitado = [\r\n \"11ef7acb-44a6-4a69-aa83-ebd496a454fd\", // Rejeitada PROD RC\r\n]\r\n\r\nconst lastTabulation = protocol?.journey[0];\r\n\r\nconst tabChatAreaReclamante =\r\n lastTabulation && tabChatListAreaReclamante.includes(lastTabulation.tab_id);\r\n\r\nconst tabChatArea =\r\n lastTabulation && tabChatListArea.includes(lastTabulation.tab_id);\r\n\r\nconst tabChatReclamante =\r\n lastTabulation && tabChatListReclamante.includes(lastTabulation.tab_id);\r\n\r\nconst tabChatFechado =\r\n lastTabulation && tabChatListFechado.includes(lastTabulation.tab_id);\r\n\r\nconst tabChatRejeitado =\r\n lastTabulation && tabChatListRejeitado.includes(lastTabulation.tab_id);\r\n\r\nlet updatedWorkflowProtocol;\r\n\r\nif (tabChatAreaReclamante) {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: true,\r\n reclamante: true,\r\n company: true,\r\n person: true,\r\n },\r\n },\r\n }\r\n} else if (tabChatArea) {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: true,\r\n reclamante: false,\r\n company: false,\r\n person: false,\r\n },\r\n },\r\n }\r\n} else if (tabChatReclamante) {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: false,\r\n reclamante: true,\r\n company: false,\r\n person: false,\r\n },\r\n },\r\n };\r\n} else if (tabChatFechado) {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: false,\r\n reclamante: false,\r\n company: false,\r\n person: false,\r\n },\r\n },\r\n };\r\n} else if (tabChatRejeitado) {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: false,\r\n reclamante: false,\r\n company: false,\r\n person: false,\r\n },\r\n },\r\n };\r\n} else {\r\n return {\r\n user_requested_already_viewed_protocol: true,\r\n // workflow_protocol_solicitation_status_id: \"\",\r\n optional_config: {\r\n ...workflowProtocol.optional_config,\r\n pendency_button: {\r\n clerk: false,\r\n broker: false,\r\n broker_frotas: false,\r\n tech: false,\r\n advisor: false,\r\n seller: false,\r\n backoffice: false,\r\n provider: false,\r\n commercial: false,\r\n frotas: false,\r\n area: false,\r\n reclamante: false,\r\n company: false,\r\n person: false,\r\n },\r\n },\r\n };\r\n}\r\n"
2
+ "flow_form_id": "",
3
+ "updateWorkflowProtocolFunction": ""
4
4
  }