@easyflow/javascript-sdk 2.1.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/.babelrc +5 -0
- package/.github/workflows/deploy-sdk-cf.yml +49 -0
- package/.github/workflows/release-sdk-cdn.yml +144 -0
- package/.github/workflows/release-sdk.yml +112 -0
- package/.prettierrc +6 -0
- package/CDN-DEPLOYMENT.md +175 -0
- package/DEMO.md +258 -0
- package/DEPLOYMENT.md +224 -0
- package/INTEGRATION-GUIDE.md +521 -0
- package/README.md +1013 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/easyflow-javascript-sdk/index.html +116 -0
- package/coverage/easyflow-javascript-sdk/libs/constants.mjs.html +268 -0
- package/coverage/easyflow-javascript-sdk/libs/errors.mjs.html +271 -0
- package/coverage/easyflow-javascript-sdk/libs/exception-handler.mjs.html +148 -0
- package/coverage/easyflow-javascript-sdk/libs/fingerprint.mjs.html +895 -0
- package/coverage/easyflow-javascript-sdk/libs/http.mjs.html +502 -0
- package/coverage/easyflow-javascript-sdk/libs/index.html +266 -0
- package/coverage/easyflow-javascript-sdk/libs/logger.mjs.html +568 -0
- package/coverage/easyflow-javascript-sdk/libs/sanitizer.mjs.html +1099 -0
- package/coverage/easyflow-javascript-sdk/libs/security.mjs.html +733 -0
- package/coverage/easyflow-javascript-sdk/libs/types.mjs.html +508 -0
- package/coverage/easyflow-javascript-sdk/libs/utils.mjs.html +379 -0
- package/coverage/easyflow-javascript-sdk/libs/validator.mjs.html +2623 -0
- package/coverage/easyflow-javascript-sdk/sdk.mjs.html +2434 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +131 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/index.html +116 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/constants.mjs.html +268 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/errors.mjs.html +271 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/exception-handler.mjs.html +148 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/fingerprint.mjs.html +895 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/http.mjs.html +502 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/index.html +266 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/logger.mjs.html +568 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/sanitizer.mjs.html +1099 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/security.mjs.html +733 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/types.mjs.html +508 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/utils.mjs.html +379 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/validator.mjs.html +2623 -0
- package/coverage/lcov-report/easyflow-javascript-sdk/sdk.mjs.html +2434 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +131 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +1429 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/dist/435.easyflow-sdk.min.js +1 -0
- package/dist/easyflow-sdk.min.js +1 -0
- package/dist/easyflow-sdk.min.js.LICENSE.txt +1 -0
- package/dist/index.html +756 -0
- package/docs/index.html +775 -0
- package/examples/lovable-integration.html +410 -0
- package/index.html +981 -0
- package/jest.config.js +37 -0
- package/jsdoc.json +42 -0
- package/libs/auto-integration.mjs +333 -0
- package/libs/constants.mjs +61 -0
- package/libs/constants.spec.js +198 -0
- package/libs/errors.mjs +62 -0
- package/libs/errors.spec.js +178 -0
- package/libs/exception-handler.mjs +21 -0
- package/libs/exception-handler.spec.js +237 -0
- package/libs/fingerprint.mjs +270 -0
- package/libs/http.mjs +163 -0
- package/libs/http.spec.js +427 -0
- package/libs/integration-wrapper.mjs +285 -0
- package/libs/logger.mjs +161 -0
- package/libs/logger.spec.js +389 -0
- package/libs/sanitizer.mjs +340 -0
- package/libs/sanitizer.spec.js +583 -0
- package/libs/security.mjs +217 -0
- package/libs/types.mjs +141 -0
- package/libs/utils.mjs +368 -0
- package/libs/utils.spec.js +231 -0
- package/libs/validator.mjs +952 -0
- package/libs/validator.spec.js +615 -0
- package/mocks/offer.mock.js +77 -0
- package/package.json +72 -0
- package/scripts/publish-npm.sh +82 -0
- package/sdk.mjs +945 -0
- package/sdk.spec.js +796 -0
- package/test-setup.cjs +211 -0
- package/test.html +154 -0
- package/webpack.config.cjs +41 -0
package/DEMO.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# EasyFlow JavaScript SDK - Demonstração Completa
|
|
2
|
+
|
|
3
|
+
Este arquivo demonstra como usar todas as funcionalidades implementadas no EasyFlow JavaScript SDK, incluindo as novas funcionalidades de gerenciamento de clientes e cartões de crédito.
|
|
4
|
+
|
|
5
|
+
## 🚀 Inicialização
|
|
6
|
+
|
|
7
|
+
```javascript
|
|
8
|
+
// Inicializar o SDK
|
|
9
|
+
const sdk = new EasyflowSDK('your-business-id')
|
|
10
|
+
|
|
11
|
+
// Ou com configuração completa
|
|
12
|
+
const sdk = new EasyflowSDK({
|
|
13
|
+
businessId: 'your-business-id',
|
|
14
|
+
additionalOptions: {},
|
|
15
|
+
})
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 👥 Gerenciamento de Clientes
|
|
19
|
+
|
|
20
|
+
### 1. Criar Cliente
|
|
21
|
+
|
|
22
|
+
```javascript
|
|
23
|
+
const customer = await sdk.createCustomer({
|
|
24
|
+
name: 'Diego Moura',
|
|
25
|
+
email: 'diegomoura637+20@gmail.com',
|
|
26
|
+
deliveryAddress: {
|
|
27
|
+
zipCode: '37540114',
|
|
28
|
+
street: 'Rua Marechal Deodoro',
|
|
29
|
+
complement: 'Apt',
|
|
30
|
+
neighborhood: 'Centro',
|
|
31
|
+
city: 'Pouso Alegre',
|
|
32
|
+
state: 'MG',
|
|
33
|
+
number: '33',
|
|
34
|
+
},
|
|
35
|
+
address: {
|
|
36
|
+
zipCode: '37540114',
|
|
37
|
+
street: 'Rua Marechal Deodoro',
|
|
38
|
+
complement: 'Apt',
|
|
39
|
+
neighborhood: 'Centro',
|
|
40
|
+
city: 'Pouso Alegre',
|
|
41
|
+
state: 'MG',
|
|
42
|
+
number: '33',
|
|
43
|
+
},
|
|
44
|
+
document: {
|
|
45
|
+
type: 'CPF',
|
|
46
|
+
number: '01234567890',
|
|
47
|
+
},
|
|
48
|
+
phone: {
|
|
49
|
+
areaCode: '+55',
|
|
50
|
+
ddd: '11',
|
|
51
|
+
number: '998862782',
|
|
52
|
+
isMobile: true,
|
|
53
|
+
},
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
console.log('Cliente criado:', customer.id)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Buscar Cliente
|
|
60
|
+
|
|
61
|
+
```javascript
|
|
62
|
+
const customerInfo = await sdk.getCustomer('customer-1234567890123456')
|
|
63
|
+
console.log('Nome:', customerInfo.name)
|
|
64
|
+
console.log('Email:', customerInfo.email)
|
|
65
|
+
console.log('Documento:', customerInfo.document)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 3. Atualizar Cliente
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
const updateResult = await sdk.updateCustomer('customer-1234567890123456', {
|
|
72
|
+
name: 'Diego Moura Atualizado',
|
|
73
|
+
email: 'diegomoura637+21@gmail.com',
|
|
74
|
+
phone: {
|
|
75
|
+
areaCode: '+55',
|
|
76
|
+
ddd: '11',
|
|
77
|
+
number: '998862783',
|
|
78
|
+
isMobile: true,
|
|
79
|
+
},
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
console.log('Cliente atualizado:', updateResult.success)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 4. Listar Clientes
|
|
86
|
+
|
|
87
|
+
```javascript
|
|
88
|
+
const customers = await sdk.listCustomers(1, 10)
|
|
89
|
+
console.log(`Página ${customers.currentPage} de ${customers.totalPages}`)
|
|
90
|
+
console.log(`Total: ${customers.totalDocs} clientes`)
|
|
91
|
+
|
|
92
|
+
customers.docs.forEach((customer) => {
|
|
93
|
+
console.log(`- ${customer.name} (${customer.email})`)
|
|
94
|
+
})
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## 💳 Gerenciamento de Cartões de Crédito
|
|
98
|
+
|
|
99
|
+
### 1. Adicionar Cartão
|
|
100
|
+
|
|
101
|
+
```javascript
|
|
102
|
+
const cardResult = await sdk.addCreditCard(
|
|
103
|
+
'customer-1234567890123456',
|
|
104
|
+
'gGAVbMqIWZD0ftaHEMYSbU+YHVyUPU67ITGsfeawLtg51e7UE/UF4rYferWVjy6OPkJ+ep1B4hDhospUPsskIsXf4i8I9BvJzgwbwPUH8ScbwwDbUIWq0H9gY/7gHrnnQ1SqgNpcrGVhe3wa3mt2ilNOO5LUuIUpo/WbRuWQQUxjibfvLrTlGqBNdUKU/83xVJTSbT4mLxzatwnFVBM7MaT4zDO2IgcRbyjX38iFslJIPP2nFfIVwuIdRbSMIqEH38SHetovGgHaQ58YA1ATN5ksxBFC4qt3jvmtz/dhol/CQhty/4o40h33eQZrJPCrMAcDcbT2obto7L8='
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
console.log('Cartão adicionado:', cardResult.creditCardId)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 2. Buscar Cartão
|
|
111
|
+
|
|
112
|
+
```javascript
|
|
113
|
+
const creditCard = await sdk.getCreditCard(
|
|
114
|
+
'customer-1234567890123456',
|
|
115
|
+
'201abf40-e64e-4743-88b9-b5d47830904a'
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
console.log('Bandeira:', creditCard.brand)
|
|
119
|
+
console.log('Últimos 4 dígitos:', creditCard.last4Numbers)
|
|
120
|
+
console.log(
|
|
121
|
+
'Expira:',
|
|
122
|
+
`${creditCard.expiresAtMonth}/${creditCard.expiresAtYear}`
|
|
123
|
+
)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 3. Atualizar Cartão
|
|
127
|
+
|
|
128
|
+
```javascript
|
|
129
|
+
const updateCardResult = await sdk.updateCreditCard(
|
|
130
|
+
'201abf40-e64e-4743-88b9-b5d47830904a',
|
|
131
|
+
'new-encrypted-token-789'
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
console.log('Cartão atualizado:', updateCardResult.success)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 4. Remover Cartão
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
const removeResult = await sdk.removeCreditCard(
|
|
141
|
+
'customer-1234567890123456',
|
|
142
|
+
'201abf40-e64e-4743-88b9-b5d47830904a'
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
console.log('Cartão removido:', removeResult.success)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 5. Listar Cartões
|
|
149
|
+
|
|
150
|
+
```javascript
|
|
151
|
+
const creditCards = await sdk.listCreditCards('customer-1234567890123456')
|
|
152
|
+
|
|
153
|
+
creditCards.forEach((card) => {
|
|
154
|
+
console.log(`${card.brand} terminando em ${card.last4Numbers}`)
|
|
155
|
+
console.log(`Expira: ${card.expiresAtMonth}/${card.expiresAtYear}`)
|
|
156
|
+
console.log('---')
|
|
157
|
+
})
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## 🔐 Headers de Segurança
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
const secureHeaders = {
|
|
164
|
+
'x-fingerprint-id': '12345678',
|
|
165
|
+
'x-recaptcha-token': 'your_recaptcha_token',
|
|
166
|
+
'ef-signature': 'your_hmac_signature',
|
|
167
|
+
'x-custom-header': 'custom_value',
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Usar headers em qualquer operação
|
|
171
|
+
const customer = await sdk.createCustomer(customerData, secureHeaders)
|
|
172
|
+
const creditCard = await sdk.addCreditCard(customerId, token, secureHeaders)
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Tratamento de Erros
|
|
176
|
+
|
|
177
|
+
```javascript
|
|
178
|
+
try {
|
|
179
|
+
const customer = await sdk.createCustomer(customerData)
|
|
180
|
+
console.log('Sucesso:', customer.id)
|
|
181
|
+
} catch (error) {
|
|
182
|
+
if (error instanceof ValidationError) {
|
|
183
|
+
console.error('Erro de validação:', error.message)
|
|
184
|
+
console.error('Campo:', error.field)
|
|
185
|
+
} else if (error instanceof NetworkError) {
|
|
186
|
+
console.error('Erro de rede:', error.message)
|
|
187
|
+
} else if (error instanceof SecurityError) {
|
|
188
|
+
console.error('Erro de segurança:', error.message)
|
|
189
|
+
} else {
|
|
190
|
+
console.error('Erro inesperado:', error)
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## 📋 Validações Automáticas
|
|
196
|
+
|
|
197
|
+
O SDK valida automaticamente todos os dados:
|
|
198
|
+
|
|
199
|
+
- **Email**: Formato válido e segurança
|
|
200
|
+
- **CPF/CNPJ**: Algoritmo oficial brasileiro
|
|
201
|
+
- **Telefone**: Formato brasileiro com DDD
|
|
202
|
+
- **Endereço**: Estrutura brasileira completa
|
|
203
|
+
- **IDs**: Formato e unicidade
|
|
204
|
+
- **Tokens**: Comprimento e formato
|
|
205
|
+
|
|
206
|
+
## 🔄 Rate Limiting
|
|
207
|
+
|
|
208
|
+
O SDK inclui proteção automática contra abuso:
|
|
209
|
+
|
|
210
|
+
```javascript
|
|
211
|
+
// Cada método tem seu próprio limite
|
|
212
|
+
await sdk.createCustomer(customerData) // Rate limit: createCustomer
|
|
213
|
+
await sdk.getCustomer(customerId) // Rate limit: getCustomer
|
|
214
|
+
await sdk.addCreditCard(customerId, token) // Rate limit: addCreditCard
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 🧪 Testes
|
|
218
|
+
|
|
219
|
+
Execute os testes para verificar se tudo está funcionando:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
# Todos os testes
|
|
223
|
+
npm test
|
|
224
|
+
|
|
225
|
+
# Testes específicos
|
|
226
|
+
npm test -- --testNamePattern="Customer Management"
|
|
227
|
+
npm test -- --testNamePattern="Credit Card Management"
|
|
228
|
+
|
|
229
|
+
# Cobertura
|
|
230
|
+
npm run test:coverage
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## Status dos Testes
|
|
234
|
+
|
|
235
|
+
- **Total de Testes**: 263
|
|
236
|
+
- **Taxa de Sucesso**: 100%
|
|
237
|
+
- **Cobertura**: Excelente
|
|
238
|
+
- **Funcionalidades**: Todas implementadas
|
|
239
|
+
|
|
240
|
+
## Próximos Passos
|
|
241
|
+
|
|
242
|
+
1. **Integração**: Use o SDK em sua aplicação
|
|
243
|
+
2. **Webhooks**: Configure notificações automáticas
|
|
244
|
+
3. **Monitoramento**: Implemente logs e métricas
|
|
245
|
+
4. **Segurança**: Configure headers de segurança
|
|
246
|
+
5. **Produção**: Deploy em ambiente de produção
|
|
247
|
+
|
|
248
|
+
## 📞 Suporte
|
|
249
|
+
|
|
250
|
+
- **Documentação**: [docs.easyflow.digital](https://docs.easyflow.digital)
|
|
251
|
+
- **Suporte**: [easyflow.digital/contact](https://easyflow.digital/contact)
|
|
252
|
+
- **Issues**: [GitHub Issues](https://github.com/easyflow-cash/easyflow-javascript-sdk/issues)
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
**EasyFlow JavaScript SDK** - Versão 2.1.4
|
|
257
|
+
**Última atualização**: Dezembro 2024
|
|
258
|
+
**Status**: Pronto para produção
|
package/DEPLOYMENT.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
# 🚀 Deploy e Releases - Easyflow SDK
|
|
2
|
+
|
|
3
|
+
Este documento explica como funciona o sistema de deploy e releases do Easyflow SDK.
|
|
4
|
+
|
|
5
|
+
## 📋 Workflows Disponíveis
|
|
6
|
+
|
|
7
|
+
### 1. Deploy Automático (`deploy-sdk-cf.yml`)
|
|
8
|
+
|
|
9
|
+
**Trigger:** Push para branch `main`
|
|
10
|
+
|
|
11
|
+
**O que faz:**
|
|
12
|
+
|
|
13
|
+
- Instala dependências
|
|
14
|
+
- Executa testes
|
|
15
|
+
- Gera build do SDK
|
|
16
|
+
- Verifica se o build foi gerado
|
|
17
|
+
- Deploy para Cloudflare Pages
|
|
18
|
+
|
|
19
|
+
**Arquivos gerados:**
|
|
20
|
+
|
|
21
|
+
- `dist/easyflow-sdk.min.js` - SDK minificado
|
|
22
|
+
|
|
23
|
+
**URLs de acesso:**
|
|
24
|
+
|
|
25
|
+
- **Cloudflare Pages**: `https://easyflow-sdk.pages.dev/easyflow-sdk.min.js`
|
|
26
|
+
- **jsDelivr CDN**: `https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk@latest/dist/easyflow-sdk.min.js` (após publicação no NPM)
|
|
27
|
+
|
|
28
|
+
### 2. Release com Versionamento (`release-sdk.yml`)
|
|
29
|
+
|
|
30
|
+
**Trigger:** Push de tag com padrão `v*` (ex: `v2.1.2`)
|
|
31
|
+
|
|
32
|
+
**O que faz:**
|
|
33
|
+
|
|
34
|
+
- Instala dependências
|
|
35
|
+
- Executa testes
|
|
36
|
+
- Gera build do SDK
|
|
37
|
+
- Cria arquivo versionado
|
|
38
|
+
- Gera hash SRI (Subresource Integrity)
|
|
39
|
+
- Cria arquivo de exemplo
|
|
40
|
+
- Deploy para Cloudflare Pages
|
|
41
|
+
- Cria release no GitHub
|
|
42
|
+
|
|
43
|
+
**Arquivos gerados:**
|
|
44
|
+
|
|
45
|
+
- `dist/easyflow-sdk.min.js` - SDK minificado (sem versão)
|
|
46
|
+
- `dist/easyflow-sdk.v2.1.2.min.js` - SDK versionado
|
|
47
|
+
- `dist/example.html` - Exemplo de uso com SRI
|
|
48
|
+
|
|
49
|
+
**URLs de acesso:**
|
|
50
|
+
|
|
51
|
+
- **Cloudflare Pages**:
|
|
52
|
+
- `https://easyflow-sdk.pages.dev/easyflow-sdk.min.js` (latest)
|
|
53
|
+
- `https://easyflow-sdk.pages.dev/easyflow-sdk.v2.1.2.min.js` (versionado)
|
|
54
|
+
- **jsDelivr CDN** (após publicação no NPM):
|
|
55
|
+
- `https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk@latest/dist/easyflow-sdk.min.js` (latest)
|
|
56
|
+
- `https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk@2.1.2/dist/easyflow-sdk.min.js` (versionado)
|
|
57
|
+
|
|
58
|
+
## 🔧 Como Fazer um Release
|
|
59
|
+
|
|
60
|
+
### 1. Atualizar Versão
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
# Editar package.json
|
|
64
|
+
npm version patch # 2.1.2 -> 2.1.3
|
|
65
|
+
npm version minor # 2.1.2 -> 2.2.0
|
|
66
|
+
npm version major # 2.1.2 -> 3.0.0
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 2. Criar Tag e Push
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Criar tag
|
|
73
|
+
git tag v2.1.2
|
|
74
|
+
|
|
75
|
+
# Push da tag
|
|
76
|
+
git push origin v2.1.2
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3. Verificar Deploy
|
|
80
|
+
|
|
81
|
+
- Acesse: https://easyflow-sdk.pages.dev
|
|
82
|
+
- Verifique se o arquivo versionado está disponível
|
|
83
|
+
- Confirme o release no GitHub
|
|
84
|
+
|
|
85
|
+
## Segurança (SRI)
|
|
86
|
+
|
|
87
|
+
O workflow de release gera automaticamente hashes SRI para verificação de integridade:
|
|
88
|
+
|
|
89
|
+
### Cloudflare Pages
|
|
90
|
+
|
|
91
|
+
```html
|
|
92
|
+
<script
|
|
93
|
+
src="https://easyflow-sdk.pages.dev/easyflow-sdk.v2.1.2.min.js"
|
|
94
|
+
integrity="sha384-ABC123..."
|
|
95
|
+
crossorigin="anonymous"
|
|
96
|
+
></script>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### jsDelivr CDN
|
|
100
|
+
|
|
101
|
+
```html
|
|
102
|
+
<script
|
|
103
|
+
src="https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk@2.1.2/dist/easyflow-sdk.min.js"
|
|
104
|
+
integrity="sha384-ABC123..."
|
|
105
|
+
crossorigin="anonymous"
|
|
106
|
+
></script>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 🌐 CDNs Disponíveis
|
|
110
|
+
|
|
111
|
+
### 1. Cloudflare Pages
|
|
112
|
+
|
|
113
|
+
- **URL**: `https://easyflow-sdk.pages.dev`
|
|
114
|
+
- **Vantagens**:
|
|
115
|
+
- Deploy automático via GitHub Actions
|
|
116
|
+
- Controle total sobre o deploy
|
|
117
|
+
- Customização completa
|
|
118
|
+
- SRI hashes automáticos
|
|
119
|
+
|
|
120
|
+
### 2. jsDelivr CDN
|
|
121
|
+
|
|
122
|
+
- **URL**: `https://cdn.jsdelivr.net/npm/@easyflow/javascript-sdk`
|
|
123
|
+
- **Vantagens**:
|
|
124
|
+
- CDN global com alta performance
|
|
125
|
+
- Cache inteligente
|
|
126
|
+
- Disponibilidade automática via NPM
|
|
127
|
+
- Redundância geográfica
|
|
128
|
+
|
|
129
|
+
### Como Funciona o jsDelivr
|
|
130
|
+
|
|
131
|
+
1. **Publicação no NPM**: Execute `npm publish --access public`
|
|
132
|
+
2. **Sincronização**: jsDelivr sincroniza automaticamente com NPM
|
|
133
|
+
3. **Disponibilidade**: SDK fica disponível em ~5 minutos
|
|
134
|
+
4. **Cache Global**: Distribuição automática em CDNs globais
|
|
135
|
+
|
|
136
|
+
## Configuração de Secrets
|
|
137
|
+
|
|
138
|
+
Os workflows precisam dos seguintes secrets configurados no GitHub:
|
|
139
|
+
|
|
140
|
+
- `CF_API_TOKEN` - Token da API do Cloudflare
|
|
141
|
+
- `CF_ACCOUNT_ID` - ID da conta Cloudflare
|
|
142
|
+
|
|
143
|
+
### Como configurar:
|
|
144
|
+
|
|
145
|
+
1. Vá para Settings > Secrets and variables > Actions
|
|
146
|
+
2. Adicione os secrets necessários
|
|
147
|
+
3. Configure as permissões do repositório se necessário
|
|
148
|
+
|
|
149
|
+
## Monitoramento
|
|
150
|
+
|
|
151
|
+
### Logs de Deploy
|
|
152
|
+
|
|
153
|
+
- Acesse: https://github.com/easyflow-cash/easyflow-javascript-sdk/actions
|
|
154
|
+
- Verifique os logs de cada workflow
|
|
155
|
+
|
|
156
|
+
### Status do Cloudflare Pages
|
|
157
|
+
|
|
158
|
+
- Acesse: https://dash.cloudflare.com
|
|
159
|
+
- Vá para Pages > easyflow-sdk
|
|
160
|
+
- Verifique o status do deploy
|
|
161
|
+
|
|
162
|
+
## Troubleshooting
|
|
163
|
+
|
|
164
|
+
### Erro: npm ci falha
|
|
165
|
+
|
|
166
|
+
**Solução:** O workflow usa `npm install` em vez de `npm ci` para ser mais robusto.
|
|
167
|
+
|
|
168
|
+
### Erro: Build não encontrado
|
|
169
|
+
|
|
170
|
+
**Solução:** Verifique se o webpack está configurado corretamente e se não há erros no build.
|
|
171
|
+
|
|
172
|
+
### Erro: Cloudflare deploy falha
|
|
173
|
+
|
|
174
|
+
**Solução:**
|
|
175
|
+
|
|
176
|
+
1. Verifique se os secrets estão configurados
|
|
177
|
+
2. Confirme se o projeto `easyflow-sdk` existe no Cloudflare Pages
|
|
178
|
+
3. Verifique os logs do Cloudflare
|
|
179
|
+
|
|
180
|
+
### Erro: Release não criado
|
|
181
|
+
|
|
182
|
+
**Solução:**
|
|
183
|
+
|
|
184
|
+
1. Verifique se a tag segue o padrão `v*`
|
|
185
|
+
2. Confirme se o `GITHUB_TOKEN` tem permissões para criar releases
|
|
186
|
+
3. Verifique os logs do workflow
|
|
187
|
+
|
|
188
|
+
## 📝 Exemplos de Uso
|
|
189
|
+
|
|
190
|
+
### Uso Básico (Latest)
|
|
191
|
+
|
|
192
|
+
```html
|
|
193
|
+
<script src="https://easyflow-sdk.pages.dev/easyflow-sdk.min.js"></script>
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Uso com Versão Específica
|
|
197
|
+
|
|
198
|
+
```html
|
|
199
|
+
<script src="https://easyflow-sdk.pages.dev/easyflow-sdk.v2.1.2.min.js"></script>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Uso com SRI (Recomendado para Produção)
|
|
203
|
+
|
|
204
|
+
```html
|
|
205
|
+
<script
|
|
206
|
+
src="https://easyflow-sdk.pages.dev/easyflow-sdk.v2.1.2.min.js"
|
|
207
|
+
integrity="sha384-ABC123..."
|
|
208
|
+
crossorigin="anonymous"
|
|
209
|
+
></script>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## 🔄 Fluxo de Desenvolvimento
|
|
213
|
+
|
|
214
|
+
1. **Desenvolvimento:** Push para `main` → Deploy automático
|
|
215
|
+
2. **Release:** Tag `v*` → Release versionado
|
|
216
|
+
3. **Hotfix:** Tag `v*` → Release de correção
|
|
217
|
+
|
|
218
|
+
## 📞 Suporte
|
|
219
|
+
|
|
220
|
+
Para problemas com deploy:
|
|
221
|
+
|
|
222
|
+
1. Verifique os logs do GitHub Actions
|
|
223
|
+
2. Consulte a documentação do Cloudflare Pages
|
|
224
|
+
3. Entre em contato com a equipe de DevOps
|