@geekmidas/storage 0.0.5 → 1.0.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 (51) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{AmazonStorageClient-tyGekctm.cjs → AmazonStorageClient-BKzXhCX0.cjs} +28 -5
  3. package/dist/AmazonStorageClient-BKzXhCX0.cjs.map +1 -0
  4. package/dist/{AmazonStorageClient-DaktozmE.d.mts → AmazonStorageClient-Bc_LP3K6.d.mts} +6 -5
  5. package/dist/AmazonStorageClient-Bc_LP3K6.d.mts.map +1 -0
  6. package/dist/{AmazonStorageClient-Bkw-x2o2.mjs → AmazonStorageClient-CwUey48q.mjs} +3 -2
  7. package/dist/AmazonStorageClient-CwUey48q.mjs.map +1 -0
  8. package/dist/{AmazonStorageClient-aduVU3_p.d.cts → AmazonStorageClient-DxT8_gTZ.d.cts} +6 -5
  9. package/dist/AmazonStorageClient-DxT8_gTZ.d.cts.map +1 -0
  10. package/dist/AmazonStorageClient.cjs +1 -1
  11. package/dist/AmazonStorageClient.d.cts +2 -2
  12. package/dist/AmazonStorageClient.d.mts +2 -2
  13. package/dist/AmazonStorageClient.mjs +2 -2
  14. package/dist/{StorageClient-CZGIC_fz.mjs → StorageClient-4ADnTPnJ.mjs} +2 -1
  15. package/dist/StorageClient-4ADnTPnJ.mjs.map +1 -0
  16. package/dist/StorageClient-BDRVrMJj.cjs +2 -1
  17. package/dist/StorageClient-BDRVrMJj.cjs.map +1 -0
  18. package/dist/{StorageClient-CveQoxJa.d.mts → StorageClient-BWS26EEf.d.cts} +4 -2
  19. package/dist/StorageClient-BWS26EEf.d.cts.map +1 -0
  20. package/dist/{StorageClient-CcOAW3YV.d.cts → StorageClient-VG7Thpke.d.mts} +4 -2
  21. package/dist/StorageClient-VG7Thpke.d.mts.map +1 -0
  22. package/dist/StorageClient.d.cts +1 -1
  23. package/dist/StorageClient.d.mts +1 -1
  24. package/dist/StorageClient.mjs +1 -1
  25. package/dist/aws.cjs +1 -1
  26. package/dist/aws.d.cts +2 -2
  27. package/dist/aws.d.mts +2 -2
  28. package/dist/aws.mjs +2 -2
  29. package/dist/index.d.cts +1 -1
  30. package/dist/index.d.mts +1 -1
  31. package/package.json +29 -6
  32. package/src/AmazonStorageClient.ts +178 -178
  33. package/src/StorageClient.ts +68 -68
  34. package/src/__tests__/AmazonStorageClient.spec.ts +501 -501
  35. package/src/__tests__/StorageClient.spec.ts +71 -71
  36. package/src/aws.ts +7 -7
  37. package/tsconfig.json +9 -0
  38. package/tsdown.config.ts +5 -5
  39. package/dist/__tests__/AmazonStorageClient.spec.cjs +0 -348
  40. package/dist/__tests__/AmazonStorageClient.spec.d.cts +0 -1
  41. package/dist/__tests__/AmazonStorageClient.spec.d.mts +0 -1
  42. package/dist/__tests__/AmazonStorageClient.spec.mjs +0 -347
  43. package/dist/__tests__/StorageClient.spec.cjs +0 -81
  44. package/dist/__tests__/StorageClient.spec.d.cts +0 -1
  45. package/dist/__tests__/StorageClient.spec.d.mts +0 -1
  46. package/dist/__tests__/StorageClient.spec.mjs +0 -81
  47. package/dist/chunk-DWy1uDak.cjs +0 -39
  48. package/dist/magic-string.es-BvJNBYzY.mjs +0 -1014
  49. package/dist/magic-string.es-CKiDiYoS.cjs +0 -1015
  50. package/dist/vi.bdSIJ99Y-CucmVasy.mjs +0 -14928
  51. package/dist/vi.bdSIJ99Y-D0m6qImj.cjs +0 -14926
