@capsara/sdk 1.0.1
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 +74 -0
- package/README.md +230 -0
- package/dist/builder/capsa-builder.d.ts +167 -0
- package/dist/builder/capsa-builder.d.ts.map +1 -0
- package/dist/builder/capsa-builder.js +489 -0
- package/dist/builder/capsa-builder.js.map +1 -0
- package/dist/client/capsara-client.d.ts +96 -0
- package/dist/client/capsara-client.d.ts.map +1 -0
- package/dist/client/capsara-client.js +266 -0
- package/dist/client/capsara-client.js.map +1 -0
- package/dist/errors/account-error.d.ts +73 -0
- package/dist/errors/account-error.d.ts.map +1 -0
- package/dist/errors/account-error.js +155 -0
- package/dist/errors/account-error.js.map +1 -0
- package/dist/errors/audit-error.d.ts +34 -0
- package/dist/errors/audit-error.d.ts.map +1 -0
- package/dist/errors/audit-error.js +93 -0
- package/dist/errors/audit-error.js.map +1 -0
- package/dist/errors/auth-error.d.ts +38 -0
- package/dist/errors/auth-error.d.ts.map +1 -0
- package/dist/errors/auth-error.js +87 -0
- package/dist/errors/auth-error.js.map +1 -0
- package/dist/errors/capsa-error.d.ts +64 -0
- package/dist/errors/capsa-error.d.ts.map +1 -0
- package/dist/errors/capsa-error.js +172 -0
- package/dist/errors/capsa-error.js.map +1 -0
- package/dist/errors/capsara-error.d.ts +52 -0
- package/dist/errors/capsara-error.d.ts.map +1 -0
- package/dist/errors/capsara-error.js +83 -0
- package/dist/errors/capsara-error.js.map +1 -0
- package/dist/errors/index.d.ts +8 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +7 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/capsa-cache.d.ts +49 -0
- package/dist/internal/capsa-cache.d.ts.map +1 -0
- package/dist/internal/capsa-cache.js +118 -0
- package/dist/internal/capsa-cache.js.map +1 -0
- package/dist/internal/config/http-client.d.ts +37 -0
- package/dist/internal/config/http-client.d.ts.map +1 -0
- package/dist/internal/config/http-client.js +63 -0
- package/dist/internal/config/http-client.js.map +1 -0
- package/dist/internal/config/retry-interceptor.d.ts +18 -0
- package/dist/internal/config/retry-interceptor.d.ts.map +1 -0
- package/dist/internal/config/retry-interceptor.js +103 -0
- package/dist/internal/config/retry-interceptor.js.map +1 -0
- package/dist/internal/crypto/compression.d.ts +15 -0
- package/dist/internal/crypto/compression.d.ts.map +1 -0
- package/dist/internal/crypto/compression.js +34 -0
- package/dist/internal/crypto/compression.js.map +1 -0
- package/dist/internal/crypto/key-generator.d.ts +23 -0
- package/dist/internal/crypto/key-generator.d.ts.map +1 -0
- package/dist/internal/crypto/key-generator.js +65 -0
- package/dist/internal/crypto/key-generator.js.map +1 -0
- package/dist/internal/crypto/primitives.d.ts +67 -0
- package/dist/internal/crypto/primitives.d.ts.map +1 -0
- package/dist/internal/crypto/primitives.js +230 -0
- package/dist/internal/crypto/primitives.js.map +1 -0
- package/dist/internal/crypto/signatures.d.ts +30 -0
- package/dist/internal/crypto/signatures.d.ts.map +1 -0
- package/dist/internal/crypto/signatures.js +153 -0
- package/dist/internal/crypto/signatures.js.map +1 -0
- package/dist/internal/decryptor/capsa-decryptor.d.ts +89 -0
- package/dist/internal/decryptor/capsa-decryptor.d.ts.map +1 -0
- package/dist/internal/decryptor/capsa-decryptor.js +263 -0
- package/dist/internal/decryptor/capsa-decryptor.js.map +1 -0
- package/dist/internal/http-factory.d.ts +78 -0
- package/dist/internal/http-factory.d.ts.map +1 -0
- package/dist/internal/http-factory.js +201 -0
- package/dist/internal/http-factory.js.map +1 -0
- package/dist/internal/index.d.ts +5 -0
- package/dist/internal/index.d.ts.map +1 -0
- package/dist/internal/index.js +5 -0
- package/dist/internal/index.js.map +1 -0
- package/dist/internal/retry-executor.d.ts +74 -0
- package/dist/internal/retry-executor.d.ts.map +1 -0
- package/dist/internal/retry-executor.js +204 -0
- package/dist/internal/retry-executor.js.map +1 -0
- package/dist/internal/services/account-service.d.ts +56 -0
- package/dist/internal/services/account-service.d.ts.map +1 -0
- package/dist/internal/services/account-service.js +114 -0
- package/dist/internal/services/account-service.js.map +1 -0
- package/dist/internal/services/audit-service.d.ts +25 -0
- package/dist/internal/services/audit-service.d.ts.map +1 -0
- package/dist/internal/services/audit-service.js +43 -0
- package/dist/internal/services/audit-service.js.map +1 -0
- package/dist/internal/services/auth-service.d.ts +44 -0
- package/dist/internal/services/auth-service.d.ts.map +1 -0
- package/dist/internal/services/auth-service.js +170 -0
- package/dist/internal/services/auth-service.js.map +1 -0
- package/dist/internal/services/capsa-service.d.ts +40 -0
- package/dist/internal/services/capsa-service.d.ts.map +1 -0
- package/dist/internal/services/capsa-service.js +82 -0
- package/dist/internal/services/capsa-service.js.map +1 -0
- package/dist/internal/services/download-service.d.ts +62 -0
- package/dist/internal/services/download-service.d.ts.map +1 -0
- package/dist/internal/services/download-service.js +114 -0
- package/dist/internal/services/download-service.js.map +1 -0
- package/dist/internal/services/key-service.d.ts +28 -0
- package/dist/internal/services/key-service.d.ts.map +1 -0
- package/dist/internal/services/key-service.js +45 -0
- package/dist/internal/services/key-service.js.map +1 -0
- package/dist/internal/services/limits-service.d.ts +30 -0
- package/dist/internal/services/limits-service.d.ts.map +1 -0
- package/dist/internal/services/limits-service.js +73 -0
- package/dist/internal/services/limits-service.js.map +1 -0
- package/dist/internal/services/upload-service.d.ts +61 -0
- package/dist/internal/services/upload-service.d.ts.map +1 -0
- package/dist/internal/services/upload-service.js +258 -0
- package/dist/internal/services/upload-service.js.map +1 -0
- package/dist/internal/types.d.ts +74 -0
- package/dist/internal/types.d.ts.map +1 -0
- package/dist/internal/types.js +3 -0
- package/dist/internal/types.js.map +1 -0
- package/dist/internal/upload/multipart-builder.d.ts +57 -0
- package/dist/internal/upload/multipart-builder.d.ts.map +1 -0
- package/dist/internal/upload/multipart-builder.js +139 -0
- package/dist/internal/upload/multipart-builder.js.map +1 -0
- package/dist/internal/utils/id-generator.d.ts +8 -0
- package/dist/internal/utils/id-generator.d.ts.map +1 -0
- package/dist/internal/utils/id-generator.js +20 -0
- package/dist/internal/utils/id-generator.js.map +1 -0
- package/dist/internal/utils/mimetype-lookup.d.ts +8 -0
- package/dist/internal/utils/mimetype-lookup.d.ts.map +1 -0
- package/dist/internal/utils/mimetype-lookup.js +118 -0
- package/dist/internal/utils/mimetype-lookup.js.map +1 -0
- package/dist/internal/version.d.ts +20 -0
- package/dist/internal/version.d.ts.map +1 -0
- package/dist/internal/version.js +25 -0
- package/dist/internal/version.js.map +1 -0
- package/dist/types/index.d.ts +143 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +20 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multipart form-data builder for capsa upload
|
|
3
|
+
* @file capsara.sdk/typescript/src/internal/upload/multipart-builder.ts
|
|
4
|
+
*/
|
|
5
|
+
import * as crypto from 'crypto';
|
|
6
|
+
/**
|
|
7
|
+
* Multipart form-data builder for capsa uploads (supports 1-500 capsas)
|
|
8
|
+
*/
|
|
9
|
+
export class CapsasMultipartBuilder {
|
|
10
|
+
boundary;
|
|
11
|
+
parts = [];
|
|
12
|
+
metadataSet = false;
|
|
13
|
+
constructor() {
|
|
14
|
+
// Generate unique boundary
|
|
15
|
+
this.boundary = `----CapsaBoundary${crypto.randomBytes(16).toString("hex")}`;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Add capsa metadata (must be first)
|
|
19
|
+
* @param capsaCount - Number of capsas in request
|
|
20
|
+
* @param creator - Creator party ID
|
|
21
|
+
*/
|
|
22
|
+
addMetadata(capsaCount, creator) {
|
|
23
|
+
if (this.metadataSet) {
|
|
24
|
+
throw new Error('Metadata already set');
|
|
25
|
+
}
|
|
26
|
+
this.parts.push({
|
|
27
|
+
name: 'metadata',
|
|
28
|
+
content: JSON.stringify({ capsaCount, creator }),
|
|
29
|
+
contentType: 'application/json',
|
|
30
|
+
});
|
|
31
|
+
this.metadataSet = true;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Add capsa metadata part with index
|
|
36
|
+
* @param capsa - Capsa object
|
|
37
|
+
* @param capsaIndex - Capsa index in request
|
|
38
|
+
*/
|
|
39
|
+
addCapsaMetadata(capsa, capsaIndex) {
|
|
40
|
+
if (!this.metadataSet) {
|
|
41
|
+
throw new Error('Must call addMetadata() first');
|
|
42
|
+
}
|
|
43
|
+
this.parts.push({
|
|
44
|
+
name: `capsa_${capsaIndex}`,
|
|
45
|
+
content: JSON.stringify(capsa),
|
|
46
|
+
contentType: 'application/json',
|
|
47
|
+
});
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Add file metadata part with capsa and file indexes
|
|
52
|
+
* @param fileMetadata - File metadata object with fileId
|
|
53
|
+
* @param capsaIndex - Capsa index
|
|
54
|
+
* @param fileIndex - File index within capsa
|
|
55
|
+
*/
|
|
56
|
+
addFileMetadata(fileMetadata, capsaIndex, fileIndex) {
|
|
57
|
+
if (!this.metadataSet) {
|
|
58
|
+
throw new Error('Must call addMetadata() first');
|
|
59
|
+
}
|
|
60
|
+
const fileId = fileMetadata.fileId || `file_${capsaIndex}_${fileIndex}`;
|
|
61
|
+
this.parts.push({
|
|
62
|
+
name: 'file',
|
|
63
|
+
content: JSON.stringify(fileMetadata),
|
|
64
|
+
contentType: 'application/json',
|
|
65
|
+
filename: `${fileId}.json`,
|
|
66
|
+
});
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Add file binary part with file ID
|
|
71
|
+
* @param fileData - File data buffer
|
|
72
|
+
* @param fileId - File ID from metadata (should include .enc extension)
|
|
73
|
+
*/
|
|
74
|
+
addFileBinary(fileData, fileId) {
|
|
75
|
+
if (!this.metadataSet) {
|
|
76
|
+
throw new Error('Must call addMetadata() first');
|
|
77
|
+
}
|
|
78
|
+
this.parts.push({
|
|
79
|
+
name: 'file',
|
|
80
|
+
content: fileData,
|
|
81
|
+
contentType: 'application/octet-stream',
|
|
82
|
+
filename: fileId, // Use fileId directly (already includes .enc)
|
|
83
|
+
});
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Build the complete multipart body
|
|
88
|
+
* @returns Multipart body as Buffer
|
|
89
|
+
*/
|
|
90
|
+
build() {
|
|
91
|
+
if (!this.metadataSet) {
|
|
92
|
+
throw new Error('Must call addMetadata() first');
|
|
93
|
+
}
|
|
94
|
+
const chunks = [];
|
|
95
|
+
for (const part of this.parts) {
|
|
96
|
+
// Add boundary
|
|
97
|
+
chunks.push(Buffer.from(`--${this.boundary}\r\n`, 'utf-8'));
|
|
98
|
+
// Add Content-Disposition header
|
|
99
|
+
let disposition = `Content-Disposition: form-data; name="${part.name}"`;
|
|
100
|
+
if (part.filename) {
|
|
101
|
+
disposition += `; filename="${part.filename}"`;
|
|
102
|
+
}
|
|
103
|
+
chunks.push(Buffer.from(disposition + '\r\n', 'utf-8'));
|
|
104
|
+
// Add Content-Type header
|
|
105
|
+
if (part.contentType) {
|
|
106
|
+
chunks.push(Buffer.from(`Content-Type: ${part.contentType}\r\n`, 'utf-8'));
|
|
107
|
+
}
|
|
108
|
+
// Add blank line
|
|
109
|
+
chunks.push(Buffer.from('\r\n', 'utf-8'));
|
|
110
|
+
// Add content
|
|
111
|
+
if (typeof part.content === 'string') {
|
|
112
|
+
chunks.push(Buffer.from(part.content, 'utf-8'));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
chunks.push(part.content);
|
|
116
|
+
}
|
|
117
|
+
// Add trailing line break
|
|
118
|
+
chunks.push(Buffer.from('\r\n', 'utf-8'));
|
|
119
|
+
}
|
|
120
|
+
// Add final boundary
|
|
121
|
+
chunks.push(Buffer.from(`--${this.boundary}--\r\n`, 'utf-8'));
|
|
122
|
+
return Buffer.concat(chunks);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the Content-Type header value
|
|
126
|
+
* @returns Content-Type with boundary
|
|
127
|
+
*/
|
|
128
|
+
getContentType() {
|
|
129
|
+
return `multipart/form-data; boundary=${this.boundary}`;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get the boundary string
|
|
133
|
+
* @returns Boundary string
|
|
134
|
+
*/
|
|
135
|
+
getBoundary() {
|
|
136
|
+
return this.boundary;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=multipart-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart-builder.js","sourceRoot":"","sources":["../../../src/internal/upload/multipart-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param size - Length of the ID (default 21, ~126 bits of entropy)
|
|
3
|
+
* @returns URL-safe random ID string
|
|
4
|
+
*/
|
|
5
|
+
export declare function nanoid(size?: number): string;
|
|
6
|
+
/** @deprecated Use nanoid() instead */
|
|
7
|
+
export declare const generateId: typeof nanoid;
|
|
8
|
+
//# sourceMappingURL=id-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/id-generator.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,SAAK,GAAG,MAAM,CAWxC;AAED,uCAAuC;AACvC,eAAO,MAAM,UAAU,eAAS,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Cryptographically secure, unbiased ID generator using a 64-char URL-safe alphabet.
|
|
2
|
+
import { randomBytes } from 'node:crypto';
|
|
3
|
+
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
|
|
4
|
+
/**
|
|
5
|
+
* @param size - Length of the ID (default 21, ~126 bits of entropy)
|
|
6
|
+
* @returns URL-safe random ID string
|
|
7
|
+
*/
|
|
8
|
+
export function nanoid(size = 21) {
|
|
9
|
+
const bytes = randomBytes(size);
|
|
10
|
+
let id = '';
|
|
11
|
+
for (let i = 0; i < size; i++) {
|
|
12
|
+
// Bitmask with 0x3F (63) gives uniform distribution for 64-char alphabet
|
|
13
|
+
// Each of 256 byte values maps to exactly 4 alphabet characters (256/64 = 4)
|
|
14
|
+
id += ALPHABET[bytes[i] & 0x3f];
|
|
15
|
+
}
|
|
16
|
+
return id;
|
|
17
|
+
}
|
|
18
|
+
/** @deprecated Use nanoid() instead */
|
|
19
|
+
export const generateId = nanoid;
|
|
20
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../../src/internal/utils/id-generator.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,QAAQ,GAAG,kEAAkE,CAAC;AAEpF;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,IAAI,GAAG,EAAE;IAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,EAAE,CAAC;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,yEAAyE;QACzE,6EAA6E;QAC7E,EAAE,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Look up MIME type by file path or extension.
|
|
3
|
+
*
|
|
4
|
+
* @param path - File path or extension (e.g., 'file.pdf', '.pdf', or 'pdf')
|
|
5
|
+
* @returns MIME type string, or false if not found/invalid input
|
|
6
|
+
*/
|
|
7
|
+
export declare function lookupMimeType(path: unknown): string | false;
|
|
8
|
+
//# sourceMappingURL=mimetype-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mimetype-lookup.d.ts","sourceRoot":"","sources":["../../../src/internal/utils/mimetype-lookup.ts"],"names":[],"mappings":"AA2GA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAqB5D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// MIME type lookup by file extension.
|
|
2
|
+
import { extname } from 'path';
|
|
3
|
+
const MIME_MAP = {
|
|
4
|
+
// Documents - PDF
|
|
5
|
+
'.pdf': 'application/pdf',
|
|
6
|
+
// Documents - Microsoft Office
|
|
7
|
+
'.doc': 'application/msword',
|
|
8
|
+
'.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
9
|
+
'.xls': 'application/vnd.ms-excel',
|
|
10
|
+
'.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
11
|
+
'.ppt': 'application/vnd.ms-powerpoint',
|
|
12
|
+
'.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
13
|
+
// Documents - OpenDocument
|
|
14
|
+
'.odt': 'application/vnd.oasis.opendocument.text',
|
|
15
|
+
'.ods': 'application/vnd.oasis.opendocument.spreadsheet',
|
|
16
|
+
'.odp': 'application/vnd.oasis.opendocument.presentation',
|
|
17
|
+
// Images
|
|
18
|
+
'.jpg': 'image/jpeg',
|
|
19
|
+
'.jpeg': 'image/jpeg',
|
|
20
|
+
'.png': 'image/png',
|
|
21
|
+
'.gif': 'image/gif',
|
|
22
|
+
'.bmp': 'image/bmp',
|
|
23
|
+
'.tif': 'image/tiff',
|
|
24
|
+
'.tiff': 'image/tiff',
|
|
25
|
+
'.webp': 'image/webp',
|
|
26
|
+
'.svg': 'image/svg+xml',
|
|
27
|
+
'.heic': 'image/heic', // iPhone photos
|
|
28
|
+
'.heif': 'image/heif', // High Efficiency Image Format
|
|
29
|
+
// Audio (claims: recorded statements, voicemails, call recordings)
|
|
30
|
+
'.mp3': 'audio/mpeg',
|
|
31
|
+
'.wav': 'audio/wav',
|
|
32
|
+
'.m4a': 'audio/mp4', // iPhone voice memos
|
|
33
|
+
'.aac': 'audio/aac',
|
|
34
|
+
'.ogg': 'audio/ogg',
|
|
35
|
+
'.wma': 'audio/x-ms-wma',
|
|
36
|
+
'.flac': 'audio/flac',
|
|
37
|
+
// Video (claims: dashcam, bodycam, surveillance, damage documentation)
|
|
38
|
+
'.mp4': 'video/mp4',
|
|
39
|
+
'.mov': 'video/quicktime', // iPhone videos
|
|
40
|
+
'.avi': 'video/x-msvideo',
|
|
41
|
+
'.wmv': 'video/x-ms-wmv',
|
|
42
|
+
'.mkv': 'video/x-matroska',
|
|
43
|
+
'.webm': 'video/webm',
|
|
44
|
+
'.m4v': 'video/x-m4v',
|
|
45
|
+
'.3gp': 'video/3gpp', // Older phone videos
|
|
46
|
+
'.ts': 'video/mp2t', // MPEG transport stream (dashcam)
|
|
47
|
+
// Text/Data
|
|
48
|
+
'.txt': 'text/plain',
|
|
49
|
+
'.csv': 'text/csv',
|
|
50
|
+
'.json': 'application/json',
|
|
51
|
+
'.xml': 'application/xml',
|
|
52
|
+
'.html': 'text/html',
|
|
53
|
+
'.htm': 'text/html',
|
|
54
|
+
'.rtf': 'application/rtf',
|
|
55
|
+
// Archives
|
|
56
|
+
'.zip': 'application/zip',
|
|
57
|
+
'.gz': 'application/gzip',
|
|
58
|
+
'.gzip': 'application/gzip',
|
|
59
|
+
'.tar': 'application/x-tar',
|
|
60
|
+
'.7z': 'application/x-7z-compressed',
|
|
61
|
+
'.rar': 'application/vnd.rar',
|
|
62
|
+
// Email
|
|
63
|
+
'.eml': 'message/rfc822',
|
|
64
|
+
'.msg': 'application/vnd.ms-outlook',
|
|
65
|
+
// Insurance Industry Formats
|
|
66
|
+
'.al3': 'application/x-al3', // ACORD AL3 (Agency/Company interface)
|
|
67
|
+
'.tt2': 'application/x-turbotag', // TurboTag indexing files
|
|
68
|
+
'.acord': 'application/xml', // ACORD XML forms
|
|
69
|
+
'.idx': 'application/x-index', // Index files (common in document management)
|
|
70
|
+
// EDI/Financial Formats
|
|
71
|
+
'.edi': 'application/EDI-X12', // EDI X12 transactions
|
|
72
|
+
'.x12': 'application/EDI-X12', // EDI X12 alternate extension
|
|
73
|
+
'.837': 'application/EDI-X12', // Healthcare claims
|
|
74
|
+
'.835': 'application/EDI-X12', // Healthcare remittance
|
|
75
|
+
'.834': 'application/EDI-X12', // Benefit enrollment
|
|
76
|
+
'.270': 'application/EDI-X12', // Eligibility inquiry
|
|
77
|
+
'.271': 'application/EDI-X12', // Eligibility response
|
|
78
|
+
'.820': 'application/EDI-X12', // Payment order/remittance
|
|
79
|
+
'.850': 'application/EDI-X12', // Purchase order
|
|
80
|
+
'.856': 'application/EDI-X12', // Ship notice/manifest
|
|
81
|
+
'.810': 'application/EDI-X12', // Invoice
|
|
82
|
+
// Financial Data Formats
|
|
83
|
+
'.ofx': 'application/x-ofx', // Open Financial Exchange
|
|
84
|
+
'.qfx': 'application/x-qfx', // Quicken Financial Exchange
|
|
85
|
+
'.qbo': 'application/x-qbo', // QuickBooks Online
|
|
86
|
+
'.qif': 'application/x-qif', // Quicken Interchange Format
|
|
87
|
+
'.iif': 'text/plain', // Intuit Interchange Format
|
|
88
|
+
// Database/Reporting
|
|
89
|
+
'.mdb': 'application/x-msaccess', // Access database
|
|
90
|
+
'.accdb': 'application/x-msaccess', // Access 2007+ database
|
|
91
|
+
'.dbf': 'application/x-dbf', // dBASE database files
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Look up MIME type by file path or extension.
|
|
95
|
+
*
|
|
96
|
+
* @param path - File path or extension (e.g., 'file.pdf', '.pdf', or 'pdf')
|
|
97
|
+
* @returns MIME type string, or false if not found/invalid input
|
|
98
|
+
*/
|
|
99
|
+
export function lookupMimeType(path) {
|
|
100
|
+
if (typeof path !== 'string' || path === '') {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
let ext = extname(path).toLowerCase();
|
|
104
|
+
// Bare extension without leading dot (e.g., 'html' or 'pdf')
|
|
105
|
+
if (ext === '' && !path.includes('/') && !path.includes('\\')) {
|
|
106
|
+
if (!path.includes('.')) {
|
|
107
|
+
ext = '.' + path.toLowerCase();
|
|
108
|
+
}
|
|
109
|
+
else if (path.endsWith('.')) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (ext === '') {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return MIME_MAP[ext] ?? false;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=mimetype-lookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mimetype-lookup.js","sourceRoot":"","sources":["../../../src/internal/utils/mimetype-lookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK version information
|
|
3
|
+
* @file capsara.sdk/typescript/src/internal/version.ts
|
|
4
|
+
*
|
|
5
|
+
* Note: This version should be updated when package.json version changes.
|
|
6
|
+
* Consider using a build step to sync these values automatically.
|
|
7
|
+
*/
|
|
8
|
+
/** SDK version - must match package.json */
|
|
9
|
+
export declare const SDK_VERSION = "1.0.0";
|
|
10
|
+
/** SDK name for User-Agent header */
|
|
11
|
+
export declare const SDK_NAME = "Capsara-SDK-typescript";
|
|
12
|
+
/** Default User-Agent string */
|
|
13
|
+
export declare const DEFAULT_USER_AGENT: string;
|
|
14
|
+
/**
|
|
15
|
+
* Build User-Agent string with optional custom suffix
|
|
16
|
+
* @param customAgent - Optional custom agent string to append
|
|
17
|
+
* @returns Complete User-Agent string
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildUserAgent(customAgent?: string): string;
|
|
20
|
+
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/internal/version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4CAA4C;AAC5C,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,qCAAqC;AACrC,eAAO,MAAM,QAAQ,2BAA2B,CAAC;AAEjD,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,QAA4D,CAAC;AAE5F;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAK3D"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK version information
|
|
3
|
+
* @file capsara.sdk/typescript/src/internal/version.ts
|
|
4
|
+
*
|
|
5
|
+
* Note: This version should be updated when package.json version changes.
|
|
6
|
+
* Consider using a build step to sync these values automatically.
|
|
7
|
+
*/
|
|
8
|
+
/** SDK version - must match package.json */
|
|
9
|
+
export const SDK_VERSION = '1.0.0';
|
|
10
|
+
/** SDK name for User-Agent header */
|
|
11
|
+
export const SDK_NAME = 'Capsara-SDK-typescript';
|
|
12
|
+
/** Default User-Agent string */
|
|
13
|
+
export const DEFAULT_USER_AGENT = `${SDK_NAME}/${SDK_VERSION} (Node.js ${process.version})`;
|
|
14
|
+
/**
|
|
15
|
+
* Build User-Agent string with optional custom suffix
|
|
16
|
+
* @param customAgent - Optional custom agent string to append
|
|
17
|
+
* @returns Complete User-Agent string
|
|
18
|
+
*/
|
|
19
|
+
export function buildUserAgent(customAgent) {
|
|
20
|
+
if (customAgent) {
|
|
21
|
+
return `${DEFAULT_USER_AGENT} ${customAgent}`;
|
|
22
|
+
}
|
|
23
|
+
return DEFAULT_USER_AGENT;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/internal/version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,qCAAqC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,wBAAwB,CAAC;AAEjD,gCAAgC;AAChC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,QAAQ,IAAI,WAAW,aAAa,OAAO,CAAC,OAAO,GAAG,CAAC;AAE5F;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,WAAoB;IACjD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,GAAG,kBAAkB,IAAI,WAAW,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
export type { KeychainEntry, EncryptedFile, CapsaSignature, CapsaMetadata, } from '../internal/types.js';
|
|
2
|
+
export interface PartyKey {
|
|
3
|
+
id: string;
|
|
4
|
+
email: string;
|
|
5
|
+
publicKey: string;
|
|
6
|
+
fingerprint: string;
|
|
7
|
+
isDelegate?: boolean | string[];
|
|
8
|
+
}
|
|
9
|
+
export interface Capsa {
|
|
10
|
+
id: string;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
updatedAt: string;
|
|
13
|
+
status: 'active' | 'soft_deleted' | 'expired';
|
|
14
|
+
creator: string;
|
|
15
|
+
signature: {
|
|
16
|
+
algorithm: string;
|
|
17
|
+
protected: string;
|
|
18
|
+
payload: string;
|
|
19
|
+
signature: string;
|
|
20
|
+
};
|
|
21
|
+
keychain: {
|
|
22
|
+
algorithm: string;
|
|
23
|
+
keys: import('../internal/types.js').KeychainEntry[];
|
|
24
|
+
};
|
|
25
|
+
files: import('../internal/types.js').EncryptedFile[];
|
|
26
|
+
encryptedStructured?: string;
|
|
27
|
+
structuredIV?: string;
|
|
28
|
+
structuredAuthTag?: string;
|
|
29
|
+
encryptedSubject?: string;
|
|
30
|
+
subjectIV?: string;
|
|
31
|
+
subjectAuthTag?: string;
|
|
32
|
+
encryptedBody?: string;
|
|
33
|
+
bodyIV?: string;
|
|
34
|
+
bodyAuthTag?: string;
|
|
35
|
+
accessControl: {
|
|
36
|
+
expiresAt?: string;
|
|
37
|
+
};
|
|
38
|
+
metadata?: import('../internal/types.js').CapsaMetadata;
|
|
39
|
+
totalSize: number;
|
|
40
|
+
}
|
|
41
|
+
export interface FileInput {
|
|
42
|
+
path?: string;
|
|
43
|
+
buffer?: Buffer;
|
|
44
|
+
filename: string;
|
|
45
|
+
mimetype?: string;
|
|
46
|
+
compress?: boolean;
|
|
47
|
+
expiresAt?: string | Date;
|
|
48
|
+
/** One-way transform reference (URL or @partyId/id) */
|
|
49
|
+
transform?: string;
|
|
50
|
+
}
|
|
51
|
+
export declare const FileInput: {
|
|
52
|
+
fromPath(filePath: string, filename?: string, mimetype?: string): FileInput;
|
|
53
|
+
fromBuffer(buffer: Buffer, filename: string, mimetype?: string): FileInput;
|
|
54
|
+
withoutCompression(input: FileInput): FileInput;
|
|
55
|
+
withExpiration(input: FileInput, expiresAt: Date | string): FileInput;
|
|
56
|
+
withMimetype(input: FileInput, mimetype: string): FileInput;
|
|
57
|
+
};
|
|
58
|
+
export interface RecipientConfig {
|
|
59
|
+
partyId: string;
|
|
60
|
+
permissions: string[];
|
|
61
|
+
actingFor?: string[];
|
|
62
|
+
}
|
|
63
|
+
export interface AuthCredentials {
|
|
64
|
+
email: string;
|
|
65
|
+
password: string;
|
|
66
|
+
}
|
|
67
|
+
export interface AuthResponse {
|
|
68
|
+
party: {
|
|
69
|
+
id: string;
|
|
70
|
+
email: string;
|
|
71
|
+
name: string;
|
|
72
|
+
kind: string;
|
|
73
|
+
publicKey?: string;
|
|
74
|
+
publicKeyFingerprint?: string;
|
|
75
|
+
};
|
|
76
|
+
accessToken: string;
|
|
77
|
+
refreshToken: string;
|
|
78
|
+
expiresIn: number;
|
|
79
|
+
}
|
|
80
|
+
export interface SystemLimits {
|
|
81
|
+
maxFileSize: number;
|
|
82
|
+
maxFilesPerCapsa: number;
|
|
83
|
+
maxTotalSize: number;
|
|
84
|
+
}
|
|
85
|
+
export type { GeneratedKeyPair } from '../internal/crypto/key-generator.js';
|
|
86
|
+
export type { PublicKeyInfo, KeyHistoryEntry } from '../internal/services/account-service.js';
|
|
87
|
+
export type { BuiltCapsa, CapsaUploadData } from '../builder/capsa-builder.js';
|
|
88
|
+
export interface CapsaListFilters {
|
|
89
|
+
status?: 'active' | 'expired';
|
|
90
|
+
createdBy?: string;
|
|
91
|
+
startDate?: string;
|
|
92
|
+
endDate?: string;
|
|
93
|
+
expiringBefore?: string;
|
|
94
|
+
hasLegalHold?: boolean;
|
|
95
|
+
limit?: number;
|
|
96
|
+
after?: string;
|
|
97
|
+
before?: string;
|
|
98
|
+
}
|
|
99
|
+
export interface CapsaListResponse {
|
|
100
|
+
capsas: CapsaSummary[];
|
|
101
|
+
pagination: CursorPagination;
|
|
102
|
+
}
|
|
103
|
+
/** Lightweight capsa summary for list responses */
|
|
104
|
+
export interface CapsaSummary {
|
|
105
|
+
id: string;
|
|
106
|
+
createdAt: string;
|
|
107
|
+
creator: string;
|
|
108
|
+
status: 'active' | 'soft_deleted' | 'expired';
|
|
109
|
+
expiresAt?: string;
|
|
110
|
+
}
|
|
111
|
+
export interface CursorPagination {
|
|
112
|
+
limit: number;
|
|
113
|
+
hasMore: boolean;
|
|
114
|
+
nextCursor?: string;
|
|
115
|
+
prevCursor?: string;
|
|
116
|
+
}
|
|
117
|
+
export interface AuditEntry {
|
|
118
|
+
timestamp: string;
|
|
119
|
+
party: string;
|
|
120
|
+
action: AuditAction;
|
|
121
|
+
ipAddress?: string;
|
|
122
|
+
deviceFingerprint?: string;
|
|
123
|
+
details?: Record<string, unknown>;
|
|
124
|
+
}
|
|
125
|
+
export type AuditAction = 'created' | 'accessed' | 'file_downloaded' | 'processed' | 'expired' | 'deleted' | 'log';
|
|
126
|
+
export interface GetAuditEntriesFilters {
|
|
127
|
+
action?: string;
|
|
128
|
+
party?: string;
|
|
129
|
+
page?: number;
|
|
130
|
+
limit?: number;
|
|
131
|
+
}
|
|
132
|
+
export interface GetAuditEntriesResponse {
|
|
133
|
+
auditEntries: AuditEntry[];
|
|
134
|
+
pagination: CursorPagination;
|
|
135
|
+
}
|
|
136
|
+
export interface CreateAuditEntryRequest {
|
|
137
|
+
action: 'log' | 'processed';
|
|
138
|
+
details?: Record<string, unknown>;
|
|
139
|
+
}
|
|
140
|
+
export interface CreateAuditEntryResponse {
|
|
141
|
+
success: boolean;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { basename } from 'path';
|
|
2
|
+
export const FileInput = {
|
|
3
|
+
fromPath(filePath, filename, mimetype) {
|
|
4
|
+
const resolvedFilename = filename ?? basename(filePath);
|
|
5
|
+
return { path: filePath, filename: resolvedFilename, mimetype };
|
|
6
|
+
},
|
|
7
|
+
fromBuffer(buffer, filename, mimetype) {
|
|
8
|
+
return { buffer, filename, mimetype };
|
|
9
|
+
},
|
|
10
|
+
withoutCompression(input) {
|
|
11
|
+
return { ...input, compress: false };
|
|
12
|
+
},
|
|
13
|
+
withExpiration(input, expiresAt) {
|
|
14
|
+
return { ...input, expiresAt };
|
|
15
|
+
},
|
|
16
|
+
withMimetype(input, mimetype) {
|
|
17
|
+
return { ...input, mimetype };
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AA6DhC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,QAAQ,CAAC,QAAgB,EAAE,QAAiB,EAAE,QAAiB;QAC7D,MAAM,gBAAgB,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAiB;QAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACxC,CAAC;IAED,kBAAkB,CAAC,KAAgB;QACjC,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,KAAgB,EAAE,SAAwB;QACvD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,KAAgB,EAAE,QAAgB;QAC7C,OAAO,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,CAAC;IAChC,CAAC;CACF,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@capsara/sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Capsara SDK for TypeScript",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"clean": "rm -rf dist",
|
|
10
|
+
"build": "npm run clean && tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"test": "vitest",
|
|
13
|
+
"test:coverage": "vitest --coverage",
|
|
14
|
+
"lint": "eslint src/**/*.ts",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"encryption",
|
|
19
|
+
"zero-knowledge",
|
|
20
|
+
"secure-sharing",
|
|
21
|
+
"pgp",
|
|
22
|
+
"rsa",
|
|
23
|
+
"aes",
|
|
24
|
+
"file-sharing",
|
|
25
|
+
"multi-party",
|
|
26
|
+
"insurance",
|
|
27
|
+
"compliance",
|
|
28
|
+
"hipaa"
|
|
29
|
+
],
|
|
30
|
+
"author": "Tessarai, LLC",
|
|
31
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
32
|
+
"repository": {
|
|
33
|
+
"type": "git",
|
|
34
|
+
"url": "https://github.com/tessarai-corpus/capsara-typescript.git"
|
|
35
|
+
},
|
|
36
|
+
"bugs": {
|
|
37
|
+
"url": "https://github.com/tessarai-corpus/capsara-typescript/issues"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://github.com/tessarai-corpus/capsara-typescript#readme",
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=20.0.0"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"axios": "^1.7.9"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@eslint/js": "^9.39.1",
|
|
48
|
+
"@types/node": "^20.17.10",
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^8.18.2",
|
|
50
|
+
"@typescript-eslint/parser": "^8.18.2",
|
|
51
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
52
|
+
"eslint": "^9.18.0",
|
|
53
|
+
"typescript": "^5.9.0",
|
|
54
|
+
"vitest": "^2.1.8"
|
|
55
|
+
},
|
|
56
|
+
"files": [
|
|
57
|
+
"dist",
|
|
58
|
+
"README.md",
|
|
59
|
+
"LICENSE"
|
|
60
|
+
]
|
|
61
|
+
}
|