@easyflow/javascript-sdk 2.1.8 → 2.1.10

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.
Files changed (94) hide show
  1. package/README.md +87 -7
  2. package/dist/index.d.ts +421 -0
  3. package/package.json +19 -6
  4. package/.babelrc +0 -5
  5. package/.github/workflows/deploy-sdk-cf.yml +0 -49
  6. package/.github/workflows/release-sdk-cdn.yml +0 -144
  7. package/.github/workflows/release-sdk.yml +0 -112
  8. package/.prettierrc +0 -6
  9. package/CDN-DEPLOYMENT.md +0 -175
  10. package/DEMO.md +0 -258
  11. package/DEPLOYMENT.md +0 -224
  12. package/INTEGRATION-GUIDE.md +0 -521
  13. package/coverage/base.css +0 -224
  14. package/coverage/block-navigation.js +0 -87
  15. package/coverage/easyflow-javascript-sdk/index.html +0 -116
  16. package/coverage/easyflow-javascript-sdk/libs/constants.mjs.html +0 -268
  17. package/coverage/easyflow-javascript-sdk/libs/errors.mjs.html +0 -271
  18. package/coverage/easyflow-javascript-sdk/libs/exception-handler.mjs.html +0 -148
  19. package/coverage/easyflow-javascript-sdk/libs/fingerprint.mjs.html +0 -895
  20. package/coverage/easyflow-javascript-sdk/libs/http.mjs.html +0 -502
  21. package/coverage/easyflow-javascript-sdk/libs/index.html +0 -266
  22. package/coverage/easyflow-javascript-sdk/libs/logger.mjs.html +0 -568
  23. package/coverage/easyflow-javascript-sdk/libs/sanitizer.mjs.html +0 -1099
  24. package/coverage/easyflow-javascript-sdk/libs/security.mjs.html +0 -733
  25. package/coverage/easyflow-javascript-sdk/libs/types.mjs.html +0 -508
  26. package/coverage/easyflow-javascript-sdk/libs/utils.mjs.html +0 -379
  27. package/coverage/easyflow-javascript-sdk/libs/validator.mjs.html +0 -2623
  28. package/coverage/easyflow-javascript-sdk/sdk.mjs.html +0 -2434
  29. package/coverage/favicon.png +0 -0
  30. package/coverage/index.html +0 -131
  31. package/coverage/lcov-report/base.css +0 -224
  32. package/coverage/lcov-report/block-navigation.js +0 -87
  33. package/coverage/lcov-report/easyflow-javascript-sdk/index.html +0 -116
  34. package/coverage/lcov-report/easyflow-javascript-sdk/libs/constants.mjs.html +0 -268
  35. package/coverage/lcov-report/easyflow-javascript-sdk/libs/errors.mjs.html +0 -271
  36. package/coverage/lcov-report/easyflow-javascript-sdk/libs/exception-handler.mjs.html +0 -148
  37. package/coverage/lcov-report/easyflow-javascript-sdk/libs/fingerprint.mjs.html +0 -895
  38. package/coverage/lcov-report/easyflow-javascript-sdk/libs/http.mjs.html +0 -502
  39. package/coverage/lcov-report/easyflow-javascript-sdk/libs/index.html +0 -266
  40. package/coverage/lcov-report/easyflow-javascript-sdk/libs/logger.mjs.html +0 -568
  41. package/coverage/lcov-report/easyflow-javascript-sdk/libs/sanitizer.mjs.html +0 -1099
  42. package/coverage/lcov-report/easyflow-javascript-sdk/libs/security.mjs.html +0 -733
  43. package/coverage/lcov-report/easyflow-javascript-sdk/libs/types.mjs.html +0 -508
  44. package/coverage/lcov-report/easyflow-javascript-sdk/libs/utils.mjs.html +0 -379
  45. package/coverage/lcov-report/easyflow-javascript-sdk/libs/validator.mjs.html +0 -2623
  46. package/coverage/lcov-report/easyflow-javascript-sdk/sdk.mjs.html +0 -2434
  47. package/coverage/lcov-report/favicon.png +0 -0
  48. package/coverage/lcov-report/index.html +0 -131
  49. package/coverage/lcov-report/prettify.css +0 -1
  50. package/coverage/lcov-report/prettify.js +0 -2
  51. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  52. package/coverage/lcov-report/sorter.js +0 -196
  53. package/coverage/lcov.info +0 -1429
  54. package/coverage/prettify.css +0 -1
  55. package/coverage/prettify.js +0 -2
  56. package/coverage/sort-arrow-sprite.png +0 -0
  57. package/coverage/sorter.js +0 -196
  58. package/dist/435.easyflow-sdk.min.js +0 -1
  59. package/dist/easyflow-sdk.min.js +0 -1
  60. package/dist/easyflow-sdk.min.js.LICENSE.txt +0 -1
  61. package/dist/index.html +0 -756
  62. package/docs/index.html +0 -775
  63. package/examples/lovable-integration.html +0 -410
  64. package/index.html +0 -981
  65. package/jest.config.js +0 -37
  66. package/jsdoc.json +0 -42
  67. package/libs/auto-integration.mjs +0 -333
  68. package/libs/constants.mjs +0 -61
  69. package/libs/constants.spec.js +0 -198
  70. package/libs/errors.mjs +0 -62
  71. package/libs/errors.spec.js +0 -178
  72. package/libs/exception-handler.mjs +0 -21
  73. package/libs/exception-handler.spec.js +0 -237
  74. package/libs/fingerprint.mjs +0 -270
  75. package/libs/http.mjs +0 -163
  76. package/libs/http.spec.js +0 -427
  77. package/libs/integration-wrapper.mjs +0 -285
  78. package/libs/logger.mjs +0 -161
  79. package/libs/logger.spec.js +0 -389
  80. package/libs/sanitizer.mjs +0 -340
  81. package/libs/sanitizer.spec.js +0 -583
  82. package/libs/security.mjs +0 -217
  83. package/libs/types.mjs +0 -141
  84. package/libs/utils.mjs +0 -368
  85. package/libs/utils.spec.js +0 -231
  86. package/libs/validator.mjs +0 -952
  87. package/libs/validator.spec.js +0 -615
  88. package/mocks/offer.mock.js +0 -77
  89. package/scripts/publish-npm.sh +0 -82
  90. package/sdk.mjs +0 -945
  91. package/sdk.spec.js +0 -796
  92. package/test-setup.cjs +0 -211
  93. package/test.html +0 -154
  94. package/webpack.config.cjs +0 -41
