diff --git a/package-lock.json b/package-lock.json index 51dd848..679ed2e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "medusa-storage-supabase", - "version": "0.1.1", + "version": "0.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "medusa-storage-supabase", - "version": "0.1.1", + "version": "0.1.2", "license": "GPL-3.0-only", "dependencies": { "@medusajs/admin": "7.1.10", @@ -20191,17 +20191,6 @@ "node": ">= 14.0.0" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -23758,6 +23747,17 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/package.json b/package.json index 184e1fb..87c8c23 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "medusa-storage-supabase", - "version": "0.1.1", + "version": "0.1.2", "description": "A plugin to store files in supabase.", "author": "bernix01 ", "license": "GPL-3.0-only", diff --git a/src/services/supabase.ts b/src/services/supabase.ts index 9b0160b..490d817 100644 --- a/src/services/supabase.ts +++ b/src/services/supabase.ts @@ -9,6 +9,7 @@ import { import { StorageClient } from "@supabase/storage-js"; import { randomUUID } from "crypto"; import { createReadStream } from "fs"; +import { PassThrough } from "stream"; class SupabaseFileService extends AbstractFileService { logger: Logger; @@ -104,7 +105,22 @@ class SupabaseFileService extends AbstractFileService { async getUploadStreamDescriptor( fileData: UploadStreamDescriptorType ): Promise { - throw new Error("Method not implemented."); + const pass = new PassThrough(); + const key = fileData.isPrivate + ? `private/${randomUUID()}.${fileData.ext}` + : `public/${randomUUID()}.${fileData.ext}`; + + const promise = this.storageClient.from(this.bucket).upload(key, pass, { + contentType: fileData.contentType as string, + duplex: "half", + }); + + return { + writeStream: pass, + promise, + url: `${this.storageUrl}/${this.bucket}/${key}`, + fileKey: key, + }; } async getDownloadStream(