@mixedbread/sdk 0.56.0 → 0.57.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.
Files changed (90) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/client.d.mts +1 -1
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +1 -1
  5. package/client.d.ts.map +1 -1
  6. package/client.js +1 -1
  7. package/client.js.map +1 -1
  8. package/client.mjs +1 -1
  9. package/client.mjs.map +1 -1
  10. package/index.d.mts +1 -0
  11. package/index.d.mts.map +1 -1
  12. package/index.d.ts +1 -0
  13. package/index.d.ts.map +1 -1
  14. package/index.js +3 -1
  15. package/index.js.map +1 -1
  16. package/index.mjs +1 -0
  17. package/index.mjs.map +1 -1
  18. package/lib/upload-file.d.mts +34 -0
  19. package/lib/upload-file.d.mts.map +1 -0
  20. package/lib/upload-file.d.ts +34 -0
  21. package/lib/upload-file.d.ts.map +1 -0
  22. package/lib/upload-file.js +146 -0
  23. package/lib/upload-file.js.map +1 -0
  24. package/lib/upload-file.mjs +141 -0
  25. package/lib/upload-file.mjs.map +1 -0
  26. package/package.json +1 -1
  27. package/resources/files/files.d.mts +156 -0
  28. package/resources/files/files.d.mts.map +1 -0
  29. package/resources/files/files.d.ts +156 -0
  30. package/resources/files/files.d.ts.map +1 -0
  31. package/resources/files/files.js +86 -0
  32. package/resources/files/files.js.map +1 -0
  33. package/resources/files/files.mjs +81 -0
  34. package/resources/files/files.mjs.map +1 -0
  35. package/resources/files/index.d.mts +3 -0
  36. package/resources/files/index.d.mts.map +1 -0
  37. package/resources/files/index.d.ts +3 -0
  38. package/resources/files/index.d.ts.map +1 -0
  39. package/resources/files/index.js +9 -0
  40. package/resources/files/index.js.map +1 -0
  41. package/resources/files/index.mjs +4 -0
  42. package/resources/files/index.mjs.map +1 -0
  43. package/resources/files/uploads.d.mts +169 -0
  44. package/resources/files/uploads.d.mts.map +1 -0
  45. package/resources/files/uploads.d.ts +169 -0
  46. package/resources/files/uploads.d.ts.map +1 -0
  47. package/resources/files/uploads.js +43 -0
  48. package/resources/files/uploads.js.map +1 -0
  49. package/resources/files/uploads.mjs +39 -0
  50. package/resources/files/uploads.mjs.map +1 -0
  51. package/resources/files.d.mts +1 -144
  52. package/resources/files.d.mts.map +1 -1
  53. package/resources/files.d.ts +1 -144
  54. package/resources/files.d.ts.map +1 -1
  55. package/resources/files.js +2 -73
  56. package/resources/files.js.map +1 -1
  57. package/resources/files.mjs +1 -71
  58. package/resources/files.mjs.map +1 -1
  59. package/resources/index.d.mts +1 -1
  60. package/resources/index.d.ts +1 -1
  61. package/resources/index.js +1 -1
  62. package/resources/index.js.map +1 -1
  63. package/resources/index.mjs +1 -1
  64. package/resources/stores/files.d.mts +9 -6
  65. package/resources/stores/files.d.mts.map +1 -1
  66. package/resources/stores/files.d.ts +9 -6
  67. package/resources/stores/files.d.ts.map +1 -1
  68. package/resources/stores/files.js +15 -4
  69. package/resources/stores/files.js.map +1 -1
  70. package/resources/stores/files.mjs +15 -4
  71. package/resources/stores/files.mjs.map +1 -1
  72. package/resources/stores/stores.d.mts +4 -4
  73. package/resources/stores/stores.d.mts.map +1 -1
  74. package/resources/stores/stores.d.ts +4 -4
  75. package/resources/stores/stores.d.ts.map +1 -1
  76. package/src/client.ts +10 -10
  77. package/src/index.ts +1 -0
  78. package/src/lib/upload-file.ts +233 -0
  79. package/src/resources/files/files.ts +239 -0
  80. package/src/resources/files/index.ts +23 -0
  81. package/src/resources/files/uploads.ts +229 -0
  82. package/src/resources/files.ts +1 -201
  83. package/src/resources/index.ts +1 -1
  84. package/src/resources/stores/files.ts +27 -6
  85. package/src/resources/stores/stores.ts +4 -4
  86. package/src/version.ts +1 -1
  87. package/version.d.mts +1 -1
  88. package/version.d.ts +1 -1
  89. package/version.js +1 -1
  90. package/version.mjs +1 -1
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultipartUploadError = void 0;
4
+ exports.handleFileCreate = handleFileCreate;
5
+ const api_promise_1 = require("../core/api-promise.js");
6
+ const to_file_1 = require("../internal/to-file.js");
7
+ const uploads_1 = require("../internal/uploads.js");
8
+ const DEFAULT_THRESHOLD = 100 * 1024 * 1024; // 100MB
9
+ const DEFAULT_CONCURRENCY = 5;
10
+ const DEFAULT_PART_SIZE = 100 * 1024 * 1024; // 100MB per part
11
+ const MIN_PART_SIZE = 5 * 1024 * 1024; // 5MB minimum
12
+ const MAX_PART_COUNT = 10000;
13
+ class MultipartUploadError extends Error {
14
+ constructor(message, uploadId) {
15
+ super(message);
16
+ this.name = 'MultipartUploadError';
17
+ this.uploadId = uploadId;
18
+ }
19
+ }
20
+ exports.MultipartUploadError = MultipartUploadError;
21
+ function makeResponseProps(response) {
22
+ return {
23
+ response,
24
+ options: {},
25
+ controller: new AbortController(),
26
+ requestLogID: '',
27
+ retryOfRequestLogID: undefined,
28
+ startTime: Date.now(),
29
+ };
30
+ }
31
+ function handleFileCreate(client, body, options) {
32
+ let resolvedData;
33
+ const responsePromise = (async () => {
34
+ const { multipartUpload, ...rest } = body;
35
+ const threshold = multipartUpload?.threshold ?? DEFAULT_THRESHOLD;
36
+ const concurrency = multipartUpload?.concurrency ?? DEFAULT_CONCURRENCY;
37
+ const partSize = multipartUpload?.partSize ?? DEFAULT_PART_SIZE;
38
+ if (partSize < MIN_PART_SIZE) {
39
+ throw new Error(`partSize must be at least 5MB (${MIN_PART_SIZE} bytes), got ${partSize}`);
40
+ }
41
+ if (threshold < MIN_PART_SIZE) {
42
+ throw new Error(`threshold must be at least 5MB (${MIN_PART_SIZE} bytes), got ${threshold}`);
43
+ }
44
+ // Normalize the uploadable to a File object so we can inspect size
45
+ const file = await (0, to_file_1.toFile)(rest.file);
46
+ const fileSize = file.size;
47
+ // Small file: delegate to the standard single-request upload
48
+ if (fileSize <= threshold) {
49
+ const apiPromise = client.post('/v1/files', await (0, uploads_1.multipartFormRequestOptions)({ body: { file }, ...options }, client));
50
+ const { data, response } = await apiPromise.withResponse();
51
+ resolvedData = data;
52
+ return makeResponseProps(response);
53
+ }
54
+ // Large file: multipart upload flow
55
+ const partCount = Math.ceil(fileSize / partSize);
56
+ if (partCount > MAX_PART_COUNT) {
57
+ throw new Error(`File would require ${partCount} parts, but the maximum is ${MAX_PART_COUNT}. Increase partSize to at least ${Math.ceil(fileSize / MAX_PART_COUNT)} bytes.`);
58
+ }
59
+ const filename = file.name || 'unknown_file';
60
+ const mimeType = file.type || 'application/octet-stream';
61
+ // Step 1: Initiate multipart upload
62
+ const uploadResponse = await client.files.uploads.create({
63
+ filename,
64
+ file_size: fileSize,
65
+ mime_type: mimeType,
66
+ part_count: partCount,
67
+ });
68
+ const uploadId = uploadResponse.id;
69
+ const partUrls = uploadResponse.part_urls;
70
+ try {
71
+ // Use the client's configured fetch (respects custom fetch, proxy, TLS settings)
72
+ const fetchFn = client.fetch;
73
+ // Step 2: Upload parts with concurrency control
74
+ const completedParts = await uploadParts(file, partUrls, concurrency, partSize, fileSize, fetchFn, options?.signal, multipartUpload?.onPartUpload);
75
+ // Step 3: Complete the multipart upload
76
+ const completePromise = client.files.uploads.complete(uploadId, { parts: completedParts });
77
+ const { data, response } = await completePromise.withResponse();
78
+ resolvedData = data;
79
+ return makeResponseProps(response);
80
+ }
81
+ catch (error) {
82
+ // Attempt to abort on any failure
83
+ try {
84
+ await client.files.uploads.abort(uploadId);
85
+ }
86
+ catch {
87
+ // Abort is best-effort; ignore failures
88
+ }
89
+ if (error instanceof MultipartUploadError) {
90
+ throw error;
91
+ }
92
+ throw new MultipartUploadError(error instanceof Error ? error.message : String(error), uploadId);
93
+ }
94
+ })();
95
+ return new api_promise_1.APIPromise(client, responsePromise, async () => resolvedData);
96
+ }
97
+ async function uploadParts(file, partUrls, concurrency, partSize, fileSize, fetchFn, signal, onPartUpload) {
98
+ const results = [];
99
+ const totalParts = partUrls.length;
100
+ let uploadedBytes = 0;
101
+ let nextIndex = 0;
102
+ async function worker() {
103
+ while (nextIndex < partUrls.length) {
104
+ if (signal?.aborted) {
105
+ throw new Error('Upload aborted');
106
+ }
107
+ const index = nextIndex++;
108
+ const { part_number, url } = partUrls[index];
109
+ const start = (part_number - 1) * partSize;
110
+ const end = Math.min(start + partSize, fileSize);
111
+ const chunkSize = end - start;
112
+ const blob = file.slice(start, end);
113
+ const response = await fetchFn(url, {
114
+ method: 'PUT',
115
+ body: blob,
116
+ ...(signal ? { signal } : {}),
117
+ });
118
+ if (!response.ok) {
119
+ throw new Error(`Part ${part_number} upload failed with status ${response.status}`);
120
+ }
121
+ const etag = response.headers.get('ETag') || response.headers.get('etag');
122
+ if (!etag) {
123
+ throw new Error(`Part ${part_number} response missing ETag header`);
124
+ }
125
+ results.push({ part_number, etag });
126
+ uploadedBytes += chunkSize;
127
+ onPartUpload?.({
128
+ partNumber: part_number,
129
+ totalParts,
130
+ partSize: chunkSize,
131
+ uploadedBytes,
132
+ totalBytes: fileSize,
133
+ });
134
+ }
135
+ }
136
+ const workerCount = Math.min(concurrency, partUrls.length);
137
+ const workers = [];
138
+ for (let i = 0; i < workerCount; i++) {
139
+ workers.push(worker());
140
+ }
141
+ await Promise.all(workers);
142
+ // Sort by part number for the complete call
143
+ results.sort((a, b) => a.part_number - b.part_number);
144
+ return results;
145
+ }
146
+ //# sourceMappingURL=upload-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-file.js","sourceRoot":"","sources":["../src/lib/upload-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import { APIPromise } from "../core/api-promise.mjs";
2
+ import { toFile } from "../internal/to-file.mjs";
3
+ import { multipartFormRequestOptions } from "../internal/uploads.mjs";
4
+ const DEFAULT_THRESHOLD = 100 * 1024 * 1024; // 100MB
5
+ const DEFAULT_CONCURRENCY = 5;
6
+ const DEFAULT_PART_SIZE = 100 * 1024 * 1024; // 100MB per part
7
+ const MIN_PART_SIZE = 5 * 1024 * 1024; // 5MB minimum
8
+ const MAX_PART_COUNT = 10000;
9
+ export class MultipartUploadError extends Error {
10
+ constructor(message, uploadId) {
11
+ super(message);
12
+ this.name = 'MultipartUploadError';
13
+ this.uploadId = uploadId;
14
+ }
15
+ }
16
+ function makeResponseProps(response) {
17
+ return {
18
+ response,
19
+ options: {},
20
+ controller: new AbortController(),
21
+ requestLogID: '',
22
+ retryOfRequestLogID: undefined,
23
+ startTime: Date.now(),
24
+ };
25
+ }
26
+ export function handleFileCreate(client, body, options) {
27
+ let resolvedData;
28
+ const responsePromise = (async () => {
29
+ const { multipartUpload, ...rest } = body;
30
+ const threshold = multipartUpload?.threshold ?? DEFAULT_THRESHOLD;
31
+ const concurrency = multipartUpload?.concurrency ?? DEFAULT_CONCURRENCY;
32
+ const partSize = multipartUpload?.partSize ?? DEFAULT_PART_SIZE;
33
+ if (partSize < MIN_PART_SIZE) {
34
+ throw new Error(`partSize must be at least 5MB (${MIN_PART_SIZE} bytes), got ${partSize}`);
35
+ }
36
+ if (threshold < MIN_PART_SIZE) {
37
+ throw new Error(`threshold must be at least 5MB (${MIN_PART_SIZE} bytes), got ${threshold}`);
38
+ }
39
+ // Normalize the uploadable to a File object so we can inspect size
40
+ const file = await toFile(rest.file);
41
+ const fileSize = file.size;
42
+ // Small file: delegate to the standard single-request upload
43
+ if (fileSize <= threshold) {
44
+ const apiPromise = client.post('/v1/files', await multipartFormRequestOptions({ body: { file }, ...options }, client));
45
+ const { data, response } = await apiPromise.withResponse();
46
+ resolvedData = data;
47
+ return makeResponseProps(response);
48
+ }
49
+ // Large file: multipart upload flow
50
+ const partCount = Math.ceil(fileSize / partSize);
51
+ if (partCount > MAX_PART_COUNT) {
52
+ throw new Error(`File would require ${partCount} parts, but the maximum is ${MAX_PART_COUNT}. Increase partSize to at least ${Math.ceil(fileSize / MAX_PART_COUNT)} bytes.`);
53
+ }
54
+ const filename = file.name || 'unknown_file';
55
+ const mimeType = file.type || 'application/octet-stream';
56
+ // Step 1: Initiate multipart upload
57
+ const uploadResponse = await client.files.uploads.create({
58
+ filename,
59
+ file_size: fileSize,
60
+ mime_type: mimeType,
61
+ part_count: partCount,
62
+ });
63
+ const uploadId = uploadResponse.id;
64
+ const partUrls = uploadResponse.part_urls;
65
+ try {
66
+ // Use the client's configured fetch (respects custom fetch, proxy, TLS settings)
67
+ const fetchFn = client.fetch;
68
+ // Step 2: Upload parts with concurrency control
69
+ const completedParts = await uploadParts(file, partUrls, concurrency, partSize, fileSize, fetchFn, options?.signal, multipartUpload?.onPartUpload);
70
+ // Step 3: Complete the multipart upload
71
+ const completePromise = client.files.uploads.complete(uploadId, { parts: completedParts });
72
+ const { data, response } = await completePromise.withResponse();
73
+ resolvedData = data;
74
+ return makeResponseProps(response);
75
+ }
76
+ catch (error) {
77
+ // Attempt to abort on any failure
78
+ try {
79
+ await client.files.uploads.abort(uploadId);
80
+ }
81
+ catch {
82
+ // Abort is best-effort; ignore failures
83
+ }
84
+ if (error instanceof MultipartUploadError) {
85
+ throw error;
86
+ }
87
+ throw new MultipartUploadError(error instanceof Error ? error.message : String(error), uploadId);
88
+ }
89
+ })();
90
+ return new APIPromise(client, responsePromise, async () => resolvedData);
91
+ }
92
+ async function uploadParts(file, partUrls, concurrency, partSize, fileSize, fetchFn, signal, onPartUpload) {
93
+ const results = [];
94
+ const totalParts = partUrls.length;
95
+ let uploadedBytes = 0;
96
+ let nextIndex = 0;
97
+ async function worker() {
98
+ while (nextIndex < partUrls.length) {
99
+ if (signal?.aborted) {
100
+ throw new Error('Upload aborted');
101
+ }
102
+ const index = nextIndex++;
103
+ const { part_number, url } = partUrls[index];
104
+ const start = (part_number - 1) * partSize;
105
+ const end = Math.min(start + partSize, fileSize);
106
+ const chunkSize = end - start;
107
+ const blob = file.slice(start, end);
108
+ const response = await fetchFn(url, {
109
+ method: 'PUT',
110
+ body: blob,
111
+ ...(signal ? { signal } : {}),
112
+ });
113
+ if (!response.ok) {
114
+ throw new Error(`Part ${part_number} upload failed with status ${response.status}`);
115
+ }
116
+ const etag = response.headers.get('ETag') || response.headers.get('etag');
117
+ if (!etag) {
118
+ throw new Error(`Part ${part_number} response missing ETag header`);
119
+ }
120
+ results.push({ part_number, etag });
121
+ uploadedBytes += chunkSize;
122
+ onPartUpload?.({
123
+ partNumber: part_number,
124
+ totalParts,
125
+ partSize: chunkSize,
126
+ uploadedBytes,
127
+ totalBytes: fileSize,
128
+ });
129
+ }
130
+ }
131
+ const workerCount = Math.min(concurrency, partUrls.length);
132
+ const workers = [];
133
+ for (let i = 0; i < workerCount; i++) {
134
+ workers.push(worker());
135
+ }
136
+ await Promise.all(workers);
137
+ // Sort by part number for the complete call
138
+ results.sort((a, b) => a.part_number - b.part_number);
139
+ return results;
140
+ }
141
+ //# sourceMappingURL=upload-file.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-file.mjs","sourceRoot":"","sources":["../src/lib/upload-file.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mixedbread/sdk",
3
- "version": "0.56.0",
3
+ "version": "0.57.0",
4
4
  "description": "The official TypeScript library for the Mixedbread API",
