@devix-tecnologia/zapsign-client 0.0.0-stage → 0.4.4

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024-2026 Devix Tecnologia Ltda
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,137 @@
1
- # Temporary Holding Version
1
+ # @devix-tecnologia/zapsign-client
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Cliente [ZapSign](https://zapsign.com.br) implementando a interface
4
+ `IProvedorAssinatura` do pacote `@devix-tecnologia/assinatura-eletronica`.
5
+
6
+ ## Instalação
7
+
8
+ ```bash
9
+ pnpm add @devix-tecnologia/zapsign-client
10
+ ```
11
+
12
+ ## Configuração
13
+
14
+ ```typescript
15
+ import { ZapsignClient } from '@devix-tecnologia/zapsign-client';
16
+
17
+ const client = new ZapsignClient({
18
+ apiToken: process.env.ZAPSIGN_TOKEN!, // obrigatório
19
+ sandbox: true, // default: true
20
+ baseUrl: 'https://proxy.interno/api/v1/docs/', // opcional: vence sandbox
21
+ folderPath: '/contratos', // opcional
22
+ brandPrimaryColor: '#000000', // opcional: default #000000
23
+ authMode: 'assinaturaTela', // opcional: default assinaturaTela
24
+ });
25
+ ```
26
+
27
+ | Parâmetro | Tipo | Default | Descrição |
28
+ | ------------------- | ---------- | ---------------- | -------------------------------------------------- |
29
+ | `apiToken` | `string` | — | Token de autenticação da API ZapSign |
30
+ | `sandbox` | `boolean` | `true` | Ambiente de testes |
31
+ | `baseUrl` | `string` | — | URL base customizada (ex.: proxy). Vence `sandbox` |
32
+ | `folderPath` | `string` | — | Pasta no ZapSign onde os docs são criados |
33
+ | `brandPrimaryColor` | `string` | `#000000` | Cor da marca no fluxo de assinatura |
34
+ | `authMode` | `AuthMode` | `assinaturaTela` | Modo de autenticação padrão |
35
+
36
+ ## Uso
37
+
38
+ Enviar um documento para assinatura:
39
+
40
+ ```typescript
41
+ const resultado = await client.enviarParaAssinatura({
42
+ pdfBase64: 'dGVzdGU=...',
43
+ signatarios: [{ nome: 'João Silva', email: 'joao@teste.com' }],
44
+ nome: 'Contrato',
45
+ dataLimite: '2026-12-31', // opcional
46
+ sandbox: true,
47
+ idExterno: 'contrato_123',
48
+ sendAutomaticEmail: true, // opcional: envio automático de e-mail
49
+ sendAutomaticWhatsapp: false, // opcional: envio automático de WhatsApp
50
+ requireSelfie: false, // opcional: exige selfie do signatário
51
+ requireDocumentPhoto: false, // opcional: exige foto do documento
52
+ });
53
+ ```
54
+
55
+ Consultar detalhes e cancelar:
56
+
57
+ ```typescript
58
+ const detalhes = await client.obterDetalhes('doc-token-123');
59
+ // { status: 'signed', originalFileUrl: '...', signedFileUrl: '...' }
60
+
61
+ await client.cancelarDocumento('doc-token-123');
62
+ ```
63
+
64
+ ### Overrides por signatário
65
+
66
+ Campos como `sendAutomaticEmail`, `authMode`, `requireSelfie` podem ser
67
+ definidos por signatário (vence o nível-documento):
68
+
69
+ ```typescript
70
+ signatarios: [
71
+ {
72
+ nome: 'Usuário Automático',
73
+ email: 'auto@exemplo.com',
74
+ sendAutomaticEmail: false, // não envia convite
75
+ lockEmail: false,
76
+ authMode: 'assinaturaTela',
77
+ requireSelfie: true,
78
+ requireDocumentPhoto: true,
79
+ lockPhone: true,
80
+ sendAutomaticWhatsapp: true,
81
+ },
82
+ { nome: 'Representante', email: 'rep@exemplo.com' }, // herda do documento
83
+ ],
84
+ ```
85
+
86
+ ### Assinatura automática (operador assina pelo signatário)
87
+
88
+ ```typescript
89
+ await client.assinarAutomaticamente(
90
+ ['signer-token-1', 'signer-token-2'], // tokens dos signatários
91
+ 'user-token-9' // token do operador
92
+ );
93
+ ```
94
+
95
+ ### Normalização de webhooks
96
+
97
+ ```typescript
98
+ const evento = client.normalizarWebhook({
99
+ event_type: 'doc_signed',
100
+ status: 'signed',
101
+ token: 'doc-token-456',
102
+ external_id: 'contrato_123',
103
+ signed_file: 'https://zapsign.com.br/doc/signed.pdf',
104
+ });
105
+ // { tipo: 'documento_finalizado', provedorDocId: 'doc-token-456', idExterno: 'contrato_123', signedFileUrl: '...' }
106
+ ```
107
+
108
+ | Evento ZapSign | Status | `tipo` normalizado |
109
+ | -------------- | -------- | ---------------------- |
110
+ | `doc_signed` | `signed` | `documento_finalizado` |
111
+ | `doc_signed` | outros | `signatario_assinou` |
112
+ | `doc_deleted` | — | `documento_cancelado` |
113
+ | outros | — | `outro` |
114
+
115
+ ## Uso com o orquestrador
116
+
117
+ ```typescript
118
+ import {
119
+ AssinaturaOrquestrador,
120
+ criarObserverPadrao,
121
+ } from '@devix-tecnologia/assinatura-eletronica';
122
+ import { ZapsignClient } from '@devix-tecnologia/zapsign-client';
123
+
124
+ const orquestrador = new AssinaturaOrquestrador(
125
+ new ZapsignClient({ apiToken: process.env.ZAPSIGN_TOKEN!, sandbox: true }),
126
+ undefined,
127
+ criarObserverPadrao(console)
128
+ );
129
+
130
+ const resultado = await orquestrador.enviarParaAssinatura({
131
+ /* ... */
132
+ });
133
+ ```
134
+
135
+ ## Licença
136
+
137
+ MIT. Ver [LICENSE](./LICENSE).
@@ -0,0 +1,3 @@
1
+ export type { ZapsignConfig } from './zapsign-client/index.js';
2
+ export { ZapsignClient } from './zapsign-client/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { ZapsignClient } from './zapsign-client/index.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ZapsignClient } from './zapsign-client.js';
2
+ export type { ZapsignConfig } from './zapsign-client.types.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { ZapsignClient } from './zapsign-client.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/zapsign-client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { DetalhesDocumento, DocumentoParaAssinar, EventoAssinatura, IProvedorAssinatura, ResultadoEnvio } from '@devix-tecnologia/assinatura-eletronica';
2
+ import type { ZapsignConfig, ZapsignSignResponse } from './zapsign-client.types.js';
3
+ export declare class ZapsignClient implements IProvedorAssinatura {
4
+ private baseURL;
5
+ private apiToken;
6
+ private folderPath?;
7
+ private brandPrimaryColor;
8
+ private authMode;
9
+ constructor(config: ZapsignConfig);
10
+ enviarParaAssinatura(documento: DocumentoParaAssinar): Promise<ResultadoEnvio>;
11
+ obterDetalhes(idDoc: string): Promise<DetalhesDocumento>;
12
+ /**
13
+ * Assinatura automática (task-036): um usuário da plataforma assina via API, sem fluxo de convite.
14
+ * POST /api/v1/sign/ com user_token (do usuário que assina) + signer_tokens (dos signatários no doc).
15
+ * https://docs.zapsign.com.br — operação específica do ZapSign (não faz parte de IProvedorAssinatura).
16
+ */
17
+ assinarAutomaticamente(signerTokens: string[], userToken: string): Promise<ZapsignSignResponse>;
18
+ cancelarDocumento(idDoc: string): Promise<void>;
19
+ normalizarWebhook(payload: unknown): EventoAssinatura;
20
+ }
21
+ //# sourceMappingURL=zapsign-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zapsign-client.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACf,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAEV,aAAa,EAGb,mBAAmB,EACpB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,aAAc,YAAW,mBAAmB;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAW;IAE3B,YAAY,MAAM,EAAE,aAAa,EAYhC;IAEK,oBAAoB,CACxB,SAAS,EAAE,oBAAoB,GAC9B,OAAO,CAAC,cAAc,CAAC,CA6CzB;IAEK,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa7D;IAED;;;;OAIG;IACG,sBAAsB,CAC1B,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAY9B;IAEK,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpD;IAED,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAyBpD;CACF"}
@@ -0,0 +1,114 @@
1
+ import axios from 'axios';
2
+ export class ZapsignClient {
3
+ baseURL;
4
+ apiToken;
5
+ folderPath;
6
+ brandPrimaryColor;
7
+ authMode;
8
+ constructor(config) {
9
+ this.apiToken = config.apiToken;
10
+ // baseUrl explícita (ex.: vinda de env/proxy) vence o switch por sandbox (task-036).
11
+ // `||` (não `??`): env vazia ('') deve cair no switch, não virar baseURL vazia.
12
+ this.baseURL =
13
+ config.baseUrl ||
14
+ (config.sandbox === false
15
+ ? 'https://api.zapsign.com.br/api/v1/docs/'
16
+ : 'https://sandbox.api.zapsign.com.br/api/v1/docs/');
17
+ this.folderPath = config.folderPath;
18
+ this.brandPrimaryColor = config.brandPrimaryColor ?? '#000000';
19
+ this.authMode = config.authMode ?? 'assinaturaTela';
20
+ }
21
+ async enviarParaAssinatura(documento) {
22
+ const { data } = await axios.post(this.baseURL, {
23
+ name: documento.nome,
24
+ external_id: documento.idExterno,
25
+ base64_pdf: documento.pdfBase64,
26
+ sandbox: documento.sandbox,
27
+ ...(documento.dataLimite !== undefined
28
+ ? { date_limit_to_sign: documento.dataLimite }
29
+ : {}),
30
+ brand_primary_color: this.brandPrimaryColor,
31
+ ...(this.folderPath !== undefined
32
+ ? { folder_path: this.folderPath }
33
+ : {}),
34
+ // Precedência (task-036): override do SIGNATÁRIO ?? nível-DOCUMENTO ?? default.
35
+ signers: documento.signatarios.map((s) => ({
36
+ name: s.nome,
37
+ email: s.email,
38
+ send_automatic_email: s.sendAutomaticEmail ?? documento.sendAutomaticEmail ?? true,
39
+ send_automatic_whatsapp: s.sendAutomaticWhatsapp ?? documento.sendAutomaticWhatsapp ?? false,
40
+ custom_message: s.mensagemPersonalizada ?? '',
41
+ lock_email: s.lockEmail ?? documento.lockEmail ?? false,
42
+ lock_phone: s.lockPhone ?? documento.lockPhone ?? false,
43
+ phone_country: '55',
44
+ phone_number: s.telefone ?? '',
45
+ auth_mode: s.authMode ?? this.authMode,
46
+ require_selfie_photo: s.requireSelfie ?? documento.requireSelfie ?? false,
47
+ require_document_photo: s.requireDocumentPhoto ?? documento.requireDocumentPhoto ?? false,
48
+ })),
49
+ }, {
50
+ headers: { Authorization: `Bearer ${this.apiToken}` },
51
+ });
52
+ return {
53
+ provedorDocId: data.token,
54
+ linkAcompanhamento: data.signers?.[0]?.sign_url,
55
+ rawResponse: data,
56
+ };
57
+ }
58
+ async obterDetalhes(idDoc) {
59
+ const { data } = await axios.get(`${this.baseURL}${idDoc}`, {
60
+ headers: { Authorization: `Bearer ${this.apiToken}` },
61
+ });
62
+ return {
63
+ status: data.status,
64
+ originalFileUrl: data.original_file,
65
+ signedFileUrl: data.signed_file,
66
+ };
67
+ }
68
+ /**
69
+ * Assinatura automática (task-036): um usuário da plataforma assina via API, sem fluxo de convite.
70
+ * POST /api/v1/sign/ com user_token (do usuário que assina) + signer_tokens (dos signatários no doc).
71
+ * https://docs.zapsign.com.br — operação específica do ZapSign (não faz parte de IProvedorAssinatura).
72
+ */
73
+ async assinarAutomaticamente(signerTokens, userToken) {
74
+ // Deriva do sufixo docs/ para preservar prefixos de path de baseUrl custom (proxy);
75
+ // fallback: path absoluto na origem (bases oficiais da ZapSign).
76
+ const url = /docs\/?$/.test(this.baseURL)
77
+ ? this.baseURL.replace(/docs\/?$/, 'sign/')
78
+ : new URL('/api/v1/sign/', this.baseURL).toString();
79
+ const { data } = await axios.post(url, { user_token: userToken, signer_tokens: signerTokens }, { headers: { Authorization: `Bearer ${this.apiToken}` } });
80
+ return data;
81
+ }
82
+ async cancelarDocumento(idDoc) {
83
+ await axios.delete(`${this.baseURL}${idDoc}`, {
84
+ headers: { Authorization: `Bearer ${this.apiToken}` },
85
+ });
86
+ }
87
+ normalizarWebhook(payload) {
88
+ // Payload real do webhook ZapSign é PLANO: { event_type, status, external_id, token, ... }.
89
+ const body = (payload ?? {});
90
+ const eventType = String(body.event_type ?? '');
91
+ const status = String(body.status ?? '');
92
+ let tipo;
93
+ if (eventType === 'doc_signed' && status === 'signed') {
94
+ tipo = 'documento_finalizado';
95
+ }
96
+ else if (eventType === 'doc_signed') {
97
+ tipo = 'signatario_assinou';
98
+ }
99
+ else if (eventType === 'doc_deleted') {
100
+ tipo = 'documento_cancelado';
101
+ }
102
+ else {
103
+ tipo = 'outro';
104
+ }
105
+ return {
106
+ tipo,
107
+ provedorDocId: String(body.token ?? ''),
108
+ idExterno: body.external_id ? String(body.external_id) : undefined,
109
+ signedFileUrl: body.signed_file ? String(body.signed_file) : undefined,
110
+ raw: payload,
111
+ };
112
+ }
113
+ }
114
+ //# sourceMappingURL=zapsign-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zapsign-client.js","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Modo de autenticação do signatário (API ZapSign: auth_mode). Autocomplete para os valores mais
3
+ * comuns, mas aceita outros que a API do ZapSign suporte (`& {}` evita rejeitar valores válidos
4
+ * não listados aqui — não temos o enum fechado autoritativo da API).
5
+ */
6
+ export type AuthMode = 'assinaturaTela' | 'tokenEmail' | 'tokenSms' | (string & {});
7
+ export interface ZapsignConfig {
8
+ apiToken: string;
9
+ sandbox?: boolean;
10
+ /** URL-base da API (ex.: vinda de env/proxy). Quando definida, vence o switch por sandbox. */
11
+ baseUrl?: string;
12
+ /** Pasta no ZapSign onde os documentos são criados (API: folder_path). Ex.: '/'. */
13
+ folderPath?: string;
14
+ /** Cor primária da marca no fluxo de assinatura (API: brand_primary_color). Ex.: '#000000'. */
15
+ brandPrimaryColor?: string;
16
+ /** Modo de autenticação do signatário (API: auth_mode). Ex.: 'assinaturaTela'. */
17
+ authMode?: AuthMode;
18
+ }
19
+ export interface ZapsignSignerResponse {
20
+ sign_url: string;
21
+ }
22
+ export interface ZapsignCreateResponse {
23
+ token: string;
24
+ signers: ZapsignSignerResponse[];
25
+ }
26
+ export interface ZapsignDetailResponse {
27
+ token: string;
28
+ status: string;
29
+ original_file: string;
30
+ signed_file: string;
31
+ external_id: string;
32
+ }
33
+ /** Resposta do POST /api/v1/sign/ (assinatura automática). Shape mínimo observado. */
34
+ export interface ZapsignSignResponse {
35
+ status?: string;
36
+ [k: string]: unknown;
37
+ }
38
+ //# sourceMappingURL=zapsign-client.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zapsign-client.types.d.ts","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB,gBAAgB,GAChB,YAAY,GACZ,UAAU,GACV,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,sFAAsF;AACtF,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=zapsign-client.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zapsign-client.types.js","sourceRoot":"","sources":["../../src/zapsign-client/zapsign-client.types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,51 @@
1
1
  {
2
2
  "name": "@devix-tecnologia/zapsign-client",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.4.4",
4
+ "description": "Cliente ZapSign implementando IProvedorAssinatura",
5
+ "license": "MIT",
6
+ "author": "Devix Tecnologia Ltda <contato@devix.co> (https://devix.co)",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ }
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
22
+ "publishConfig": {
23
+ "registry": "https://registry.npmjs.org/",
24
+ "@devix-tecnologia:registry": "https://registry.npmjs.org/",
25
+ "access": "public"
26
+ },
27
+ "dependencies": {
28
+ "@devix-tecnologia/assinatura-eletronica": "^0.5.1",
29
+ "axios": "^1.20.0"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^24.13.5",
33
+ "typescript": "^7.0.2",
34
+ "vitest": "^5.0.1"
35
+ },
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "git+https://github.com/devix-tecnologia/assinatura-eletronica.git",
39
+ "directory": "packages/zapsign-client"
40
+ },
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.build.json",
43
+ "clean": "rm -rf dist coverage tsconfig.tsbuildinfo",
44
+ "dev": "tsc -p tsconfig.build.json --watch",
45
+ "format": "biome check --write .",
46
+ "lint": "biome check . --error-on-warnings",
47
+ "test": "vitest --run",
48
+ "test:watch": "vitest --watch",
49
+ "typecheck": "tsc --noEmit"
50
+ }
6
51
  }