@shivam995364/uplink-nodejs-test 0.1.0-beta.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 (73) hide show
  1. package/Makefile +945 -0
  2. package/README.md +281 -0
  3. package/binding.gyp +105 -0
  4. package/dist/access/index.d.ts +102 -0
  5. package/dist/access/index.d.ts.map +1 -0
  6. package/dist/access/index.js +168 -0
  7. package/dist/access/index.js.map +1 -0
  8. package/dist/debug/index.d.ts +54 -0
  9. package/dist/debug/index.d.ts.map +1 -0
  10. package/dist/debug/index.js +61 -0
  11. package/dist/debug/index.js.map +1 -0
  12. package/dist/download/index.d.ts +106 -0
  13. package/dist/download/index.d.ts.map +1 -0
  14. package/dist/download/index.js +153 -0
  15. package/dist/download/index.js.map +1 -0
  16. package/dist/edge/index.d.ts +101 -0
  17. package/dist/edge/index.d.ts.map +1 -0
  18. package/dist/edge/index.js +128 -0
  19. package/dist/edge/index.js.map +1 -0
  20. package/dist/errors/codes.d.ts +29 -0
  21. package/dist/errors/codes.d.ts.map +1 -0
  22. package/dist/errors/codes.js +35 -0
  23. package/dist/errors/codes.js.map +1 -0
  24. package/dist/errors/exceptions.d.ts +135 -0
  25. package/dist/errors/exceptions.d.ts.map +1 -0
  26. package/dist/errors/exceptions.js +203 -0
  27. package/dist/errors/exceptions.js.map +1 -0
  28. package/dist/errors/factory.d.ts +69 -0
  29. package/dist/errors/factory.d.ts.map +1 -0
  30. package/dist/errors/factory.js +121 -0
  31. package/dist/errors/factory.js.map +1 -0
  32. package/dist/errors/index.d.ts +35 -0
  33. package/dist/errors/index.d.ts.map +1 -0
  34. package/dist/errors/index.js +69 -0
  35. package/dist/errors/index.js.map +1 -0
  36. package/dist/index.d.ts +22 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +61 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/multipart/index.d.ts +146 -0
  41. package/dist/multipart/index.d.ts.map +1 -0
  42. package/dist/multipart/index.js +244 -0
  43. package/dist/multipart/index.js.map +1 -0
  44. package/dist/native/index.d.ts +72 -0
  45. package/dist/native/index.d.ts.map +1 -0
  46. package/dist/native/index.js +34 -0
  47. package/dist/native/index.js.map +1 -0
  48. package/dist/project/index.d.ts +409 -0
  49. package/dist/project/index.d.ts.map +1 -0
  50. package/dist/project/index.js +529 -0
  51. package/dist/project/index.js.map +1 -0
  52. package/dist/types/index.d.ts +299 -0
  53. package/dist/types/index.d.ts.map +1 -0
  54. package/dist/types/index.js +59 -0
  55. package/dist/types/index.js.map +1 -0
  56. package/dist/uplink.d.ts +99 -0
  57. package/dist/uplink.d.ts.map +1 -0
  58. package/dist/uplink.js +135 -0
  59. package/dist/uplink.js.map +1 -0
  60. package/dist/upload/index.d.ts +153 -0
  61. package/dist/upload/index.d.ts.map +1 -0
  62. package/dist/upload/index.js +206 -0
  63. package/dist/upload/index.js.map +1 -0
  64. package/native/include/uplink.h +545 -0
  65. package/native/include/uplink_compat.h +111 -0
  66. package/native/include/uplink_definitions.h +344 -0
  67. package/native/include/uplink_msvc_compat.h +0 -0
  68. package/native/prebuilds/darwin-arm64/libuplink.dylib +0 -0
  69. package/native/prebuilds/darwin-arm64/uplink_native.node +0 -0
  70. package/native/prebuilds/win32-x64/libuplink.dll +0 -0
  71. package/native/prebuilds/win32-x64/uplink.def +87 -0
  72. package/native/prebuilds/win32-x64/uplink.lib +0 -0
  73. package/package.json +94 -0
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * @file native/index.ts
4
+ * @brief Centralized native module loader
5
+ *
6
+ * This module loads the native addon once and exports it for use
7
+ * throughout the application. This is more efficient than requiring
8
+ * the native module multiple times in different files.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.native = void 0;
12
+ /**
13
+ * Load the native module once
14
+ */
15
+ function loadNativeModule() {
16
+ try {
17
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-require-imports
18
+ return require('../../build/Release/uplink_native.node');
19
+ }
20
+ catch (e) {
21
+ throw new Error('Failed to load uplink native module. ' +
22
+ 'Make sure the native library is built and available. ' +
23
+ `Original error: ${e.message}`);
24
+ }
25
+ }
26
+ /**
27
+ * Singleton instance of the native module
28
+ */
29
+ exports.native = loadNativeModule();
30
+ /**
31
+ * Default export for convenience
32
+ */
33
+ exports.default = exports.native;
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAyIH;;GAEG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,qGAAqG;QACrG,OAAO,OAAO,CAAC,wCAAwC,CAAiB,CAAC;IAC3E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uCAAuC;YACrC,uDAAuD;YACvD,mBAAoB,CAAW,CAAC,OAAO,EAAE,CAC5C,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACU,QAAA,MAAM,GAAiB,gBAAgB,EAAE,CAAC;AAEvD;;GAEG;AACH,kBAAe,cAAM,CAAC"}
@@ -0,0 +1,409 @@
1
+ /**
2
+ * @file project/index.ts
3
+ * @brief ProjectResultStruct class for uplink-nodejs
4
+ *
5
+ * Provides TypeScript wrapper for project operations.
6
+ */
7
+ import type { BucketInfo, ListBucketsOptions, ObjectInfo, ListObjectsOptions, CopyObjectOptions, MoveObjectOptions, UploadOptions, DownloadOptions } from '../types';
8
+ import { UploadResultStruct } from '../upload';
9
+ import { DownloadResultStruct } from '../download';
10
+ /** Native handle type */
11
+ type ProjectHandle = unknown;
12
+ /**
13
+ * Represents an open project on Storj.
14
+ *
15
+ * A project is the main entry point for bucket and object operations.
16
+ * Always call `close()` when done to free resources.
17
+ */
18
+ export declare class ProjectResultStruct {
19
+ private readonly _handle;
20
+ private _isOpen;
21
+ /**
22
+ * Create a new ProjectResultStruct from a native handle
23
+ * @internal
24
+ */
25
+ constructor(handle: ProjectHandle);
26
+ /**
27
+ * Get the internal handle (for internal use only)
28
+ * @internal
29
+ */
30
+ get _nativeHandle(): ProjectHandle;
31
+ /**
32
+ * Check if the project is still open
33
+ */
34
+ get isOpen(): boolean;
35
+ /**
36
+ * Close the project and release resources.
37
+ *
38
+ * After calling this method, no other methods should be called
39
+ * on this project instance.
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const project = await access.openProject();
44
+ * try {
45
+ * // Use project...
46
+ * } finally {
47
+ * await project.close();
48
+ * }
49
+ * ```
50
+ */
51
+ close(): Promise<void>;
52
+ /**
53
+ * Revoke an access grant.
54
+ *
55
+ * Revokes the API key embedded in the provided access grant.
56
+ * This is useful when you want to invalidate a previously shared access.
57
+ *
58
+ * @param access - The access grant to revoke (AccessResultStruct)
59
+ * @returns Promise resolving when the access is revoked
60
+ * @throws Error if revocation fails
61
+ *
62
+ * @example
63
+ * ```typescript
64
+ * // Create a shared access with limited permissions
65
+ * const sharedAccess = await access.share(permission, prefixes);
66
+ *
67
+ * // Give the shared access to someone...
68
+ *
69
+ * // Later, revoke the access when no longer needed
70
+ * await project.revokeAccess(sharedAccess);
71
+ * ```
72
+ */
73
+ revokeAccess(access: {
74
+ _nativeHandle: unknown;
75
+ }): Promise<void>;
76
+ /**
77
+ * Validate that the project is still open
78
+ * @throws Error if project is closed
79
+ */
80
+ private validateOpen;
81
+ /**
82
+ * Validate a bucket name
83
+ * @param name - Bucket name to validate
84
+ * @throws TypeError if bucket name is invalid
85
+ */
86
+ private validateBucketName;
87
+ /**
88
+ * Create a new bucket.
89
+ *
90
+ * @param name - Bucket name (3-63 lowercase alphanumeric chars or hyphens)
91
+ * @returns Promise resolving to the created bucket info
92
+ * @throws TypeError if bucket name is invalid
93
+ * @throws Error if bucket already exists
94
+ *
95
+ * @example
96
+ * ```typescript
97
+ * const bucket = await project.createBucket('my-bucket');
98
+ * console.log(`Created bucket: ${bucket.name}`);
99
+ * ```
100
+ */
101
+ createBucket(name: string): Promise<BucketInfo>;
102
+ /**
103
+ * Ensure a bucket exists, creating it if necessary.
104
+ *
105
+ * This is idempotent - calling it multiple times has the same effect
106
+ * as calling it once.
107
+ *
108
+ * @param name - Bucket name (3-63 lowercase alphanumeric chars or hyphens)
109
+ * @returns Promise resolving to the bucket info
110
+ * @throws TypeError if bucket name is invalid
111
+ *
112
+ * @example
113
+ * ```typescript
114
+ * const bucket = await project.ensureBucket('my-bucket');
115
+ * // Bucket now exists, whether it was just created or already existed
116
+ * ```
117
+ */
118
+ ensureBucket(name: string): Promise<BucketInfo>;
119
+ /**
120
+ * Get information about a bucket.
121
+ *
122
+ * @param name - Bucket name
123
+ * @returns Promise resolving to the bucket info
124
+ * @throws TypeError if bucket name is invalid
125
+ * @throws Error if bucket does not exist
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const bucket = await project.statBucket('my-bucket');
130
+ * console.log(`Bucket created: ${bucket.created}`);
131
+ * ```
132
+ */
133
+ statBucket(name: string): Promise<BucketInfo>;
134
+ /**
135
+ * Delete an empty bucket.
136
+ *
137
+ * The bucket must be empty before it can be deleted.
138
+ * Use `deleteBucketWithObjects` to delete a bucket and all its contents.
139
+ *
140
+ * @param name - Bucket name
141
+ * @returns Promise resolving when the bucket is deleted
142
+ * @throws TypeError if bucket name is invalid
143
+ * @throws Error if bucket does not exist or is not empty
144
+ *
145
+ * @example
146
+ * ```typescript
147
+ * await project.deleteBucket('my-bucket');
148
+ * ```
149
+ */
150
+ deleteBucket(name: string): Promise<void>;
151
+ /**
152
+ * Delete a bucket and all its objects.
153
+ *
154
+ * WARNING: This will permanently delete all objects in the bucket!
155
+ *
156
+ * @param name - Bucket name
157
+ * @returns Promise resolving when the bucket and all objects are deleted
158
+ * @throws TypeError if bucket name is invalid
159
+ * @throws Error if bucket does not exist
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * // Delete bucket and all its contents
164
+ * await project.deleteBucketWithObjects('my-bucket');
165
+ * ```
166
+ */
167
+ deleteBucketWithObjects(name: string): Promise<void>;
168
+ /**
169
+ * List all buckets in the project.
170
+ *
171
+ * @param options - Optional listing options
172
+ * @returns Promise resolving to an array of bucket info
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * const buckets = await project.listBuckets();
177
+ * for (const bucket of buckets) {
178
+ * console.log(`- ${bucket.name} (created: ${bucket.created})`);
179
+ * }
180
+ * ```
181
+ */
182
+ listBuckets(options?: ListBucketsOptions): Promise<BucketInfo[]>;
183
+ /**
184
+ * Validate an object key
185
+ * @param key - Object key to validate
186
+ * @throws TypeError if object key is invalid
187
+ */
188
+ private validateObjectKey;
189
+ /**
190
+ * Get information about an object.
191
+ *
192
+ * @param bucketName - Name of the bucket containing the object
193
+ * @param objectKey - Object key (path)
194
+ * @returns Promise resolving to the object info
195
+ * @throws TypeError if bucket name or object key is invalid
196
+ * @throws Error if object does not exist
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const info = await project.statObject('my-bucket', 'path/to/file.txt');
201
+ * console.log(`Size: ${info.system.contentLength} bytes`);
202
+ * console.log(`Created: ${info.system.created}`);
203
+ * ```
204
+ */
205
+ statObject(bucketName: string, objectKey: string): Promise<ObjectInfo>;
206
+ /**
207
+ * Delete an object.
208
+ *
209
+ * @param bucketName - Name of the bucket containing the object
210
+ * @param objectKey - Object key (path)
211
+ * @returns Promise resolving when the object is deleted
212
+ * @throws TypeError if bucket name or object key is invalid
213
+ * @throws Error if object does not exist
214
+ *
215
+ * @example
216
+ * ```typescript
217
+ * await project.deleteObject('my-bucket', 'path/to/file.txt');
218
+ * ```
219
+ */
220
+ deleteObject(bucketName: string, objectKey: string): Promise<void>;
221
+ /**
222
+ * List objects in a bucket.
223
+ *
224
+ * @param bucketName - Name of the bucket to list objects from
225
+ * @param options - Optional listing options
226
+ * @returns Promise resolving to an array of object info
227
+ * @throws TypeError if bucket name is invalid
228
+ *
229
+ * @example
230
+ * ```typescript
231
+ * // List all objects
232
+ * const objects = await project.listObjects('my-bucket');
233
+ *
234
+ * // List with prefix and pagination
235
+ * const objects = await project.listObjects('my-bucket', {
236
+ * prefix: 'photos/',
237
+ * recursive: true,
238
+ * system: true,
239
+ * custom: true
240
+ * });
241
+ *
242
+ * for (const obj of objects) {
243
+ * if (obj.isPrefix) {
244
+ * console.log(`[DIR] ${obj.key}`);
245
+ * } else {
246
+ * console.log(`${obj.key} (${obj.system.contentLength} bytes)`);
247
+ * }
248
+ * }
249
+ * ```
250
+ */
251
+ listObjects(bucketName: string, options?: ListObjectsOptions): Promise<ObjectInfo[]>;
252
+ /**
253
+ * Copy an object to a new location.
254
+ *
255
+ * @param oldBucket - Source bucket name
256
+ * @param oldKey - Source object key
257
+ * @param newBucket - Destination bucket name
258
+ * @param newKey - Destination object key
259
+ * @param options - Optional copy options
260
+ * @returns Promise resolving to the new object info
261
+ * @throws TypeError if bucket name or object key is invalid
262
+ * @throws Error if source object does not exist
263
+ *
264
+ * @example
265
+ * ```typescript
266
+ * // Copy within same bucket
267
+ * const copied = await project.copyObject(
268
+ * 'my-bucket', 'original.txt',
269
+ * 'my-bucket', 'copy.txt'
270
+ * );
271
+ *
272
+ * // Copy to different bucket
273
+ * const copied = await project.copyObject(
274
+ * 'source-bucket', 'file.txt',
275
+ * 'dest-bucket', 'backup/file.txt'
276
+ * );
277
+ * ```
278
+ */
279
+ copyObject(oldBucket: string, oldKey: string, newBucket: string, newKey: string, options?: CopyObjectOptions): Promise<ObjectInfo>;
280
+ /**
281
+ * Move (rename) an object to a new location.
282
+ *
283
+ * @param oldBucket - Source bucket name
284
+ * @param oldKey - Source object key
285
+ * @param newBucket - Destination bucket name
286
+ * @param newKey - Destination object key
287
+ * @param options - Optional move options
288
+ * @returns Promise resolving when the move is complete
289
+ * @throws TypeError if bucket name or object key is invalid
290
+ * @throws Error if source object does not exist
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * // Rename within same bucket
295
+ * await project.moveObject(
296
+ * 'my-bucket', 'old-name.txt',
297
+ * 'my-bucket', 'new-name.txt'
298
+ * );
299
+ *
300
+ * // Move to different bucket
301
+ * await project.moveObject(
302
+ * 'source-bucket', 'file.txt',
303
+ * 'archive-bucket', 'archived/file.txt'
304
+ * );
305
+ * ```
306
+ */
307
+ moveObject(oldBucket: string, oldKey: string, newBucket: string, newKey: string, options?: MoveObjectOptions): Promise<void>;
308
+ /**
309
+ * Update object custom metadata.
310
+ *
311
+ * Replaces the existing custom metadata with new metadata.
312
+ * System metadata (created, expires, contentLength) cannot be modified.
313
+ *
314
+ * @param bucketName - Bucket name containing the object
315
+ * @param objectKey - Object key to update
316
+ * @param metadata - New custom metadata (replaces existing)
317
+ * @returns Promise resolving when metadata is updated
318
+ * @throws TypeError if bucket name or object key is invalid
319
+ * @throws Error if object does not exist
320
+ *
321
+ * @example
322
+ * ```typescript
323
+ * // Update custom metadata
324
+ * await project.updateObjectMetadata('my-bucket', 'file.txt', {
325
+ * 'Content-Type': 'text/plain',
326
+ * 'X-Author': 'John Doe',
327
+ * 'X-Version': '2'
328
+ * });
329
+ *
330
+ * // Clear custom metadata by passing empty object
331
+ * await project.updateObjectMetadata('my-bucket', 'file.txt', {});
332
+ * ```
333
+ */
334
+ updateObjectMetadata(bucketName: string, objectKey: string, metadata: Record<string, string>): Promise<void>;
335
+ /**
336
+ * Start uploading an object.
337
+ *
338
+ * Returns an UploadResultStruct for writing data and finalizing the upload.
339
+ *
340
+ * @param bucketName - Name of the bucket to upload to
341
+ * @param objectKey - Object key (path) for the uploaded object
342
+ * @param options - Optional upload options (e.g., expiration)
343
+ * @returns Promise resolving to an UploadResultStruct
344
+ * @throws TypeError if bucket name or object key is invalid
345
+ *
346
+ * @example
347
+ * ```typescript
348
+ * // Simple upload
349
+ * const upload = await project.uploadObject('my-bucket', 'file.txt');
350
+ * await upload.write(Buffer.from('Hello, World!'), 13);
351
+ * await upload.commit();
352
+ *
353
+ * // Upload with expiration
354
+ * const upload = await project.uploadObject('my-bucket', 'temp.txt', {
355
+ * expires: new Date(Date.now() + 24 * 60 * 60 * 1000) // 24 hours
356
+ * });
357
+ * await upload.write(data, data.length);
358
+ * await upload.commit();
359
+ *
360
+ * // Upload with custom metadata
361
+ * const upload = await project.uploadObject('my-bucket', 'photo.jpg');
362
+ * await upload.setCustomMetadata({
363
+ * 'Content-Type': 'image/jpeg',
364
+ * 'X-Custom-Tag': 'vacation'
365
+ * });
366
+ * await upload.write(imageBuffer, imageBuffer.length);
367
+ * await upload.commit();
368
+ * ```
369
+ */
370
+ uploadObject(bucketName: string, objectKey: string, options?: UploadOptions): Promise<UploadResultStruct>;
371
+ /**
372
+ * Start a download from a bucket.
373
+ *
374
+ * Opens a download stream for the specified object. Use the returned
375
+ * DownloadResultStruct to read data and close the download when done.
376
+ *
377
+ * @param bucketName - Name of the bucket to download from
378
+ * @param objectKey - Object key (path) to download
379
+ * @param options - Optional download options (offset, length)
380
+ * @returns Promise resolving to a DownloadResultStruct
381
+ * @throws TypeError if bucket name or object key is invalid
382
+ *
383
+ * @example
384
+ * ```typescript
385
+ * // Download entire object
386
+ * const download = await project.downloadObject('my-bucket', 'file.txt');
387
+ * const buffer = Buffer.alloc(1024);
388
+ * let totalBytes = 0;
389
+ * let result;
390
+ * do {
391
+ * result = await download.read(buffer, buffer.length);
392
+ * totalBytes += result.bytesRead;
393
+ * } while (result.bytesRead > 0);
394
+ * await download.close();
395
+ *
396
+ * // Download with offset and length (partial download)
397
+ * const download = await project.downloadObject('my-bucket', 'large-file.bin', {
398
+ * offset: 1000,
399
+ * length: 500
400
+ * });
401
+ * const chunk = Buffer.alloc(500);
402
+ * await download.read(chunk, chunk.length);
403
+ * await download.close();
404
+ * ```
405
+ */
406
+ downloadObject(bucketName: string, objectKey: string, options?: DownloadOptions): Promise<DownloadResultStruct>;
407
+ }
408
+ export {};
409
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/project/index.ts"],"names":[],"mappings":"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"}