package/CHANGELOG.md ADDED
@@ -0,0 +1,12 @@
1
+ # @geekmidas/storage
2
+
3
+ ## 1.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`ff7b115`](https://github.com/geekmidas/toolbox/commit/ff7b11599f60f84ac6cdc73714c853ecf786b2e8) Thanks [@geekmidas](https://github.com/geekmidas)! - Version 1 Stable release
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`ff7b115`](https://github.com/geekmidas/toolbox/commit/ff7b11599f60f84ac6cdc73714c853ecf786b2e8)]:
12
+ - @geekmidas/cache@1.0.0
@@ -1,8 +1,30 @@
1
- const require_chunk = require('./chunk-DWy1uDak.cjs');
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
2
24
  const require_StorageClient = require('./StorageClient-BDRVrMJj.cjs');
3
- const __aws_sdk_client_s3 = require_chunk.__toESM(require("@aws-sdk/client-s3"));
4
- const __aws_sdk_s3_presigned_post = require_chunk.__toESM(require("@aws-sdk/s3-presigned-post"));
5
- const __aws_sdk_s3_request_presigner = require_chunk.__toESM(require("@aws-sdk/s3-request-presigner"));
25
+ const __aws_sdk_client_s3 = __toESM(require("@aws-sdk/client-s3"));
26
+ const __aws_sdk_s3_presigned_post = __toESM(require("@aws-sdk/s3-presigned-post"));
27
+ const __aws_sdk_s3_request_presigner = __toESM(require("@aws-sdk/s3-request-presigner"));
6
28
 
7
29
  //#region src/AmazonStorageClient.ts
8
30
  var AmazonStorageClient = class AmazonStorageClient {
@@ -128,4 +150,5 @@ Object.defineProperty(exports, 'AmazonStorageClient', {
128
150
  get: function () {
129
151
  return AmazonStorageClient;
130
152
  }
131
- });
153
+ });
154
+ //# sourceMappingURL=AmazonStorageClient-BKzXhCX0.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonStorageClient-BKzXhCX0.cjs","names":["StorageProvider","options: AmazonStorageClientCreateOptions","S3Client","client: S3Client","bucket: string","cache?: Cache","file: File","versionId: string","GetObjectCommand","key: string","ListObjectVersionsCommand","params: GetUploadParams","PutObjectCommand","data: string | Buffer","contentType: string"],"sources":["../src/AmazonStorageClient.ts"],"sourcesContent":["import {\n\tGetObjectCommand,\n\tListObjectVersionsCommand,\n\tPutObjectCommand,\n\tS3Client,\n} from '@aws-sdk/client-s3';\nimport { createPresignedPost } from '@aws-sdk/s3-presigned-post';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\n\nimport type { Cache } from '@geekmidas/cache';\nimport {\n\ttype DocumentVersion,\n\ttype File,\n\ttype GetUploadParams,\n\ttype GetUploadResponse,\n\ttype StorageClient,\n\tStorageProvider,\n} from './StorageClient';\n\nexport class AmazonStorageClient implements StorageClient {\n\treadonly provider = StorageProvider.AWSS3;\n\n\tstatic create(\n\t\toptions: AmazonStorageClientCreateOptions,\n\t): AmazonStorageClient {\n\t\tconst {\n\t\t\tbucket,\n\t\t\tregion,\n\t\t\taccessKeyId,\n\t\t\tacl,\n\t\t\tendpoint,\n\t\t\tsecretAccessKey,\n\t\t\tforcePathStyle = false,\n\t\t\tcache,\n\t\t} = options;\n\t\tconst hasCredentials = accessKeyId && secretAccessKey;\n\t\tconst credentials = hasCredentials\n\t\t\t? { accessKeyId, secretAccessKey }\n\t\t\t: undefined;\n\n\t\tconst client = new S3Client({\n\t\t\tregion,\n\t\t\tcredentials,\n\t\t\tendpoint,\n\t\t\tforcePathStyle,\n\t\t});\n\n\t\treturn new AmazonStorageClient(client, bucket, acl, cache);\n\t}\n\tconstructor(\n\t\tprivate readonly client: S3Client,\n\t\tprivate readonly bucket: string,\n\t\tprivate readonly acl = AmazonCannedAccessControlList.AuthenticatedRead,\n\t\treadonly cache?: Cache,\n\t) {}\n\n\tgetVersionDownloadURL(file: File, versionId: string): Promise<string> {\n\t\tconst ResponseContentDisposition = file.name\n\t\t\t? `attachment; filename=${encodeURIComponent(file.name)}`\n\t\t\t: undefined;\n\n\t\tconst command = new GetObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: file.path,\n\t\t\tResponseContentDisposition,\n\t\t\tVersionId: versionId,\n\t\t});\n\n\t\treturn getSignedUrl(this.client, command, { expiresIn: 60 * 60 * 24 });\n\t}\n\n\tasync getVersions(key: string): Promise<DocumentVersion[]> {\n\t\tconst command = new ListObjectVersionsCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tPrefix: key,\n\t\t});\n\n\t\tconst { Versions = [] } = await this.client.send(command);\n\n\t\treturn Versions.map((version) => ({\n\t\t\tid: version.VersionId || '',\n\t\t\tcreatedAt: version.LastModified || new Date(),\n\t\t}));\n\t}\n\n\tasync getDownloadURL(file: File, expiresIn = 60 * 60): Promise<string> {\n\t\tconst cacheKey = `download-url:${file.path}`;\n\t\tconst cachedURL = await this.cache?.get<string>(cacheKey);\n\n\t\tif (cachedURL) {\n\t\t\treturn cachedURL;\n\t\t}\n\n\t\tconst ResponseContentDisposition = file.name\n\t\t\t? `attachment; filename=${encodeURIComponent(file.name)}`\n\t\t\t: undefined;\n\n\t\tconst command = new GetObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: file.path,\n\t\t\tResponseContentDisposition,\n\t\t});\n\n\t\tconst url = await getSignedUrl(this.client, command, { expiresIn });\n\t\tconst cacheExpiration = Math.max(expiresIn - 60, 0);\n\n\t\tif (cacheExpiration) {\n\t\t\tawait this.cache?.set(cacheKey, url, cacheExpiration);\n\t\t}\n\n\t\treturn url;\n\t}\n\n\tasync getUploadURL(\n\t\tparams: GetUploadParams,\n\t\texpiresIn = 60 * 60,\n\t): Promise<string> {\n\t\tconst command = new PutObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: params.path,\n\t\t\tContentType: params.contentType,\n\t\t\tContentLength: params.contentLength,\n\t\t});\n\n\t\treturn getSignedUrl(this.client, command, { expiresIn });\n\t}\n\n\tasync getUpload(\n\t\tparams: GetUploadParams,\n\t\texpiresIn = 5,\n\t): Promise<GetUploadResponse> {\n\t\tconst { path } = params;\n\t\tconst { fields: values, url } = await createPresignedPost(this.client, {\n\t\t\tExpires: expiresIn * 60,\n\t\t\tBucket: this.bucket,\n\t\t\tFields: {\n\t\t\t\tacl: this.acl,\n\t\t\t},\n\t\t\tConditions: [\n\t\t\t\t// content length restrictions: 0-1MB]\n\t\t\t\t// ['content-length-range', 0, contentLength],\n\t\t\t\t// specify content-type to be more generic- images only\n\t\t\t\t// ['starts-with', '$Content-Type', 'image/'],\n\t\t\t\t// ['starts-with', '$Content-Type', contentType],\n\t\t\t],\n\t\t\tKey: path,\n\t\t});\n\n\t\tconst keys = Object.keys(values);\n\t\tconst fields = keys.map((key) => ({ key, value: values[key] || '' }));\n\n\t\treturn { url, fields };\n\t}\n\n\tasync upload(\n\t\tkey: string,\n\t\tdata: string | Buffer,\n\t\tcontentType: string,\n\t): Promise<void> {\n\t\tconst Body = typeof data === 'string' ? Buffer.from(data, 'base64') : data;\n\n\t\tconst params = {\n\t\t\tBucket: this.bucket,\n\t\t\tKey: key,\n\t\t\tBody,\n\t\t\tContentType: contentType,\n\t\t};\n\n\t\tconst command = new PutObjectCommand(params);\n\n\t\tawait this.client.send(command);\n\t}\n}\n\nexport enum AmazonCannedAccessControlList {\n\tAuthenticatedRead = 'authenticated-read',\n\tPrivate = 'private',\n\tPublicRead = 'public-read',\n\tPublicReadWrite = 'public-read-write',\n\tAwsExecRead = 'aws-exec-read',\n\tBucketOwnerRead = 'bucket-owner-read',\n\tBucketOwnerFullControl = 'bucket-owner-full-control',\n\tLogDeliveryWrite = 'log-delivery-write',\n}\n\ninterface AmazonStorageClientCreateOptions {\n\tbucket: string;\n\tregion?: string;\n\tacl?: AmazonCannedAccessControlList;\n\taccessKeyId?: string;\n\tsecretAccessKey?: string;\n\tendpoint?: string;\n\tforcePathStyle?: boolean;\n\tcache?: Cache;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider } from "./StorageClient-CveQoxJa.mjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider } from "./StorageClient-VG7Thpke.mjs";
2
2
  import { S3Client } from "@aws-sdk/client-s3";
