@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.
Files changed (139) hide show
  1. package/LICENSE +74 -0
  2. package/README.md +230 -0
  3. package/dist/builder/capsa-builder.d.ts +167 -0
  4. package/dist/builder/capsa-builder.d.ts.map +1 -0
  5. package/dist/builder/capsa-builder.js +489 -0
  6. package/dist/builder/capsa-builder.js.map +1 -0
  7. package/dist/client/capsara-client.d.ts +96 -0
  8. package/dist/client/capsara-client.d.ts.map +1 -0
  9. package/dist/client/capsara-client.js +266 -0
  10. package/dist/client/capsara-client.js.map +1 -0
  11. package/dist/errors/account-error.d.ts +73 -0
  12. package/dist/errors/account-error.d.ts.map +1 -0
  13. package/dist/errors/account-error.js +155 -0
  14. package/dist/errors/account-error.js.map +1 -0
  15. package/dist/errors/audit-error.d.ts +34 -0
  16. package/dist/errors/audit-error.d.ts.map +1 -0
  17. package/dist/errors/audit-error.js +93 -0
  18. package/dist/errors/audit-error.js.map +1 -0
  19. package/dist/errors/auth-error.d.ts +38 -0
  20. package/dist/errors/auth-error.d.ts.map +1 -0
  21. package/dist/errors/auth-error.js +87 -0
  22. package/dist/errors/auth-error.js.map +1 -0
  23. package/dist/errors/capsa-error.d.ts +64 -0
  24. package/dist/errors/capsa-error.d.ts.map +1 -0
  25. package/dist/errors/capsa-error.js +172 -0
  26. package/dist/errors/capsa-error.js.map +1 -0
  27. package/dist/errors/capsara-error.d.ts +52 -0
  28. package/dist/errors/capsara-error.d.ts.map +1 -0
  29. package/dist/errors/capsara-error.js +83 -0
  30. package/dist/errors/capsara-error.js.map +1 -0
  31. package/dist/errors/index.d.ts +8 -0
  32. package/dist/errors/index.d.ts.map +1 -0
  33. package/dist/errors/index.js +7 -0
  34. package/dist/errors/index.js.map +1 -0
  35. package/dist/index.d.ts +7 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/internal/capsa-cache.d.ts +49 -0
  40. package/dist/internal/capsa-cache.d.ts.map +1 -0
  41. package/dist/internal/capsa-cache.js +118 -0
  42. package/dist/internal/capsa-cache.js.map +1 -0
  43. package/dist/internal/config/http-client.d.ts +37 -0
  44. package/dist/internal/config/http-client.d.ts.map +1 -0
  45. package/dist/internal/config/http-client.js +63 -0
  46. package/dist/internal/config/http-client.js.map +1 -0
  47. package/dist/internal/config/retry-interceptor.d.ts +18 -0
  48. package/dist/internal/config/retry-interceptor.d.ts.map +1 -0
  49. package/dist/internal/config/retry-interceptor.js +103 -0
  50. package/dist/internal/config/retry-interceptor.js.map +1 -0
  51. package/dist/internal/crypto/compression.d.ts +15 -0
  52. package/dist/internal/crypto/compression.d.ts.map +1 -0
  53. package/dist/internal/crypto/compression.js +34 -0
  54. package/dist/internal/crypto/compression.js.map +1 -0
  55. package/dist/internal/crypto/key-generator.d.ts +23 -0
  56. package/dist/internal/crypto/key-generator.d.ts.map +1 -0
  57. package/dist/internal/crypto/key-generator.js +65 -0
  58. package/dist/internal/crypto/key-generator.js.map +1 -0
  59. package/dist/internal/crypto/primitives.d.ts +67 -0
  60. package/dist/internal/crypto/primitives.d.ts.map +1 -0
  61. package/dist/internal/crypto/primitives.js +230 -0
  62. package/dist/internal/crypto/primitives.js.map +1 -0
  63. package/dist/internal/crypto/signatures.d.ts +30 -0
  64. package/dist/internal/crypto/signatures.d.ts.map +1 -0
  65. package/dist/internal/crypto/signatures.js +153 -0
  66. package/dist/internal/crypto/signatures.js.map +1 -0
  67. package/dist/internal/decryptor/capsa-decryptor.d.ts +89 -0
  68. package/dist/internal/decryptor/capsa-decryptor.d.ts.map +1 -0
  69. package/dist/internal/decryptor/capsa-decryptor.js +263 -0
  70. package/dist/internal/decryptor/capsa-decryptor.js.map +1 -0
  71. package/dist/internal/http-factory.d.ts +78 -0
  72. package/dist/internal/http-factory.d.ts.map +1 -0
  73. package/dist/internal/http-factory.js +201 -0
  74. package/dist/internal/http-factory.js.map +1 -0
  75. package/dist/internal/index.d.ts +5 -0
  76. package/dist/internal/index.d.ts.map +1 -0
  77. package/dist/internal/index.js +5 -0
  78. package/dist/internal/index.js.map +1 -0
  79. package/dist/internal/retry-executor.d.ts +74 -0
  80. package/dist/internal/retry-executor.d.ts.map +1 -0
  81. package/dist/internal/retry-executor.js +204 -0
  82. package/dist/internal/retry-executor.js.map +1 -0
  83. package/dist/internal/services/account-service.d.ts +56 -0
  84. package/dist/internal/services/account-service.d.ts.map +1 -0
  85. package/dist/internal/services/account-service.js +114 -0
  86. package/dist/internal/services/account-service.js.map +1 -0
  87. package/dist/internal/services/audit-service.d.ts +25 -0
  88. package/dist/internal/services/audit-service.d.ts.map +1 -0
  89. package/dist/internal/services/audit-service.js +43 -0
  90. package/dist/internal/services/audit-service.js.map +1 -0
  91. package/dist/internal/services/auth-service.d.ts +44 -0
  92. package/dist/internal/services/auth-service.d.ts.map +1 -0
  93. package/dist/internal/services/auth-service.js +170 -0
  94. package/dist/internal/services/auth-service.js.map +1 -0
  95. package/dist/internal/services/capsa-service.d.ts +40 -0
  96. package/dist/internal/services/capsa-service.d.ts.map +1 -0
  97. package/dist/internal/services/capsa-service.js +82 -0
  98. package/dist/internal/services/capsa-service.js.map +1 -0
  99. package/dist/internal/services/download-service.d.ts +62 -0
  100. package/dist/internal/services/download-service.d.ts.map +1 -0
  101. package/dist/internal/services/download-service.js +114 -0
  102. package/dist/internal/services/download-service.js.map +1 -0
  103. package/dist/internal/services/key-service.d.ts +28 -0
  104. package/dist/internal/services/key-service.d.ts.map +1 -0
  105. package/dist/internal/services/key-service.js +45 -0
  106. package/dist/internal/services/key-service.js.map +1 -0
  107. package/dist/internal/services/limits-service.d.ts +30 -0
  108. package/dist/internal/services/limits-service.d.ts.map +1 -0
  109. package/dist/internal/services/limits-service.js +73 -0
  110. package/dist/internal/services/limits-service.js.map +1 -0
  111. package/dist/internal/services/upload-service.d.ts +61 -0
  112. package/dist/internal/services/upload-service.d.ts.map +1 -0
  113. package/dist/internal/services/upload-service.js +258 -0
  114. package/dist/internal/services/upload-service.js.map +1 -0
  115. package/dist/internal/types.d.ts +74 -0
  116. package/dist/internal/types.d.ts.map +1 -0
  117. package/dist/internal/types.js +3 -0
  118. package/dist/internal/types.js.map +1 -0
  119. package/dist/internal/upload/multipart-builder.d.ts +57 -0
  120. package/dist/internal/upload/multipart-builder.d.ts.map +1 -0
  121. package/dist/internal/upload/multipart-builder.js +139 -0
  122. package/dist/internal/upload/multipart-builder.js.map +1 -0
  123. package/dist/internal/utils/id-generator.d.ts +8 -0
  124. package/dist/internal/utils/id-generator.d.ts.map +1 -0
  125. package/dist/internal/utils/id-generator.js +20 -0
  126. package/dist/internal/utils/id-generator.js.map +1 -0
  127. package/dist/internal/utils/mimetype-lookup.d.ts +8 -0
  128. package/dist/internal/utils/mimetype-lookup.d.ts.map +1 -0
  129. package/dist/internal/utils/mimetype-lookup.js +118 -0
  130. package/dist/internal/utils/mimetype-lookup.js.map +1 -0
  131. package/dist/internal/version.d.ts +20 -0
  132. package/dist/internal/version.d.ts.map +1 -0
  133. package/dist/internal/version.js +25 -0
  134. package/dist/internal/version.js.map +1 -0
  135. package/dist/types/index.d.ts +143 -0
  136. package/dist/types/index.d.ts.map +1 -0
  137. package/dist/types/index.js +20 -0
  138. package/dist/types/index.js.map +1 -0
  139. 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
+ }