5
5
  "author": "Mixedbread <support@mixedbread.com>",
6
6
  "types": "./index.d.ts",
@@ -0,0 +1,156 @@
1
+ import { APIResource } from "../../core/resource.mjs";
2
+ import * as UploadsAPI from "./uploads.mjs";
3
+ import { MultipartUploadPart, MultipartUploadPartURL, UploadAbortResponse, UploadCompleteParams, UploadCreateParams, UploadCreateResponse, UploadListResponse, UploadRetrieveResponse, Uploads } from "./uploads.mjs";
4
+ import { APIPromise } from "../../core/api-promise.mjs";
5
+ import { Cursor, type CursorParams, PagePromise } from "../../core/pagination.mjs";
6
+ import { type Uploadable } from "../../core/uploads.mjs";
7
+ import { RequestOptions } from "../../internal/request-options.mjs";
8
+ import { type MultipartUploadConfig } from "../../lib/upload-file.mjs";
9
+ export declare class Files extends APIResource {
10
+ uploads: UploadsAPI.Uploads;
11
+ /**
12
+ * Upload a new file.
13
+ *
14
+ * Args: file: The file to upload.
15
+ *
16
+ * Returns: FileResponse: The response containing the details of the uploaded file.
17
+ */
18
+ create(body: FileCreateParams, options?: RequestOptions): APIPromise<FileObject>;
19
+ /**
20
+ * Retrieve details of a specific file by its ID.
21
+ *
22
+ * Args: file_id: The ID of the file to retrieve.
23
+ *
24
+ * Returns: FileResponse: The response containing the file details.
25
+ */
26
+ retrieve(fileID: string, options?: RequestOptions): APIPromise<FileObject>;
27
+ /**
28
+ * Update the details of a specific file.
29
+ *
30
+ * Args: file_id: The ID of the file to update. file: The new details for the file.
31
+ *
32
+ * Returns: FileObject: The updated file details.
33
+ */
34
+ update(fileID: string, body: FileUpdateParams, options?: RequestOptions): APIPromise<FileObject>;
35
+ /**
36
+ * List all files for the authenticated user.
37
+ *
38
+ * Args: pagination: The pagination options
39
+ *
40
+ * Returns: A list of files belonging to the user.
41
+ */
42
+ list(query?: FileListParams | null | undefined, options?: RequestOptions): PagePromise<FileObjectsCursor, FileObject>;
43
+ /**
44
+ * Delete a specific file by its ID.
45
+ *
46
+ * Args: file_id: The ID of the file to delete.
47
+ *
48
+ * Returns: FileDeleted: The response containing the details of the deleted file.
49
+ */
50
+ delete(fileID: string, options?: RequestOptions): APIPromise<FileDeleteResponse>;
51
+ /**
52
+ * Download a specific file by its ID.
53
+ *
54
+ * Args: file_id: The ID of the file to download.
55
+ *
56
+ * Returns: FileStreamResponse: The response containing the file to be downloaded.
57
+ */
58
+ content(fileID: string, options?: RequestOptions): APIPromise<Response>;
59
+ }
60
+ export type FileObjectsCursor = Cursor<FileObject>;
61
+ /**
62
+ * A model representing a file object in the system.
63
+ *
64
+ * This model contains metadata about files stored in the system, including
65
+ * identifiers, size information, and timestamps.
66
+ */
67
+ export interface FileObject {
68
+ /**
69
+ * Unique identifier for the file
70
+ */
71
+ id: string;
72
+ /**
73
+ * Name of the file including extension
74
+ */
75
+ filename: string;
76
+ /**
77
+ * Size of the file in bytes
78
+ */
79
+ bytes: number;
80
+ /**
81
+ * MIME type of the file
82
+ */
83
+ mime_type: string;
84
+ /**
85
+ * Version of the file
86
+ */
87
+ version: number;
88
+ /**
89
+ * Timestamp when the file was created
90
+ */
91
+ created_at: string;
92
+ /**
93
+ * Timestamp when the file was last updated
94
+ */
95
+ updated_at: string;
96
+ }
97
+ /**
98
+ * Pagination model that includes total count of items.
99
+ */
100
+ export interface PaginationWithTotal {
101
+ /**
102
+ * Maximum number of items to return per page
103
+ */
104
+ limit?: number;
105
+ /**
106
+ * Offset of the first item to return
107
+ */
108
+ offset?: number;
109
+ /**
110
+ * Total number of items available
111
+ */
112
+ total?: number;
113
+ }
114
+ export interface FileDeleteResponse {
115
+ /**
116
+ * The ID of the deleted file
117
+ */
118
+ id: string;
119
+ /**
120
+ * Whether the file was deleted
121
+ */
122
+ deleted?: boolean;
123
+ /**
124
+ * The type of the deleted object
125
+ */
126
+ object?: 'file';
127
+ }
128
+ export interface FileCreateParams {
129
+ /**
130
+ * The file to upload
131
+ */
132
+ file: Uploadable;
133
+ /**
134
+ * Optional configuration for automatic multipart uploads.
135
+ * When the file size exceeds the threshold (default 100MB), the SDK
136
+ * will automatically use multipart upload with presigned URLs.
137
+ */
138
+ multipartUpload?: MultipartUploadConfig;
139
+ }
140
+ export interface FileUpdateParams {
141
+ /**
142
+ * The file to update
143
+ */
144
+ file: Uploadable;
145
+ }
146
+ export interface FileListParams extends CursorParams {
147
+ /**
148
+ * Search query for fuzzy matching over name and description fields
149
+ */
150
+ q?: string | null;
151
+ }
152
+ export declare namespace Files {
153
+ export { type FileObject as FileObject, type PaginationWithTotal as PaginationWithTotal, type FileDeleteResponse as FileDeleteResponse, type FileObjectsCursor as FileObjectsCursor, type FileCreateParams as FileCreateParams, type FileUpdateParams as FileUpdateParams, type FileListParams as FileListParams, };
154
+ export { Uploads as Uploads, type MultipartUploadPart as MultipartUploadPart, type MultipartUploadPartURL as MultipartUploadPartURL, type UploadCreateResponse as UploadCreateResponse, type UploadRetrieveResponse as UploadRetrieveResponse, type UploadListResponse as UploadListResponse, type UploadAbortResponse as UploadAbortResponse, type UploadCreateParams as UploadCreateParams, type UploadCompleteParams as UploadCompleteParams, };
155
+ }
156
+ //# sourceMappingURL=files.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.mts","sourceRoot":"","sources":["../../src/resources/files/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ import { APIResource } from "../../core/resource.js";
2
+ import * as UploadsAPI from "./uploads.js";
3
+ import { MultipartUploadPart, MultipartUploadPartURL, UploadAbortResponse, UploadCompleteParams, UploadCreateParams, UploadCreateResponse, UploadListResponse, UploadRetrieveResponse, Uploads } from "./uploads.js";
4
+ import { APIPromise } from "../../core/api-promise.js";
5
+ import { Cursor, type CursorParams, PagePromise } from "../../core/pagination.js";
6
+ import { type Uploadable } from "../../core/uploads.js";
7
+ import { RequestOptions } from "../../internal/request-options.js";
8
+ import { type MultipartUploadConfig } from "../../lib/upload-file.js";
9
+ export declare class Files extends APIResource {
10
+ uploads: UploadsAPI.Uploads;
11
+ /**
12
+ * Upload a new file.
13
+ *
14
+ * Args: file: The file to upload.
15
+ *
16
+ * Returns: FileResponse: The response containing the details of the uploaded file.
17
+ */
18
+ create(body: FileCreateParams, options?: RequestOptions): APIPromise<FileObject>;
19
+ /**
20
+ * Retrieve details of a specific file by its ID.
21
+ *
22
+ * Args: file_id: The ID of the file to retrieve.
23
+ *
24
+ * Returns: FileResponse: The response containing the file details.
25
+ */
26
+ retrieve(fileID: string, options?: RequestOptions): APIPromise<FileObject>;
27
+ /**
28
+ * Update the details of a specific file.
29
+ *
30
+ * Args: file_id: The ID of the file to update. file: The new details for the file.
31
+ *
32
+ * Returns: FileObject: The updated file details.
33
+ */
34
+ update(fileID: string, body: FileUpdateParams, options?: RequestOptions): APIPromise<FileObject>;
35
+ /**
36
+ * List all files for the authenticated user.
37
+ *
38
+ * Args: pagination: The pagination options
39
+ *
40
+ * Returns: A list of files belonging to the user.
41
+ */
42
+ list(query?: FileListParams | null | undefined, options?: RequestOptions): PagePromise<FileObjectsCursor, FileObject>;
43
+ /**
44
+ * Delete a specific file by its ID.
45
+ *
46
+ * Args: file_id: The ID of the file to delete.
47
+ *
48
+ * Returns: FileDeleted: The response containing the details of the deleted file.
49
+ */
50
+ delete(fileID: string, options?: RequestOptions): APIPromise<FileDeleteResponse>;
51
+ /**
52
+ * Download a specific file by its ID.
53
+ *
54
+ * Args: file_id: The ID of the file to download.
55
+ *
56
+ * Returns: FileStreamResponse: The response containing the file to be downloaded.
57
+ */
58
+ content(fileID: string, options?: RequestOptions): APIPromise<Response>;
59
+ }
60
+ export type FileObjectsCursor = Cursor<FileObject>;
61
+ /**
62
+ * A model representing a file object in the system.
63
+ *
64
+ * This model contains metadata about files stored in the system, including
65
+ * identifiers, size information, and timestamps.
66
+ */
67
+ export interface FileObject {
68
+ /**
69
+ * Unique identifier for the file
70
+ */
71
+ id: string;
72
+ /**
73
+ * Name of the file including extension
74
+ */
75
+ filename: string;
76
+ /**
77
+ * Size of the file in bytes
78
+ */
79
+ bytes: number;
80
+ /**
81
+ * MIME type of the file
82
+ */
83
+ mime_type: string;
84
+ /**
85
+ * Version of the file
86
+ */
87
+ version: number;
88
+ /**
89
+ * Timestamp when the file was created
90
+ */
91
+ created_at: string;
92
+ /**
93
+ * Timestamp when the file was last updated
94
+ */
95
+ updated_at: string;
96
+ }
97
+ /**
98
+ * Pagination model that includes total count of items.
99
+ */
100
+ export interface PaginationWithTotal {
101
+ /**
102
+ * Maximum number of items to return per page
103
+ */
104
+ limit?: number;
105
+ /**
106
+ * Offset of the first item to return
107
+ */
108
+ offset?: number;
109
+ /**
110
+ * Total number of items available
111
+ */
112
+ total?: number;
113
+ }
114
+ export interface FileDeleteResponse {
115
+ /**
116
+ * The ID of the deleted file
117
+ */
118
+ id: string;
119
+ /**
120
+ * Whether the file was deleted
121
+ */
122
+ deleted?: boolean;
123
+ /**
124
+ * The type of the deleted object
125
+ */
126
+ object?: 'file';
127
+ }
128
+ export interface FileCreateParams {
129
+ /**
130
+ * The file to upload
131
+ */
132
+ file: Uploadable;
133
+ /**
134
+ * Optional configuration for automatic multipart uploads.
135
+ * When the file size exceeds the threshold (default 100MB), the SDK
136
+ * will automatically use multipart upload with presigned URLs.
137
+ */
138
+ multipartUpload?: MultipartUploadConfig;
139
+ }
140
+ export interface FileUpdateParams {
141
+ /**
142
+ * The file to update
143
+ */
144
+ file: Uploadable;
145
+ }
146
+ export interface FileListParams extends CursorParams {
147
+ /**
148
+ * Search query for fuzzy matching over name and description fields
149
+ */
150
+ q?: string | null;
151
+ }
152
+ export declare namespace Files {
153
+ export { type FileObject as FileObject, type PaginationWithTotal as PaginationWithTotal, type FileDeleteResponse as FileDeleteResponse, type FileObjectsCursor as FileObjectsCursor, type FileCreateParams as FileCreateParams, type FileUpdateParams as FileUpdateParams, type FileListParams as FileListParams, };
154
+ export { Uploads as Uploads, type MultipartUploadPart as MultipartUploadPart, type MultipartUploadPartURL as MultipartUploadPartURL, type UploadCreateResponse as UploadCreateResponse, type UploadRetrieveResponse as UploadRetrieveResponse, type UploadListResponse as UploadListResponse, type UploadAbortResponse as UploadAbortResponse, type UploadCreateParams as UploadCreateParams, type UploadCompleteParams as UploadCompleteParams, };
155
+ }
156
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/resources/files/files.ts"],"names":[],"mappings":"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"}