3
3
  import { Cache } from "@geekmidas/cache";
4
4
 
@@ -7,10 +7,10 @@ declare class AmazonStorageClient implements StorageClient {
7
7
  private readonly client;
8
8
  private readonly bucket;
9
9
  private readonly acl;
10
- readonly cache?: Cache<string>;
10
+ readonly cache?: Cache;
11
11
  readonly provider = StorageProvider.AWSS3;
12
12
  static create(options: AmazonStorageClientCreateOptions): AmazonStorageClient;
13
- constructor(client: S3Client, bucket: string, acl?: AmazonCannedAccessControlList, cache?: Cache<string>);
13
+ constructor(client: S3Client, bucket: string, acl?: AmazonCannedAccessControlList, cache?: Cache);
14
14
  getVersionDownloadURL(file: File, versionId: string): Promise<string>;
15
15
  getVersions(key: string): Promise<DocumentVersion[]>;
16
16
  getDownloadURL(file: File, expiresIn?: number): Promise<string>;
@@ -36,7 +36,8 @@ interface AmazonStorageClientCreateOptions {
36
36
  secretAccessKey?: string;
37
37
  endpoint?: string;
38
38
  forcePathStyle?: boolean;
39
- cache?: Cache<string>;
39
+ cache?: Cache;
40
40
  }
41
41
  //#endregion
42
- export { AmazonCannedAccessControlList, AmazonStorageClient };
42
+ export { AmazonCannedAccessControlList, AmazonStorageClient };
43
+ //# sourceMappingURL=AmazonStorageClient-Bc_LP3K6.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonStorageClient-Bc_LP3K6.d.mts","names":[],"sources":["../src/AmazonStorageClient.ts"],"sourcesContent":[],"mappings":";;;;;cAmBa,mBAAA,YAA+B;;EAA/B,iBAAA,MAAoB;EAAA,iBAAA,GAAA;EAAA,SAkCd,KAAA,CAAA,EAAA,KAAA;EAAK,SAjCN,QAAA,GAAA,eAAA,CAAA,KAAA;EAAA,OAGP,MAAA,CAAA,OAAA,EAAA,gCAAA,CAAA,EACP,mBADO;EAAgC,WACvC,CAAA,MAAA,EA0BuB,QA1BvB,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EA4BkB,6BA5BlB,EAAA,KAAA,CAAA,EA6Be,KA7Bf;EAAmB,qBA0BI,CAAA,IAAA,EAME,IANF,EAAA,SAAA,EAAA,MAAA,CAAA,EAM4B,OAN5B,CAAA,MAAA,CAAA;EAAQ,WAEb,CAAA,GAAA,EAAA,MAAA,CAAA,EAmBW,OAnBX,CAmBmB,eAnBnB,EAAA,CAAA;EAAkD,cACrD,CAAA,IAAA,EAgCS,IAhCT,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAgCqC,OAhCrC,CAAA,MAAA,CAAA;EAAK,YAGK,CAAA,MAAA,EA0DnB,eA1DmB,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA4DzB,OA5DyB,CAAA,MAAA,CAAA;EAAI,SAAsB,CAAA,MAAA,EAwE7C,eAxE6C,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA0EnD,OA1EmD,CA0E3C,iBA1E2C,CAAA;EAAO,MAerB,CAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,GAqFxB,MArFwB,EAAA,WAAA,EAAA,MAAA,CAAA,EAuFrC,OAvFqC,CAAA,IAAA,CAAA;;AAcb,aAyFhB,6BAAA;EAzFoB,iBAAwB,GAAA,oBAAA;EAAO,OA6BrD,GAAA,SAAA;EAAe,UAErB,GAAA,aAAA;EAAO,eAYD,GAAA,mBAAA;EAAe,WAEb,GAAA,eAAA;EAAiB,eAAzB,GAAA,mBAAA;EAAO,sBA0BM,GAAA,2BAAA;EAAM,gBAEnB,GAAA,oBAAA;;AA3IqD,UAsK/C,gCAAA,CAtK+C;EA2J7C,MAAA,EAAA,MAAA;EAWF,MAAA,CAAA,EAAA,MAAA;EAAgC,GAAA,CAAA,EAGnC,6BAHmC;EAAA,WAGnC,CAAA,EAAA,MAAA;EAA6B,eAK3B,CAAA,EAAA,MAAA;EAAK,QAAA,CAAA,EAAA,MAAA;;UAAL"}
@@ -1,4 +1,4 @@
1
- import { StorageProvider } from "./StorageClient-CZGIC_fz.mjs";
1
+ import { StorageProvider } from "./StorageClient-4ADnTPnJ.mjs";
2
2
  import { GetObjectCommand, ListObjectVersionsCommand, PutObjectCommand, S3Client } from "@aws-sdk/client-s3";
3
3
  import { createPresignedPost } from "@aws-sdk/s3-presigned-post";
4
4
  import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
@@ -116,4 +116,5 @@ let AmazonCannedAccessControlList = /* @__PURE__ */ function(AmazonCannedAccessC
116
116
  }({});
117
117
 
118
118
  //#endregion
119
- export { AmazonCannedAccessControlList, AmazonStorageClient };
119
+ export { AmazonCannedAccessControlList, AmazonStorageClient };
120
+ //# sourceMappingURL=AmazonStorageClient-CwUey48q.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonStorageClient-CwUey48q.mjs","names":["options: AmazonStorageClientCreateOptions","client: S3Client","bucket: string","cache?: Cache","file: File","versionId: string","key: string","params: GetUploadParams","data: string | Buffer","contentType: string"],"sources":["../src/AmazonStorageClient.ts"],"sourcesContent":["import {\n\tGetObjectCommand,\n\tListObjectVersionsCommand,\n\tPutObjectCommand,\n\tS3Client,\n} from '@aws-sdk/client-s3';\nimport { createPresignedPost } from '@aws-sdk/s3-presigned-post';\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner';\n\nimport type { Cache } from '@geekmidas/cache';\nimport {\n\ttype DocumentVersion,\n\ttype File,\n\ttype GetUploadParams,\n\ttype GetUploadResponse,\n\ttype StorageClient,\n\tStorageProvider,\n} from './StorageClient';\n\nexport class AmazonStorageClient implements StorageClient {\n\treadonly provider = StorageProvider.AWSS3;\n\n\tstatic create(\n\t\toptions: AmazonStorageClientCreateOptions,\n\t): AmazonStorageClient {\n\t\tconst {\n\t\t\tbucket,\n\t\t\tregion,\n\t\t\taccessKeyId,\n\t\t\tacl,\n\t\t\tendpoint,\n\t\t\tsecretAccessKey,\n\t\t\tforcePathStyle = false,\n\t\t\tcache,\n\t\t} = options;\n\t\tconst hasCredentials = accessKeyId && secretAccessKey;\n\t\tconst credentials = hasCredentials\n\t\t\t? { accessKeyId, secretAccessKey }\n\t\t\t: undefined;\n\n\t\tconst client = new S3Client({\n\t\t\tregion,\n\t\t\tcredentials,\n\t\t\tendpoint,\n\t\t\tforcePathStyle,\n\t\t});\n\n\t\treturn new AmazonStorageClient(client, bucket, acl, cache);\n\t}\n\tconstructor(\n\t\tprivate readonly client: S3Client,\n\t\tprivate readonly bucket: string,\n\t\tprivate readonly acl = AmazonCannedAccessControlList.AuthenticatedRead,\n\t\treadonly cache?: Cache,\n\t) {}\n\n\tgetVersionDownloadURL(file: File, versionId: string): Promise<string> {\n\t\tconst ResponseContentDisposition = file.name\n\t\t\t? `attachment; filename=${encodeURIComponent(file.name)}`\n\t\t\t: undefined;\n\n\t\tconst command = new GetObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: file.path,\n\t\t\tResponseContentDisposition,\n\t\t\tVersionId: versionId,\n\t\t});\n\n\t\treturn getSignedUrl(this.client, command, { expiresIn: 60 * 60 * 24 });\n\t}\n\n\tasync getVersions(key: string): Promise<DocumentVersion[]> {\n\t\tconst command = new ListObjectVersionsCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tPrefix: key,\n\t\t});\n\n\t\tconst { Versions = [] } = await this.client.send(command);\n\n\t\treturn Versions.map((version) => ({\n\t\t\tid: version.VersionId || '',\n\t\t\tcreatedAt: version.LastModified || new Date(),\n\t\t}));\n\t}\n\n\tasync getDownloadURL(file: File, expiresIn = 60 * 60): Promise<string> {\n\t\tconst cacheKey = `download-url:${file.path}`;\n\t\tconst cachedURL = await this.cache?.get<string>(cacheKey);\n\n\t\tif (cachedURL) {\n\t\t\treturn cachedURL;\n\t\t}\n\n\t\tconst ResponseContentDisposition = file.name\n\t\t\t? `attachment; filename=${encodeURIComponent(file.name)}`\n\t\t\t: undefined;\n\n\t\tconst command = new GetObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: file.path,\n\t\t\tResponseContentDisposition,\n\t\t});\n\n\t\tconst url = await getSignedUrl(this.client, command, { expiresIn });\n\t\tconst cacheExpiration = Math.max(expiresIn - 60, 0);\n\n\t\tif (cacheExpiration) {\n\t\t\tawait this.cache?.set(cacheKey, url, cacheExpiration);\n\t\t}\n\n\t\treturn url;\n\t}\n\n\tasync getUploadURL(\n\t\tparams: GetUploadParams,\n\t\texpiresIn = 60 * 60,\n\t): Promise<string> {\n\t\tconst command = new PutObjectCommand({\n\t\t\tBucket: this.bucket,\n\t\t\tKey: params.path,\n\t\t\tContentType: params.contentType,\n\t\t\tContentLength: params.contentLength,\n\t\t});\n\n\t\treturn getSignedUrl(this.client, command, { expiresIn });\n\t}\n\n\tasync getUpload(\n\t\tparams: GetUploadParams,\n\t\texpiresIn = 5,\n\t): Promise<GetUploadResponse> {\n\t\tconst { path } = params;\n\t\tconst { fields: values, url } = await createPresignedPost(this.client, {\n\t\t\tExpires: expiresIn * 60,\n\t\t\tBucket: this.bucket,\n\t\t\tFields: {\n\t\t\t\tacl: this.acl,\n\t\t\t},\n\t\t\tConditions: [\n\t\t\t\t// content length restrictions: 0-1MB]\n\t\t\t\t// ['content-length-range', 0, contentLength],\n\t\t\t\t// specify content-type to be more generic- images only\n\t\t\t\t// ['starts-with', '$Content-Type', 'image/'],\n\t\t\t\t// ['starts-with', '$Content-Type', contentType],\n\t\t\t],\n\t\t\tKey: path,\n\t\t});\n\n\t\tconst keys = Object.keys(values);\n\t\tconst fields = keys.map((key) => ({ key, value: values[key] || '' }));\n\n\t\treturn { url, fields };\n\t}\n\n\tasync upload(\n\t\tkey: string,\n\t\tdata: string | Buffer,\n\t\tcontentType: string,\n\t): Promise<void> {\n\t\tconst Body = typeof data === 'string' ? Buffer.from(data, 'base64') : data;\n\n\t\tconst params = {\n\t\t\tBucket: this.bucket,\n\t\t\tKey: key,\n\t\t\tBody,\n\t\t\tContentType: contentType,\n\t\t};\n\n\t\tconst command = new PutObjectCommand(params);\n\n\t\tawait this.client.send(command);\n\t}\n}\n\nexport enum AmazonCannedAccessControlList {\n\tAuthenticatedRead = 'authenticated-read',\n\tPrivate = 'private',\n\tPublicRead = 'public-read',\n\tPublicReadWrite = 'public-read-write',\n\tAwsExecRead = 'aws-exec-read',\n\tBucketOwnerRead = 'bucket-owner-read',\n\tBucketOwnerFullControl = 'bucket-owner-full-control',\n\tLogDeliveryWrite = 'log-delivery-write',\n}\n\ninterface AmazonStorageClientCreateOptions {\n\tbucket: string;\n\tregion?: string;\n\tacl?: AmazonCannedAccessControlList;\n\taccessKeyId?: string;\n\tsecretAccessKey?: string;\n\tendpoint?: string;\n\tforcePathStyle?: boolean;\n\tcache?: Cache;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider } from "./StorageClient-CcOAW3YV.cjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider } from "./StorageClient-BWS26EEf.cjs";
2
2
  import { S3Client } from "@aws-sdk/client-s3";
3
3
  import { Cache } from "@geekmidas/cache";
4
4
 
@@ -7,10 +7,10 @@ declare class AmazonStorageClient implements StorageClient {
7
7
  private readonly client;
8
8
  private readonly bucket;
9
9
  private readonly acl;
10
- readonly cache?: Cache<string>;
10
+ readonly cache?: Cache;
11
11
  readonly provider = StorageProvider.AWSS3;
12
12
  static create(options: AmazonStorageClientCreateOptions): AmazonStorageClient;
13
- constructor(client: S3Client, bucket: string, acl?: AmazonCannedAccessControlList, cache?: Cache<string>);
13
+ constructor(client: S3Client, bucket: string, acl?: AmazonCannedAccessControlList, cache?: Cache);
14
14
  getVersionDownloadURL(file: File, versionId: string): Promise<string>;
15
15
  getVersions(key: string): Promise<DocumentVersion[]>;
16
16
  getDownloadURL(file: File, expiresIn?: number): Promise<string>;
@@ -36,7 +36,8 @@ interface AmazonStorageClientCreateOptions {
36
36
  secretAccessKey?: string;
37
37
  endpoint?: string;
38
38
  forcePathStyle?: boolean;
39
- cache?: Cache<string>;
39
+ cache?: Cache;
40
40
  }
41
41
  //#endregion
42
- export { AmazonCannedAccessControlList, AmazonStorageClient };
42
+ export { AmazonCannedAccessControlList, AmazonStorageClient };
43
+ //# sourceMappingURL=AmazonStorageClient-DxT8_gTZ.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmazonStorageClient-DxT8_gTZ.d.cts","names":[],"sources":["../src/AmazonStorageClient.ts"],"sourcesContent":[],"mappings":";;;;;cAmBa,mBAAA,YAA+B;;EAA/B,iBAAA,MAAoB;EAAA,iBAAA,GAAA;EAAA,SAkCd,KAAA,CAAA,EAAA,KAAA;EAAK,SAjCN,QAAA,GAAA,eAAA,CAAA,KAAA;EAAA,OAGP,MAAA,CAAA,OAAA,EAAA,gCAAA,CAAA,EACP,mBADO;EAAgC,WACvC,CAAA,MAAA,EA0BuB,QA1BvB,EAAA,MAAA,EAAA,MAAA,EAAA,GAAA,CAAA,EA4BkB,6BA5BlB,EAAA,KAAA,CAAA,EA6Be,KA7Bf;EAAmB,qBA0BI,CAAA,IAAA,EAME,IANF,EAAA,SAAA,EAAA,MAAA,CAAA,EAM4B,OAN5B,CAAA,MAAA,CAAA;EAAQ,WAEb,CAAA,GAAA,EAAA,MAAA,CAAA,EAmBW,OAnBX,CAmBmB,eAnBnB,EAAA,CAAA;EAAkD,cACrD,CAAA,IAAA,EAgCS,IAhCT,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EAgCqC,OAhCrC,CAAA,MAAA,CAAA;EAAK,YAGK,CAAA,MAAA,EA0DnB,eA1DmB,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA4DzB,OA5DyB,CAAA,MAAA,CAAA;EAAI,SAAsB,CAAA,MAAA,EAwE7C,eAxE6C,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA0EnD,OA1EmD,CA0E3C,iBA1E2C,CAAA;EAAO,MAerB,CAAA,GAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,GAqFxB,MArFwB,EAAA,WAAA,EAAA,MAAA,CAAA,EAuFrC,OAvFqC,CAAA,IAAA,CAAA;;AAcb,aAyFhB,6BAAA;EAzFoB,iBAAwB,GAAA,oBAAA;EAAO,OA6BrD,GAAA,SAAA;EAAe,UAErB,GAAA,aAAA;EAAO,eAYD,GAAA,mBAAA;EAAe,WAEb,GAAA,eAAA;EAAiB,eAAzB,GAAA,mBAAA;EAAO,sBA0BM,GAAA,2BAAA;EAAM,gBAEnB,GAAA,oBAAA;;AA3IqD,UAsK/C,gCAAA,CAtK+C;EA2J7C,MAAA,EAAA,MAAA;EAWF,MAAA,CAAA,EAAA,MAAA;EAAgC,GAAA,CAAA,EAGnC,6BAHmC;EAAA,WAGnC,CAAA,EAAA,MAAA;EAA6B,eAK3B,CAAA,EAAA,MAAA;EAAK,QAAA,CAAA,EAAA,MAAA;;UAAL"}
@@ -1,5 +1,5 @@
1
+ const require_AmazonStorageClient = require('./AmazonStorageClient-BKzXhCX0.cjs');
1
2
  require('./StorageClient-BDRVrMJj.cjs');
2
- const require_AmazonStorageClient = require('./AmazonStorageClient-tyGekctm.cjs');
3
3
 
4
4
  exports.AmazonCannedAccessControlList = require_AmazonStorageClient.AmazonCannedAccessControlList;
5
5
  exports.AmazonStorageClient = require_AmazonStorageClient.AmazonStorageClient;
@@ -1,3 +1,3 @@
1
- import "./StorageClient-CcOAW3YV.cjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-aduVU3_p.cjs";
1
+ import "./StorageClient-BWS26EEf.cjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-DxT8_gTZ.cjs";
3
3
  export { AmazonCannedAccessControlList, AmazonStorageClient };
@@ -1,3 +1,3 @@
1
- import "./StorageClient-CveQoxJa.mjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-DaktozmE.mjs";
1
+ import "./StorageClient-VG7Thpke.mjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-Bc_LP3K6.mjs";
3
3
  export { AmazonCannedAccessControlList, AmazonStorageClient };
@@ -1,4 +1,4 @@
1
- import "./StorageClient-CZGIC_fz.mjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-Bkw-x2o2.mjs";
1
+ import "./StorageClient-4ADnTPnJ.mjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-CwUey48q.mjs";
3
3
 
4
4
  export { AmazonCannedAccessControlList, AmazonStorageClient };
@@ -7,4 +7,5 @@ let StorageProvider = /* @__PURE__ */ function(StorageProvider$1) {
7
7
  }({});
8
8
 
9
9
  //#endregion
10
- export { StorageProvider };
10
+ export { StorageProvider };
11
+ //# sourceMappingURL=StorageClient-4ADnTPnJ.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageClient-4ADnTPnJ.mjs","names":[],"sources":["../src/StorageClient.ts"],"sourcesContent":["import type { Cache } from '@geekmidas/cache';\nexport interface DocumentVersion {\n\tid: string;\n\tcreatedAt: Date;\n}\n\nexport enum StorageProvider {\n\tAWSS3 = 'geekimdas.toolbox.storage.aws.s3',\n\tGCP = 'geekimdas.toolbox.storage.gcp',\n\tAZURE = 'geekimdas.toolbox.storage.azure',\n}\n\nexport interface StorageClient {\n\treadonly provider: StorageProvider;\n\treadonly cache?: Cache;\n\t/**\n\t * Get a URL to upload a file to.\n\t *\n\t * @param params - The parameters to get the upload URL for.\n\t * @param expiresIn - The number of minutes the URL should be valid for.\n\t * Defaults to 60 * 60 (1 hour).\n\t * @returns A promise that resolves to the upload URL.\n\t */\n\tgetUploadURL(params: GetUploadParams, expiresIn?: number): Promise<string>;\n\n\t/**\n\t * Get a URL to download a file from.\n\t *\n\t * @param file - The file to get the download URL for.\n\t * @param expiresIn - The number of seconds the URL should be valid for.\n\t * Defaults to 60 * 60 (1 hour).\n\t * @returns A promise that resolves to the download URL.\n\t */\n\tgetDownloadURL(file: File, expiresIn?: number): Promise<string>;\n\t/**\n\t * Get the versions for a key.\n\t *\n\t * @param key - The key to get the versions for.\n\t */\n\tgetVersions(key: string): Promise<DocumentVersion[]>;\n\n\t/**\n\t * Get a URL to download a version of a file from.\n\t *\n\t * @param file - The file to get the download URL for.\n\t * @param versionId - The version ID to get the download URL for.\n\t */\n\tgetVersionDownloadURL(file: File, versionId: string): Promise<string>;\n\t/**\n\t *\n\t * @param key - The key to upload the file to.\n\t * @param data - The data to upload.\n\t * @param contentType - The content type of the data.\n\t */\n\tupload(\n\t\tkey: string,\n\t\tdata: string | Buffer,\n\t\tcontentType: string,\n\t): Promise<void>;\n\t/**\n\t * Get a URL to upload a file to.\n\t *\n\t * @param params - The parameters to get the upload URL for.\n\t * @param expiresIn - The number of minutes the URL should be valid for.\n\t */\n\tgetUpload(\n\t\tparams: GetUploadParams,\n\t\texpiresIn?: number,\n\t): Promise<GetUploadResponse>;\n}\n\nexport interface GetUploadParams {\n\tpath: string;\n\tcontentType: string;\n\tcontentLength: number;\n}\n\nexport type UploadField = {\n\tkey: string;\n\tvalue: string;\n};\n\nexport type GetUploadResponse = {\n\turl: string;\n\tfields: UploadField[];\n};\n\nexport interface File {\n\tname?: string;\n\tpath: string;\n}\n"],"mappings":";AAMA,IAAY,8DAAL;AACN;AACA;AACA;;AACA"}
@@ -13,4 +13,5 @@ Object.defineProperty(exports, 'StorageProvider', {
13
13
  get: function () {
14
14
  return StorageProvider;
15
15
  }
16
- });
16
+ });
17
+ //# sourceMappingURL=StorageClient-BDRVrMJj.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageClient-BDRVrMJj.cjs","names":[],"sources":["../src/StorageClient.ts"],"sourcesContent":["import type { Cache } from '@geekmidas/cache';\nexport interface DocumentVersion {\n\tid: string;\n\tcreatedAt: Date;\n}\n\nexport enum StorageProvider {\n\tAWSS3 = 'geekimdas.toolbox.storage.aws.s3',\n\tGCP = 'geekimdas.toolbox.storage.gcp',\n\tAZURE = 'geekimdas.toolbox.storage.azure',\n}\n\nexport interface StorageClient {\n\treadonly provider: StorageProvider;\n\treadonly cache?: Cache;\n\t/**\n\t * Get a URL to upload a file to.\n\t *\n\t * @param params - The parameters to get the upload URL for.\n\t * @param expiresIn - The number of minutes the URL should be valid for.\n\t * Defaults to 60 * 60 (1 hour).\n\t * @returns A promise that resolves to the upload URL.\n\t */\n\tgetUploadURL(params: GetUploadParams, expiresIn?: number): Promise<string>;\n\n\t/**\n\t * Get a URL to download a file from.\n\t *\n\t * @param file - The file to get the download URL for.\n\t * @param expiresIn - The number of seconds the URL should be valid for.\n\t * Defaults to 60 * 60 (1 hour).\n\t * @returns A promise that resolves to the download URL.\n\t */\n\tgetDownloadURL(file: File, expiresIn?: number): Promise<string>;\n\t/**\n\t * Get the versions for a key.\n\t *\n\t * @param key - The key to get the versions for.\n\t */\n\tgetVersions(key: string): Promise<DocumentVersion[]>;\n\n\t/**\n\t * Get a URL to download a version of a file from.\n\t *\n\t * @param file - The file to get the download URL for.\n\t * @param versionId - The version ID to get the download URL for.\n\t */\n\tgetVersionDownloadURL(file: File, versionId: string): Promise<string>;\n\t/**\n\t *\n\t * @param key - The key to upload the file to.\n\t * @param data - The data to upload.\n\t * @param contentType - The content type of the data.\n\t */\n\tupload(\n\t\tkey: string,\n\t\tdata: string | Buffer,\n\t\tcontentType: string,\n\t): Promise<void>;\n\t/**\n\t * Get a URL to upload a file to.\n\t *\n\t * @param params - The parameters to get the upload URL for.\n\t * @param expiresIn - The number of minutes the URL should be valid for.\n\t */\n\tgetUpload(\n\t\tparams: GetUploadParams,\n\t\texpiresIn?: number,\n\t): Promise<GetUploadResponse>;\n}\n\nexport interface GetUploadParams {\n\tpath: string;\n\tcontentType: string;\n\tcontentLength: number;\n}\n\nexport type UploadField = {\n\tkey: string;\n\tvalue: string;\n};\n\nexport type GetUploadResponse = {\n\turl: string;\n\tfields: UploadField[];\n};\n\nexport interface File {\n\tname?: string;\n\tpath: string;\n}\n"],"mappings":";;AAMA,IAAY,8DAAL;AACN;AACA;AACA;;AACA"}
@@ -12,7 +12,7 @@ declare enum StorageProvider {
12
12
  }