@@ -1,410 +0,0 @@
1
- <!doctype html>
2
- <html lang="pt-BR">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Easyflow SDK - Integração Lovable</title>
7
- <style>
8
- body {
9
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
10
- Roboto, sans-serif;
11
- max-width: 1200px;
12
- margin: 0 auto;
13
- padding: 20px;
14
- background: #f8fafc;
15
- }
16
- .container {
17
- background: white;
18
- border-radius: 12px;
19
- padding: 30px;
20
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
21
- margin-bottom: 20px;
22
- }
23
- .header {
24
- text-align: center;
25
- margin-bottom: 40px;
26
- }
27
- .header h1 {
28
- color: #1e293b;
29
- margin-bottom: 10px;
30
- }
31
- .header p {
32
- color: #64748b;
33
- font-size: 18px;
34
- }
35
- .code-block {
36
- background: #1e293b;
37
- color: #e2e8f0;
38
- padding: 20px;
39
- border-radius: 8px;
40
- overflow-x: auto;
41
- margin: 20px 0;
42
- font-family: 'Monaco', 'Menlo', monospace;
43
- font-size: 14px;
44
- }
45
- .step {
46
- margin-bottom: 30px;
47
- }
48
- .step h3 {
49
- color: #1e293b;
50
- border-bottom: 2px solid #3b82f6;
51
- padding-bottom: 8px;
52
- margin-bottom: 15px;
53
- }
54
- .example {
55
- background: #f1f5f9;
56
- border-left: 4px solid #3b82f6;
57
- padding: 15px;
58
- margin: 15px 0;
59
- border-radius: 0 8px 8px 0;
60
- }
61
- .button {
62
- background: #3b82f6;
63
- color: white;
64
- border: none;
65
- padding: 12px 24px;
66
- border-radius: 6px;
67
- cursor: pointer;
68
- font-size: 16px;
69
- margin: 10px 5px;
70
- transition: background 0.2s;
71
- }
72
- .button:hover {
73
- background: #2563eb;
74
- }
75
- .button.secondary {
76
- background: #64748b;
77
- }
78
- .button.secondary:hover {
79
- background: #475569;
80
- }
81
- .result {
82
- background: #f0fdf4;
83
- border: 1px solid #bbf7d0;
84
- border-radius: 6px;
85
- padding: 15px;
86
- margin: 15px 0;
87
- font-family: monospace;
88
- }
89
- .error {
90
- background: #fef2f2;
91
- border: 1px solid #fecaca;
92
- color: #dc2626;
93
- }
94
- .success {
95
- background: #f0fdf4;
96
- border: 1px solid #bbf7d0;
97
- color: #16a34a;
98
- }
99
- .tabs {
100
- display: flex;
101
- border-bottom: 1px solid #e2e8f0;
102
- margin-bottom: 20px;
103
- }
104
- .tab {
105
- padding: 12px 24px;
106
- cursor: pointer;
107
- border-bottom: 2px solid transparent;
108
- transition: all 0.2s;
109
- }
110
- .tab.active {
111
- border-bottom-color: #3b82f6;
112
- color: #3b82f6;
113
- }
114
- .tab-content {
115
- display: none;
116
- }
117
- .tab-content.active {
118
- display: block;
119
- }
120
- </style>
121
- </head>
122
- <body>
123
- <div class="header">
124
- <h1>🚀 Easyflow SDK - Integração Lovable</h1>
125
- <p>Integração NO BRAINER para plataformas low-code/no-code</p>
126
- </div>
127
-
128
- <!-- Tabs de Integração -->
129
- <div class="tabs">
130
- <div class="tab active" onclick="showTab('lovable')">
131
- Lovable.dev
132
- </div>
133
- <div class="tab" onclick="showTab('bubble')">Bubble</div>
134
- <div class="tab" onclick="showTab('webflow')">Webflow</div>
135
- <div class="tab" onclick="showTab('zapier')">Zapier</div>
136
- </div>
137
-
138
- <!-- Tab Lovable -->
139
- <div id="lovable" class="tab-content active">
140
- <div class="container">
141
- <div class="step">
142
- <h3>1. Inclusão do SDK</h3>
143
- <p>Adicione o SDK no seu projeto Lovable:</p>
144
- <div class="code-block">
145
- &lt;!-- Incluir o SDK Easyflow --&gt; &lt;script
146
- src="https://easyflow-sdk.pages.dev/easyflow-sdk.min.js"&gt;&lt;/script&gt;
147
- &lt;!-- Ou via jsDelivr --&gt; &lt;script
148
- src="https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk@latest/dist/easyflow-sdk.min.js"&gt;&lt;/script&gt;
149
- </div>
150
- </div>
151
-
152
- <div class="step">
153
- <h3>2. Inicialização Automática</h3>
154
- <p>
155
- O SDK se inicializa automaticamente e expõe todas as
156
- funcionalidades:
157
- </p>
158
- <div class="code-block">
159
- // Configuração automática para Lovable
160
- window.easyflowSDK = { // Todas as funcionalidades
161
- disponíveis automaticamente createCustomer:
162
- function(data) { /* ... */ }, placeOrder:
163
- function(offerId, data) { /* ... */ }, charge:
164
- function(data) { /* ... */ }, // ... e muito mais } //
165
- Configurar callbacks para eventos
166
- easyflowSDK.on('customerCreated', function(customer) {
167
- console.log('Cliente criado:', customer); // Atualizar
168
- UI do Lovable }); easyflowSDK.on('paymentProcessed',
169
- function(result) { console.log('Pagamento processado:',
170
- result); // Redirecionar ou atualizar status });
171
- </div>
172
- </div>
173
-
174
- <div class="step">
175
- <h3>3. Exemplo de Uso no Lovable</h3>
176
- <p>Use diretamente nas suas ações e workflows:</p>
177
- <div class="code-block">
178
- // Criar cliente const customerResult = await
179
- easyflowSDK.createCustomer({ name: "João Silva", email:
180
- "joao@exemplo.com", document: { type: "CPF", number:
181
- "12345678909" } }); if (customerResult.success) { //
182
- Cliente criado com sucesso const customerId =
183
- customerResult.data.id; // Processar pagamento const
184
- paymentResult = await
185
- easyflowSDK.placeOrder('offer-123', { buyer:
186
- customerResult.data, payments: [{ method: 'credit-card',
187
- creditCard: { number: '4111111111111111', holderName:
188
- 'João Silva', month: '12', year: '2025', cvv: '123' } }]
189
- }); if (paymentResult.success) { console.log('Pedido
190
- criado:', paymentResult.data); } }
191
- </div>
192
- </div>
193
-
194
- <div class="step">
195
- <h3>4. Validação Automática</h3>
196
- <p>Validação de dados integrada:</p>
197
- <div class="code-block">
198
- // Validar dados antes de enviar const emailValid =
199
- easyflowSDK.validate.email('joao@exemplo.com'); const
200
- cpfValid = easyflowSDK.validate.cpf('12345678909'); if
201
- (emailValid && cpfValid) { // Dados válidos, prosseguir
202
- const result = await
203
- easyflowSDK.createCustomer(customerData); } else { //
204
- Mostrar erro na UI do Lovable showError('Dados
205
- inválidos'); }
206
- </div>
207
- </div>
208
- </div>
209
- </div>
210
-
211
- <!-- Tab Bubble -->
212
- <div id="bubble" class="tab-content">
213
- <div class="container">
214
- <h3>Integração com Bubble</h3>
215
- <p>
216
- Use o SDK diretamente no Bubble através de JavaScript
217
- personalizado:
218
- </p>
219
- <div class="code-block">
220
- // No Bubble, adicione este JavaScript personalizado // após
221
- incluir o SDK Easyflow // Configurar callbacks para eventos
222
- do Bubble easyflowSDK.on('customerCreated',
223
- function(customer) { // Atualizar campo no Bubble
224
- bubble_fn_updateCustomer(customer); });
225
- easyflowSDK.on('paymentProcessed', function(result) { //
226
- Atualizar status do pagamento
227
- bubble_fn_updatePaymentStatus(result); }); // Função para
228
- criar cliente no Bubble async function
229
- bubbleCreateCustomer(customerData) { const result = await
230
- easyflowSDK.createCustomer(customerData); return result; }
231
- </div>
232
- </div>
233
- </div>
234
-
235
- <!-- Tab Webflow -->
236
- <div id="webflow" class="tab-content">
237
- <div class="container">
238
- <h3>Integração com Webflow</h3>
239
- <p>
240
- Adicione o SDK no Webflow e use com JavaScript
241
- personalizado:
242
- </p>
243
- <div class="code-block">
244
- // No Webflow, adicione este código JavaScript // após
245
- incluir o SDK Easyflow // Configurar formulário de checkout
246
- document.getElementById('checkout-form').addEventListener('submit',
247
- async function(e) { e.preventDefault(); const formData = new
248
- FormData(this); const customerData = { name:
249
- formData.get('name'), email: formData.get('email'),
250
- document: { type: 'CPF', number: formData.get('cpf') } }; //
251
- Validar dados if
252
- (easyflowSDK.validate.customer(customerData)) { const result
253
- = await easyflowSDK.createCustomer(customerData); if
254
- (result.success) { // Redirecionar para pagamento
255
- window.location.href = '/checkout?customer=' +
256
- result.data.id; } } });
257
- </div>
258
- </div>
259
- </div>
260
-
261
- <!-- Tab Zapier -->
262
- <div id="zapier" class="tab-content">
263
- <div class="container">
264
- <h3>Integração com Zapier</h3>
265
- <p>Use o SDK através de webhooks e APIs:</p>
266
- <div class="code-block">
267
- // Endpoint para Zapier webhook app.post('/zapier/easyflow',
268
- async (req, res) => { try { const { action, data } =
269
- req.body; switch (action) { case 'createCustomer': const
270
- customerResult = await easyflowSDK.createCustomer(data);
271
- res.json(customerResult); break; case 'processPayment':
272
- const paymentResult = await easyflowSDK.charge(data);
273
- res.json(paymentResult); break; default:
274
- res.status(400).json({ error: 'Ação não suportada' }); } }
275
- catch (error) { res.status(500).json({ error: error.message
276
- }); } });
277
- </div>
278
- </div>
279
- </div>
280
-
281
- <!-- Demonstração Interativa -->
282
- <div class="container">
283
- <h3>🎯 Demonstração Interativa</h3>
284
- <p>Teste as funcionalidades do SDK:</p>
285
-
286
- <div class="example">
287
- <h4>Teste de Validação</h4>
288
- <input
289
- type="email"
290
- id="testEmail"
291
- placeholder="Digite um email"
292
- style="padding: 8px; margin: 5px"
293
- />
294
- <button class="button" onclick="testValidation()">
295
- Validar Email
296
- </button>
297
- <div id="validationResult"></div>
298
- </div>
299
-
300
- <div class="example">
301
- <h4>Teste de Status</h4>
302
- <button class="button" onclick="checkStatus()">
303
- Verificar Status
304
- </button>
305
- <div id="statusResult"></div>
306
- </div>
307
- </div>
308
-
309
- <!-- Scripts -->
310
- <script src="https://easyflow-sdk.pages.dev/easyflow-sdk.min.js"></script>
311
- <script>
312
- // Inicializar SDK para demonstração
313
- let easyflowSDK = null
314
-
315
- // Função para mostrar tabs
316
- function showTab(tabName) {
317
- // Esconder todas as tabs
318
- document.querySelectorAll('.tab-content').forEach((tab) => {
319
- tab.classList.remove('active')
320
- })
321
- document.querySelectorAll('.tab').forEach((tab) => {
322
- tab.classList.remove('active')
323
- })
324
-
325
- // Mostrar tab selecionada
326
- document.getElementById(tabName).classList.add('active')
327
- event.target.classList.add('active')
328
- }
329
-
330
- // Função para testar validação
331
- function testValidation() {
332
- const email = document.getElementById('testEmail').value
333
- const result = document.getElementById('validationResult')
334
-
335
- try {
336
- if (
337
- easyflowSDK &&
338
- easyflowSDK.validate &&
339
- easyflowSDK.validate.email
340
- ) {
341
- const isValid = easyflowSDK.validate.email(email)
342
- result.className = isValid
343
- ? 'result success'
344
- : 'result error'
345
- result.textContent = isValid
346
- ? '✅ Email válido!'
347
- : '❌ Email inválido!'
348
- } else {
349
- result.className = 'result error'
350
- result.textContent = '❌ SDK não inicializado'
351
- }
352
- } catch (error) {
353
- result.className = 'result error'
354
- result.textContent = '❌ Erro: ' + error.message
355
- }
356
- }
357
-
358
- // Função para verificar status
359
- function checkStatus() {
360
- const result = document.getElementById('statusResult')
361
-
362
- try {
363
- if (easyflowSDK && easyflowSDK.getStatus) {
364
- const status = easyflowSDK.getStatus()
365
- result.className = 'result success'
366
- result.innerHTML = `
367
- <strong>Status do SDK:</strong><br>
368
- ✅ Inicializado: ${status.initialized}<br>
369
- 🆔 Business ID: ${status.businessId}<br>
370
- 📦 Versão: ${status.sdkVersion}<br>
371
- 🔧 Wrapper: ${status.wrapperVersion}
372
- `
373
- } else {
374
- result.className = 'result error'
375
- result.textContent = '❌ SDK não inicializado'
376
- }
377
- } catch (error) {
378
- result.className = 'result error'
379
- result.textContent = '❌ Erro: ' + error.message
380
- }
381
- }
382
-
383
- // Aguardar carregamento do SDK
384
- window.addEventListener('load', function () {
385
- // Verificar se o SDK foi carregado
386
- if (typeof window.easyflowSDK !== 'undefined') {
387
- easyflowSDK = window.easyflowSDK
388
- console.log('✅ Easyflow SDK carregado com sucesso!')
389
-
390
- // Configurar callbacks de exemplo
391
- if (easyflowSDK.on) {
392
- easyflowSDK.on('customerCreated', function (customer) {
393
- console.log('🎉 Cliente criado:', customer)
394
- })
395
-
396
- easyflowSDK.on('paymentProcessed', function (result) {
397
- console.log('💳 Pagamento processado:', result)
398
- })
399
-
400
- easyflowSDK.on('error', function (error) {
401
- console.error('❌ Erro:', error)
402
- })
403
- }
404
- } else {
405
- console.error('❌ Easyflow SDK não foi carregado')
406
- }
407
- })
408
- </script>
409
- </body>
410
- </html>