@vaultsandbox/client 0.5.0 → 0.6.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 +19 -7
- package/dist/client.d.ts +41 -12
- package/dist/client.js +89 -31
- package/dist/client.js.map +1 -1
- package/dist/crypto/constants.d.ts +52 -3
- package/dist/crypto/constants.js +56 -3
- package/dist/crypto/constants.js.map +1 -1
- package/dist/crypto/decrypt.d.ts +1 -0
- package/dist/crypto/decrypt.js +54 -3
- package/dist/crypto/decrypt.js.map +1 -1
- package/dist/crypto/keypair.d.ts +2 -7
- package/dist/crypto/keypair.js +9 -11
- package/dist/crypto/keypair.js.map +1 -1
- package/dist/crypto/signature.js +2 -2
- package/dist/crypto/signature.js.map +1 -1
- package/dist/crypto/utils.d.ts +1 -0
- package/dist/crypto/utils.js +7 -1
- package/dist/crypto/utils.js.map +1 -1
- package/dist/email.js +9 -9
- package/dist/email.js.map +1 -1
- package/dist/http/api-client.d.ts +2 -1
- package/dist/http/api-client.js +5 -3
- package/dist/http/api-client.js.map +1 -1
- package/dist/inbox.d.ts +9 -3
- package/dist/inbox.js +31 -7
- package/dist/inbox.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/strategies/polling-strategy.js +3 -3
- package/dist/strategies/polling-strategy.js.map +1 -1
- package/dist/strategies/sse-strategy.js +3 -9
- package/dist/strategies/sse-strategy.js.map +1 -1
- package/dist/types/index.d.ts +25 -24
- package/dist/types/index.js.map +1 -1
- package/dist/utils/email-utils.d.ts +1 -1
- package/dist/utils/email-utils.js +7 -8
- package/dist/utils/email-utils.js.map +1 -1
- package/package.json +4 -4
package/dist/types/index.d.ts
CHANGED
|
@@ -41,21 +41,22 @@ export interface CreateInboxOptions {
|
|
|
41
41
|
/**
|
|
42
42
|
* Exported inbox data structure for sharing or backup purposes.
|
|
43
43
|
* Contains all necessary information to import and access an inbox.
|
|
44
|
+
* See vaultsandbox-spec.md Section 9: Inbox Export Format
|
|
44
45
|
*/
|
|
45
46
|
export interface ExportedInboxData {
|
|
46
|
-
/**
|
|
47
|
+
/** Export format version. MUST be 1. */
|
|
48
|
+
version: number;
|
|
49
|
+
/** The email address for this inbox. MUST contain @. */
|
|
47
50
|
emailAddress: string;
|
|
48
|
-
/** ISO timestamp when the inbox expires */
|
|
51
|
+
/** ISO 8601 timestamp when the inbox expires */
|
|
49
52
|
expiresAt: string;
|
|
50
53
|
/** Unique hash identifier for the inbox */
|
|
51
54
|
inboxHash: string;
|
|
52
|
-
/** Server's public
|
|
55
|
+
/** Server's ML-DSA-65 public key (base64url encoded, 1952 bytes decoded) */
|
|
53
56
|
serverSigPk: string;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
secretKeyB64: string;
|
|
58
|
-
/** ISO timestamp when the inbox was exported */
|
|
57
|
+
/** ML-KEM-768 secret key (base64url encoded, 2400 bytes decoded) */
|
|
58
|
+
secretKey: string;
|
|
59
|
+
/** ISO 8601 timestamp when the export was created */
|
|
59
60
|
exportedAt: string;
|
|
60
61
|
}
|
|
61
62
|
/**
|
|
@@ -196,38 +197,36 @@ export interface RawEmailData {
|
|
|
196
197
|
* The result of an SPF (Sender Policy Framework) validation check.
|
|
197
198
|
*/
|
|
198
199
|
export interface SPFResult {
|
|
199
|
-
|
|
200
|
+
result: 'pass' | 'fail' | 'softfail' | 'neutral' | 'none' | 'temperror' | 'permerror';
|
|
200
201
|
domain?: string;
|
|
201
202
|
ip?: string;
|
|
202
|
-
|
|
203
|
+
details?: string;
|
|
203
204
|
}
|
|
204
205
|
/**
|
|
205
206
|
* The result of a DKIM (DomainKeys Identified Mail) validation check.
|
|
206
207
|
*/
|
|
207
208
|
export interface DKIMResult {
|
|
208
|
-
|
|
209
|
+
result: 'pass' | 'fail' | 'none';
|
|
209
210
|
domain?: string;
|
|
210
211
|
selector?: string;
|
|
211
|
-
|
|
212
|
+
signature?: string;
|
|
212
213
|
}
|
|
213
214
|
/**
|
|
214
215
|
* The result of a DMARC (Domain-based Message Authentication, Reporting, and Conformance) validation check.
|
|
215
216
|
*/
|
|
216
217
|
export interface DMARCResult {
|
|
217
|
-
|
|
218
|
+
result: 'pass' | 'fail' | 'none';
|
|
218
219
|
policy?: 'none' | 'quarantine' | 'reject';
|
|
219
220
|
aligned?: boolean;
|
|
220
221
|
domain?: string;
|
|
221
|
-
info?: string;
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
224
|
* The result of a reverse DNS validation check.
|
|
225
225
|
*/
|
|
226
226
|
export interface ReverseDNSResult {
|
|
227
|
-
|
|
227
|
+
verified: boolean;
|
|
228
228
|
ip?: string;
|
|
229
229
|
hostname?: string;
|
|
230
|
-
info?: string;
|
|
231
230
|
}
|
|
232
231
|
/**
|
|
233
232
|
* The raw data for email authentication results.
|
|
@@ -255,6 +254,16 @@ export interface AuthValidation {
|
|
|
255
254
|
/** An array of strings describing any failures. */
|
|
256
255
|
failures: string[];
|
|
257
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Interface for email metadata (without content).
|
|
259
|
+
*/
|
|
260
|
+
export interface IEmailMetadata {
|
|
261
|
+
id: string;
|
|
262
|
+
from: string;
|
|
263
|
+
subject: string;
|
|
264
|
+
receivedAt: Date;
|
|
265
|
+
isRead: boolean;
|
|
266
|
+
}
|
|
258
267
|
/**
|
|
259
268
|
* Interface for the Email class.
|
|
260
269
|
*/
|
|
@@ -327,14 +336,6 @@ export interface SSEConfig {
|
|
|
327
336
|
maxReconnectAttempts?: number;
|
|
328
337
|
backoffMultiplier?: number;
|
|
329
338
|
}
|
|
330
|
-
/**
|
|
331
|
-
* @internal
|
|
332
|
-
*/
|
|
333
|
-
export interface SSEEvent {
|
|
334
|
-
inboxHash: string;
|
|
335
|
-
emailId: string;
|
|
336
|
-
emailData: EmailData;
|
|
337
|
-
}
|
|
338
339
|
/**
|
|
339
340
|
* @internal
|
|
340
341
|
*/
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import type { Keypair, EmailData, IEmail, WaitOptions } from '../types/index.js'
|
|
|
5
5
|
import type { ApiClient } from '../http/api-client.js';
|
|
6
6
|
/**
|
|
7
7
|
* Decrypts an EmailData object into an Email instance.
|
|
8
|
-
*
|
|
8
|
+
* Expects full email data with encryptedParsed content.
|
|
9
9
|
* IMPORTANT: Signature verification happens BEFORE decryption for security
|
|
10
10
|
*/
|
|
11
11
|
export declare function decryptEmailData(emailData: EmailData, keypair: Keypair, emailAddress: string, apiClient: ApiClient): Promise<IEmail>;
|
|
@@ -7,21 +7,20 @@ import { verifySignature } from '../crypto/signature.js';
|
|
|
7
7
|
import { fromBase64 } from '../crypto/utils.js';
|
|
8
8
|
/**
|
|
9
9
|
* Decrypts an EmailData object into an Email instance.
|
|
10
|
-
*
|
|
10
|
+
* Expects full email data with encryptedParsed content.
|
|
11
11
|
* IMPORTANT: Signature verification happens BEFORE decryption for security
|
|
12
12
|
*/
|
|
13
13
|
export async function decryptEmailData(emailData, keypair, emailAddress, apiClient) {
|
|
14
|
-
const fullEmailData = emailData.encryptedParsed ? emailData : await apiClient.getEmail(emailAddress, emailData.id);
|
|
15
14
|
// Verify signature FIRST (before decryption) - signature includes server public key
|
|
16
|
-
verifySignature(
|
|
15
|
+
verifySignature(emailData.encryptedMetadata);
|
|
17
16
|
// Decrypt metadata
|
|
18
|
-
const metadata = await decryptMetadata(
|
|
17
|
+
const metadata = await decryptMetadata(emailData.encryptedMetadata, keypair);
|
|
19
18
|
// Decrypt parsed content if available
|
|
20
19
|
let parsed = null;
|
|
21
|
-
if (
|
|
20
|
+
if (emailData.encryptedParsed) {
|
|
22
21
|
// Verify signature for parsed content too
|
|
23
|
-
verifySignature(
|
|
24
|
-
parsed = await decryptParsed(
|
|
22
|
+
verifySignature(emailData.encryptedParsed);
|
|
23
|
+
parsed = await decryptParsed(emailData.encryptedParsed, keypair);
|
|
25
24
|
// Transform attachment content from base64 strings to Uint8Array
|
|
26
25
|
// The server returns attachment content as base64-encoded strings, but our type expects Uint8Array
|
|
27
26
|
if (parsed?.attachments) {
|
|
@@ -38,7 +37,7 @@ export async function decryptEmailData(emailData, keypair, emailAddress, apiClie
|
|
|
38
37
|
});
|
|
39
38
|
}
|
|
40
39
|
}
|
|
41
|
-
return new Email(
|
|
40
|
+
return new Email(emailData, metadata, parsed, emailAddress, apiClient, keypair);
|
|
42
41
|
}
|
|
43
42
|
/**
|
|
44
43
|
* Finds the first email matching the specified criteria
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-utils.js","sourceRoot":"","sources":["../../src/utils/email-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,OAAgB,EAChB,YAAoB,EACpB,SAAoB;IAEpB,
|
|
1
|
+
{"version":3,"file":"email-utils.js","sourceRoot":"","sources":["../../src/utils/email-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,OAAgB,EAChB,YAAoB,EACpB,SAAoB;IAEpB,oFAAoF;IACpF,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAE7C,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAoB,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IAEhG,sCAAsC;IACtC,IAAI,MAAM,GAA2B,IAAI,CAAC;IAC1C,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QAC9B,0CAA0C;QAC1C,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,GAAG,MAAM,aAAa,CAAkB,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAElF,iEAAiE;QACjE,mGAAmG;QACnG,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAClD,2DAA2D;gBAC3D,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACnD,OAAO;wBACL,GAAG,GAAG;wBACN,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;qBACjC,CAAC;gBACJ,CAAC;gBACD,6CAA6C;gBAC7C,OAAO,GAAG,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgB,EAAE,OAAoB;IACtE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,OAAoB;IAChE,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,YAAY,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,YAAY,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaultsandbox/client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Node.js SDK for VaultSandbox Gateway — quantum-safe email testing with zero crypto knowledge required. Create isolated inboxes, validate SPF/DKIM/DMARC, and test your full email stack in CI/CD pipelines.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/vaultsandbox/client-node",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@types/debug": "4.1.12",
|
|
71
71
|
"@types/jest": "30.0.0",
|
|
72
|
-
"@types/node": "24.10.
|
|
72
|
+
"@types/node": "24.10.2",
|
|
73
73
|
"@typescript-eslint/eslint-plugin": "8.47.0",
|
|
74
74
|
"@typescript-eslint/parser": "8.49.0",
|
|
75
75
|
"dotenv": "17.2.3",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"eslint-config-prettier": "10.1.8",
|
|
78
78
|
"eslint-plugin-prettier": "5.5.4",
|
|
79
79
|
"jest": "30.2.0",
|
|
80
|
-
"prettier": "3.
|
|
81
|
-
"ts-jest": "29.4.
|
|
80
|
+
"prettier": "3.7.4",
|
|
81
|
+
"ts-jest": "29.4.6",
|
|
82
82
|
"tsx": "4.21.0",
|
|
83
83
|
"typescript": "5.9.3"
|
|
84
84
|
}
|