13
13
  interface StorageClient {
14
14
  readonly provider: StorageProvider;
15
- readonly cache?: Cache<string>;
15
+ readonly cache?: Cache;
16
16
  /**
17
17
  * Get a URL to upload a file to.
18
18
  *
@@ -76,5 +76,7 @@ interface File {
76
76
  name?: string;
77
77
  path: string;
78
78
  }
79
+ //# sourceMappingURL=StorageClient.d.ts.map
79
80
  //#endregion
80
- export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
81
+ export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
82
+ //# sourceMappingURL=StorageClient-BWS26EEf.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageClient-BWS26EEf.d.cts","names":[],"sources":["../src/StorageClient.ts"],"sourcesContent":[],"mappings":";;;UACiB,eAAA;;EAAA,SAAA,EAEL,IAFK;AAKjB;AAMiB,aANL,eAAA;EAMkB,KAAA,GAAA,kCAAA;EAAA,GACV,GAAA,+BAAA;EAAe,KACjB,GAAA,iCAAA;;AAS0C,UAX3C,aAAA,CAW2C;EAAO,SAU7C,QAAA,EApBF,eAoBE;EAAI,SAAuB,KAAA,CAAA,EAnB/B,KAmB+B;EAAO;;;;;;;;EAmC3B,YAAzB,CAAA,MAAA,EA7CkB,eA6ClB,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA7CwD,OA6CxD,CAAA,MAAA,CAAA;EAAO;AAGX;AAMA;AAKA;AAKA;;;;uBAtDsB,2BAA2B;;;;;;4BAMtB,QAAQ;;;;;;;8BAQN,0BAA0B;;;;;;;qCAStC,8BAEb;;;;;;;oBAQM,sCAEN,QAAQ;;UAGK,eAAA;;;;;KAML,WAAA;;;;KAKA,iBAAA;;UAEH;;UAGQ,IAAA"}
@@ -12,7 +12,7 @@ declare enum StorageProvider {
12
12
  }
13
13
  interface StorageClient {
14
14
  readonly provider: StorageProvider;
15
- readonly cache?: Cache<string>;
15
+ readonly cache?: Cache;
16
16
  /**
17
17
  * Get a URL to upload a file to.
18
18
  *
@@ -76,5 +76,7 @@ interface File {
76
76
  name?: string;
77
77
  path: string;
78
78
  }
79
+ //# sourceMappingURL=StorageClient.d.ts.map
79
80
  //#endregion
80
- export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
81
+ export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
82
+ //# sourceMappingURL=StorageClient-VG7Thpke.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageClient-VG7Thpke.d.mts","names":[],"sources":["../src/StorageClient.ts"],"sourcesContent":[],"mappings":";;;UACiB,eAAA;;EAAA,SAAA,EAEL,IAFK;AAKjB;AAMiB,aANL,eAAA;EAMkB,KAAA,GAAA,kCAAA;EAAA,GACV,GAAA,+BAAA;EAAe,KACjB,GAAA,iCAAA;;AAS0C,UAX3C,aAAA,CAW2C;EAAO,SAU7C,QAAA,EApBF,eAoBE;EAAI,SAAuB,KAAA,CAAA,EAnB/B,KAmB+B;EAAO;;;;;;;;EAmC3B,YAAzB,CAAA,MAAA,EA7CkB,eA6ClB,EAAA,SAAA,CAAA,EAAA,MAAA,CAAA,EA7CwD,OA6CxD,CAAA,MAAA,CAAA;EAAO;AAGX;AAMA;AAKA;AAKA;;;;uBAtDsB,2BAA2B;;;;;;4BAMtB,QAAQ;;;;;;;8BAQN,0BAA0B;;;;;;;qCAStC,8BAEb;;;;;;;oBAQM,sCAEN,QAAQ;;UAGK,eAAA;;;;;KAML,WAAA;;;;KAKA,iBAAA;;UAEH;;UAGQ,IAAA"}
@@ -1,2 +1,2 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField } from "./StorageClient-CcOAW3YV.cjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField } from "./StorageClient-BWS26EEf.cjs";
2
2
  export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
@@ -1,2 +1,2 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField } from "./StorageClient-CveQoxJa.mjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField } from "./StorageClient-VG7Thpke.mjs";
2
2
  export { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient, StorageProvider, UploadField };
@@ -1,3 +1,3 @@
1
- import { StorageProvider } from "./StorageClient-CZGIC_fz.mjs";
1
+ import { StorageProvider } from "./StorageClient-4ADnTPnJ.mjs";
2
2
 
3
3
  export { StorageProvider };
package/dist/aws.cjs CHANGED
@@ -1,5 +1,5 @@
1
+ const require_AmazonStorageClient = require('./AmazonStorageClient-BKzXhCX0.cjs');
1
2
  require('./StorageClient-BDRVrMJj.cjs');
2
- const require_AmazonStorageClient = require('./AmazonStorageClient-tyGekctm.cjs');
3
3
 
4
4
  exports.AmazonCannedAccessControlList = require_AmazonStorageClient.AmazonCannedAccessControlList;
5
5
  exports.AmazonStorageClient = require_AmazonStorageClient.AmazonStorageClient;
package/dist/aws.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient } from "./StorageClient-CcOAW3YV.cjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-aduVU3_p.cjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient } from "./StorageClient-BWS26EEf.cjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-DxT8_gTZ.cjs";
3
3
  export { AmazonCannedAccessControlList, AmazonStorageClient, DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient };
package/dist/aws.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient } from "./StorageClient-CveQoxJa.mjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-DaktozmE.mjs";
1
+ import { DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient } from "./StorageClient-VG7Thpke.mjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-Bc_LP3K6.mjs";
3
3
  export { AmazonCannedAccessControlList, AmazonStorageClient, DocumentVersion, File, GetUploadParams, GetUploadResponse, StorageClient };
package/dist/aws.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import "./StorageClient-CZGIC_fz.mjs";
2
- import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-Bkw-x2o2.mjs";
1
+ import "./StorageClient-4ADnTPnJ.mjs";
2
+ import { AmazonCannedAccessControlList, AmazonStorageClient } from "./AmazonStorageClient-CwUey48q.mjs";
3
3
 
4
4
  export { AmazonCannedAccessControlList, AmazonStorageClient };
package/dist/index.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { StorageClient } from "./StorageClient-CcOAW3YV.cjs";
1
+ import { StorageClient } from "./StorageClient-BWS26EEf.cjs";
2
2
  export { StorageClient };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { StorageClient } from "./StorageClient-CveQoxJa.mjs";
1
+ import { StorageClient } from "./StorageClient-VG7Thpke.mjs";
2
2
  export { StorageClient };
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@geekmidas/storage",
3
- "version": "0.0.5",
3
+ "version": "1.0.0",
4
4
  "private": false,
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/geekmidas/toolbox"
8
+ },
5
9
  "publishConfig": {
6
10
  "registry": "https://registry.npmjs.org/",
7
11
  "access": "public"
@@ -19,14 +23,33 @@
19
23
  "require": "./dist/index.cjs"
20
24
  }
21
25
  },
22
- "dependencies": {
23
- "@geekmidas/cache": "0.0.7"
24
- },
26
+ "dependencies": {},
25
27
  "peerDependencies": {
26
- "zod": "~3.25.67",
28
+ "zod": "~4.1.13",
27
29
  "@aws-sdk/client-s3": "~3.844.0",
28
30
  "@aws-sdk/s3-presigned-post": "^3.844.0",
29
- "@aws-sdk/s3-request-presigner": "~3.844.0"
31
+ "@aws-sdk/s3-request-presigner": "~3.844.0",
32
+ "@geekmidas/cache": "^1.0.0"
33
+ },
34
+ "peerDependenciesMeta": {
35
+ "@geekmidas/cache": {
36
+ "optional": true
37
+ },
38
+ "zod": {
39
+ "optional": true
40
+ },
41
+ "@aws-sdk/client-s3": {
42
+ "optional": true
43
+ },
44
+ "@aws-sdk/s3-presigned-post": {
45
+ "optional": true
46
+ },
47
+ "@aws-sdk/s3-request-presigner": {
48
+ "optional": true
49
+ }
50
+ },
51
+ "devDependencies": {
52
+ "@geekmidas/cache": "^1.0.0"
30
53
  },
31
54
  "scripts": {}
32
55
  }