@etohq/file 1.4.0 → 1.5.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.
@@ -1,4 +1,5 @@
1
- import { Context, CreateFileDTO, FileDTO, FileTypes, FilterableFileProps, FindConfig, ModuleJoinerConfig } from "@etohq/framework/types";
1
+ import type { Readable } from "stream";
2
+ import { Context, CreateFileDTO, GetUploadFileUrlDTO, FileDTO, UploadFileUrlDTO, FileTypes, FilterableFileProps, FindConfig, ModuleJoinerConfig } from "@etohq/framework/types";
2
3
  import FileProviderService from "./file-provider-service";
3
4
  type InjectedDependencies = {
4
5
  fileProviderService: FileProviderService;
@@ -7,13 +8,32 @@ export default class FileModuleService implements FileTypes.IFileModuleService {
7
8
  protected readonly fileProviderService_: FileProviderService;
8
9
  constructor({ fileProviderService }: InjectedDependencies);
9
10
  __joinerConfig(): ModuleJoinerConfig;
11
+ getProvider(): FileProviderService;
10
12
  createFiles(data: CreateFileDTO[], sharedContext?: Context): Promise<FileDTO[]>;
11
13
  createFiles(data: CreateFileDTO, sharedContext?: Context): Promise<FileDTO>;
14
+ getUploadFileUrls(data: GetUploadFileUrlDTO[], sharedContext?: Context): Promise<UploadFileUrlDTO[]>;
15
+ getUploadFileUrls(data: GetUploadFileUrlDTO, sharedContext?: Context): Promise<UploadFileUrlDTO>;
12
16
  deleteFiles(ids: string[], sharedContext?: Context): Promise<void>;
13
17
  deleteFiles(id: string, sharedContext?: Context): Promise<void>;
14
18
  retrieveFile(id: string): Promise<FileDTO>;
15
19
  listFiles(filters?: FilterableFileProps, config?: FindConfig<FileDTO>, sharedContext?: Context): Promise<FileDTO[]>;
16
20
  listAndCountFiles(filters?: FilterableFileProps, config?: FindConfig<FileDTO>, sharedContext?: Context): Promise<[FileDTO[], number]>;
21
+ /**
22
+ * Get the file contents as a readable stream.
23
+ *
24
+ * @example
25
+ * const stream = await fileModuleService.getAsStream("file_123")
26
+ * writeable.pipe(stream)
27
+ */
28
+ getDownloadStream(id: string): Promise<Readable>;
29
+ /**
30
+ * Get the file contents as a Node.js Buffer
31
+ *
32
+ * @example
33
+ * const contents = await fileModuleService.getAsBuffer("file_123")
34
+ * contents.toString('utf-8')
35
+ */
36
+ getAsBuffer(id: string): Promise<Buffer>;
17
37
  }
18
38
  export {};
19
39
  //# sourceMappingURL=file-module-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-module-service.d.ts","sourceRoot":"","sources":["../../src/services/file-module-service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,aAAa,EACb,OAAO,EACP,SAAS,EACT,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,mBAAmB,MAAM,yBAAyB,CAAA;AAGzD,KAAK,oBAAoB,GAAG;IAC1B,mBAAmB,EAAE,mBAAmB,CAAA;CACzC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,SAAS,CAAC,kBAAkB;IAC5E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAA;gBAChD,EAAE,mBAAmB,EAAE,EAAE,oBAAoB;IAIzD,cAAc,IAAI,kBAAkB;IAIpC,WAAW,CACT,IAAI,EAAE,aAAa,EAAE,EACrB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;IACrB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAmBrE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,SAAS,CACb,OAAO,CAAC,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;IAyBf,iBAAiB,CACrB,OAAO,CAAC,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;CA2BhC"}
1
+ {"version":3,"file":"file-module-service.d.ts","sourceRoot":"","sources":["../../src/services/file-module-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EACL,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EACnB,MAAM,wBAAwB,CAAA;AAG/B,OAAO,mBAAmB,MAAM,yBAAyB,CAAA;AAGzD,KAAK,oBAAoB,GAAG;IAC1B,mBAAmB,EAAE,mBAAmB,CAAA;CACzC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,SAAS,CAAC,kBAAkB;IAC5E,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,CAAA;gBAChD,EAAE,mBAAmB,EAAE,EAAE,oBAAoB;IAIzD,cAAc,IAAI,kBAAkB;IAIpC,WAAW;IAIX,WAAW,CACT,IAAI,EAAE,aAAa,EAAE,EACrB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;IACrB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3E,iBAAiB,CACf,IAAI,EAAE,mBAAmB,EAAE,EAC3B,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAC9B,iBAAiB,CACf,IAAI,EAAE,mBAAmB,EACzB,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,gBAAgB,CAAC;IActB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAClE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/D,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,SAAS,CACb,OAAO,CAAC,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,OAAO,EAAE,CAAC;IAsBf,iBAAiB,CACrB,OAAO,CAAC,EAAE,mBAAmB,EAC7B,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,EAC5B,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;IAsB/B;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhD;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGzC"}
@@ -9,6 +9,9 @@ class FileModuleService {
9
9
  __joinerConfig() {
10
10
  return joiner_config_1.joinerConfig;
11
11
  }
12
+ getProvider() {
13
+ return this.fileProviderService_;
14
+ }
12
15
  async createFiles(data) {
13
16
  const input = Array.isArray(data) ? data : [data];
14
17
  // TODO: Validate file mime type, have config for allowed types
@@ -19,10 +22,16 @@ class FileModuleService {
19
22
  }));
20
23
  return Array.isArray(data) ? result : result[0];
21
24
  }
25
+ async getUploadFileUrls(data) {
26
+ const input = Array.isArray(data) ? data : [data];
27
+ const result = await Promise.all(input.map((file) => this.fileProviderService_.getPresignedUploadUrl(file)));
28
+ return Array.isArray(data) ? result : result[0];
29
+ }
22
30
  async deleteFiles(ids) {
23
31
  const input = Array.isArray(ids) ? ids : [ids];
24
- await Promise.all(input.map((id) => this.fileProviderService_.delete({ fileKey: id })));
25
- return;
32
+ await this.fileProviderService_.delete(input.map((id) => {
33
+ return { fileKey: id };
34
+ }));
26
35
  }
27
36
  async retrieveFile(id) {
28
37
  const res = await this.fileProviderService_.getPresignedDownloadUrl({
@@ -34,43 +43,50 @@ class FileModuleService {
34
43
  };
35
44
  }
36
45
  async listFiles(filters, config, sharedContext) {
37
- const id = Array.isArray(filters?.id) ? filters?.id?.[0] : filters?.id;
38
- if (!id) {
46
+ if (!filters?.id) {
39
47
  throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "Listing of files is only supported when filtering by ID.");
40
48
  }
41
- const res = await this.fileProviderService_.getPresignedDownloadUrl({
42
- fileKey: id,
43
- });
44
- if (!res) {
45
- return [];
46
- }
47
- return [
48
- {
49
- id,
50
- url: res,
51
- },
52
- ];
49
+ const ids = Array.isArray(filters?.id) ? filters?.id : [filters?.id];
50
+ const res = await Promise.all(ids.map(async (id) => {
51
+ const res = await this.fileProviderService_.getPresignedDownloadUrl({
52
+ fileKey: id,
53
+ });
54
+ return { id, url: res };
55
+ }));
56
+ return res;
53
57
  }
54
58
  async listAndCountFiles(filters, config, sharedContext) {
55
- const id = Array.isArray(filters?.id) ? filters?.id?.[0] : filters?.id;
56
- if (!id) {
57
- throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "Listing and counting of files is only supported when filtering by ID.");
58
- }
59
- const res = await this.fileProviderService_.getPresignedDownloadUrl({
60
- fileKey: id,
61
- });
62
- if (!res) {
63
- return [[], 0];
59
+ if (!filters?.id) {
60
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "Listing of files is only supported when filtering by ID.");
64
61
  }
65
- return [
66
- [
67
- {
68
- id,
69
- url: res,
70
- },
71
- ],
72
- 1,
73
- ];
62
+ const ids = Array.isArray(filters?.id) ? filters?.id : [filters?.id];
63
+ const res = await Promise.all(ids.map(async (id) => {
64
+ const res = await this.fileProviderService_.getPresignedDownloadUrl({
65
+ fileKey: id,
66
+ });
67
+ return { id, url: res };
68
+ }));
69
+ return [res, res.length];
70
+ }
71
+ /**
72
+ * Get the file contents as a readable stream.
73
+ *
74
+ * @example
75
+ * const stream = await fileModuleService.getAsStream("file_123")
76
+ * writeable.pipe(stream)
77
+ */
78
+ getDownloadStream(id) {
79
+ return this.fileProviderService_.getDownloadStream({ fileKey: id });
80
+ }
81
+ /**
82
+ * Get the file contents as a Node.js Buffer
83
+ *
84
+ * @example
85
+ * const contents = await fileModuleService.getAsBuffer("file_123")
86
+ * contents.toString('utf-8')
87
+ */
88
+ getAsBuffer(id) {
89
+ return this.fileProviderService_.getAsBuffer({ fileKey: id });
74
90
  }
75
91
  }
76
92
  exports.default = FileModuleService;
@@ -1 +1 @@
1
- {"version":3,"file":"file-module-service.js","sourceRoot":"","sources":["../../src/services/file-module-service.ts"],"names":[],"mappings":";;AAUA,oDAA+C;AAE/C,kDAAiD;AAMjD,MAAqB,iBAAiB;IAEpC,YAAY,EAAE,mBAAmB,EAAwB;QACvD,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAA;IACjD,CAAC;IAED,cAAc;QACZ,OAAO,4BAAY,CAAA;IACrB,CAAC;IAQD,KAAK,CAAC,WAAW,CACf,IAAqC;QAErC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACjD,+DAA+D;QAE/D,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAC5D,CAAA;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClC,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC,CAAA;QAEH,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACjD,CAAC;IAID,KAAK,CAAC,WAAW,CAAC,GAAsB;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC9C,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CACrE,CAAA;QAED,OAAM;IACR,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;YAClE,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;QAEF,OAAO;YACL,EAAE;YACF,GAAG,EAAE,GAAG;SACT,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAA6B,EAC7B,MAA4B,EAC5B,aAAuB;QAEvB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;QACtE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,0DAA0D,CAC3D,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;YAClE,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO;YACL;gBACE,EAAE;gBACF,GAAG,EAAE,GAAG;aACT;SACF,CAAA;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAA6B,EAC7B,MAA4B,EAC5B,aAAuB;QAEvB,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAA;QACtE,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,uEAAuE,CACxE,CAAA;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;YAClE,OAAO,EAAE,EAAE;SACZ,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAChB,CAAC;QAED,OAAO;YACL;gBACE;oBACE,EAAE;oBACF,GAAG,EAAE,GAAG;iBACT;aACF;YACD,CAAC;SACF,CAAA;IACH,CAAC;CACF;AAnHD,oCAmHC"}
1
+ {"version":3,"file":"file-module-service.js","sourceRoot":"","sources":["../../src/services/file-module-service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Readable } from "stream";
1
2
  import { Constructor, FileTypes } from "@etohq/framework/types";
2
3
  import { FileProviderRegistrationPrefix } from "../types";
3
4
  type InjectedDependencies = {
@@ -8,8 +9,11 @@ export default class FileProviderService {
8
9
  constructor(container: InjectedDependencies);
9
10
  static getRegistrationIdentifier(providerClass: Constructor<FileTypes.IFileProvider>, optionName?: string): string;
10
11
  upload(file: FileTypes.ProviderUploadFileDTO): Promise<FileTypes.ProviderFileResultDTO>;
11
- delete(fileData: FileTypes.ProviderDeleteFileDTO): Promise<void>;
12
+ delete(fileData: FileTypes.ProviderDeleteFileDTO | FileTypes.ProviderDeleteFileDTO[]): Promise<void>;
12
13
  getPresignedDownloadUrl(fileData: FileTypes.ProviderGetFileDTO): Promise<string>;
14
+ getPresignedUploadUrl(fileData: FileTypes.ProviderGetPresignedUploadUrlDTO): Promise<FileTypes.ProviderFileResultDTO>;
15
+ getDownloadStream(fileData: FileTypes.ProviderGetFileDTO): Promise<Readable>;
16
+ getAsBuffer(fileData: FileTypes.ProviderGetFileDTO): Promise<Buffer>;
13
17
  }
14
18
  export {};
15
19
  //# sourceMappingURL=file-provider-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-provider-service.d.ts","sourceRoot":"","sources":["../../src/services/file-provider-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AAEvD,KAAK,oBAAoB,GAAG;IAC1B,CACE,GAAG,EAAE,GAAG,OAAO,8BAA8B,GAAG,MAAM,EAAE,GACvD,SAAS,CAAC,aAAa,CAAA;CAC3B,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAA;gBAE7C,SAAS,EAAE,oBAAoB;IAe3C,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,EACnD,UAAU,CAAC,EAAE,MAAM;IAKrB,MAAM,CACJ,IAAI,EAAE,SAAS,CAAC,qBAAqB,GACpC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAI3C,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,uBAAuB,CACrB,QAAQ,EAAE,SAAS,CAAC,kBAAkB,GACrC,OAAO,CAAC,MAAM,CAAC;CAGnB"}
1
+ {"version":3,"file":"file-provider-service.d.ts","sourceRoot":"","sources":["../../src/services/file-provider-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAE/D,OAAO,EAAE,8BAA8B,EAAE,MAAM,QAAQ,CAAA;AAEvD,KAAK,oBAAoB,GAAG;IAC1B,CACE,GAAG,EAAE,GAAG,OAAO,8BAA8B,GAAG,MAAM,EAAE,GACvD,SAAS,CAAC,aAAa,CAAA;CAC3B,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,mBAAmB;IACtC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,aAAa,CAAA;gBAE7C,SAAS,EAAE,oBAAoB;IAe3C,MAAM,CAAC,yBAAyB,CAC9B,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,EACnD,UAAU,CAAC,EAAE,MAAM;IAKrB,MAAM,CACJ,IAAI,EAAE,SAAS,CAAC,qBAAqB,GACpC,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAI3C,MAAM,CACJ,QAAQ,EACJ,SAAS,CAAC,qBAAqB,GAC/B,SAAS,CAAC,qBAAqB,EAAE,GACpC,OAAO,CAAC,IAAI,CAAC;IAIhB,uBAAuB,CACrB,QAAQ,EAAE,SAAS,CAAC,kBAAkB,GACrC,OAAO,CAAC,MAAM,CAAC;IAIlB,qBAAqB,CACnB,QAAQ,EAAE,SAAS,CAAC,gCAAgC,GACnD,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;IAkB3C,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAI5E,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;CAGrE"}
@@ -22,6 +22,21 @@ class FileProviderService {
22
22
  getPresignedDownloadUrl(fileData) {
23
23
  return this.fileProvider_.getPresignedDownloadUrl(fileData);
24
24
  }
25
+ getPresignedUploadUrl(fileData) {
26
+ if (!this.fileProvider_.getPresignedUploadUrl) {
27
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "Provider does not support presigned upload URLs");
28
+ }
29
+ if (!fileData.filename) {
30
+ throw new utils_1.EtoError(utils_1.EtoError.Types.INVALID_DATA, "File name is required to get a presigned upload URL");
31
+ }
32
+ return this.fileProvider_.getPresignedUploadUrl(fileData);
33
+ }
34
+ getDownloadStream(fileData) {
35
+ return this.fileProvider_.getDownloadStream(fileData);
36
+ }
37
+ getAsBuffer(fileData) {
38
+ return this.fileProvider_.getAsBuffer(fileData);
39
+ }
25
40
  }
26
41
  exports.default = FileProviderService;
27
42
  //# sourceMappingURL=file-provider-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-provider-service.js","sourceRoot":"","sources":["../../src/services/file-provider-service.ts"],"names":[],"mappings":";;AACA,kDAAiD;AACjD,mCAAuD;AAQvD,MAAqB,mBAAmB;IAGtC,YAAY,SAA+B;QACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3D,CAAC,CAAC,UAAU,CAAC,uCAA8B,CAAC,CAC7C,CAAA;QAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,6DAA6D,CAC9D,CAAA;QACH,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,aAAmD,EACnD,UAAmB;QAEnB,OAAO,GAAI,aAAqB,CAAC,UAAU,IAAI,UAAU,EAAE,CAAA;IAC7D,CAAC;IAED,MAAM,CACJ,IAAqC;QAErC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,QAAyC;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,uBAAuB,CACrB,QAAsC;QAEtC,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;CACF;AAxCD,sCAwCC"}
1
+ {"version":3,"file":"file-provider-service.js","sourceRoot":"","sources":["../../src/services/file-provider-service.ts"],"names":[],"mappings":";;AAEA,kDAAiD;AACjD,mCAAuD;AAQvD,MAAqB,mBAAmB;IAGtC,YAAY,SAA+B;QACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3D,CAAC,CAAC,UAAU,CAAC,uCAA8B,CAAC,CAC7C,CAAA;QAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,6DAA6D,CAC9D,CAAA;QACH,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,aAAmD,EACnD,UAAmB;QAEnB,OAAO,GAAI,aAAqB,CAAC,UAAU,IAAI,UAAU,EAAE,CAAA;IAC7D,CAAC;IAED,MAAM,CACJ,IAAqC;QAErC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CACJ,QAEqC;QAErC,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,uBAAuB,CACrB,QAAsC;QAEtC,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IAC7D,CAAC;IAED,qBAAqB,CACnB,QAAoD;QAEpD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC9C,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,iDAAiD,CAClD,CAAA;QACH,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,MAAM,IAAI,gBAAQ,CAChB,gBAAQ,CAAC,KAAK,CAAC,YAAY,EAC3B,qDAAqD,CACtD,CAAA;QACH,CAAC;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAA;IAC3D,CAAC;IAED,iBAAiB,CAAC,QAAsC;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC;IAED,WAAW,CAAC,QAAsC;QAChD,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IACjD,CAAC;CACF;AAxED,sCAwEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etohq/file",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "Eto File module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,10 +24,10 @@
24
24
  "author": "Eto",
25
25
  "license": "MIT",
26
26
  "devDependencies": {
27
- "@mikro-orm/cli": "5.9.7",
28
- "@mikro-orm/core": "5.9.7",
29
- "@mikro-orm/migrations": "5.9.7",
30
- "@mikro-orm/postgresql": "5.9.7",
27
+ "@mikro-orm/cli": "6.4.3",
28
+ "@mikro-orm/core": "6.4.3",
29
+ "@mikro-orm/migrations": "6.4.3",
30
+ "@mikro-orm/postgresql": "6.4.3",
31
31
  "@swc/core": "1.7.28",
32
32
  "@swc/jest": "0.2.36",
33
33
  "@types/jest": "29.5.14",
@@ -35,16 +35,16 @@
35
35
  "rimraf": "5.0.2",
36
36
  "tsc-alias": "1.8.6",
37
37
  "typescript": "5.8.3",
38
- "@etohq/test-utils": "1.4.0"
38
+ "@etohq/test-utils": "1.5.0"
39
39
  },
40
40
  "dependencies": {
41
41
  "awilix": "8.0.1",
42
- "@etohq/framework": "1.4.0",
43
- "@etohq/types": "1.4.0"
42
+ "@etohq/framework": "1.5.0",
43
+ "@etohq/types": "1.5.0"
44
44
  },
45
45
  "peerDependencies": {
46
- "@etohq/framework": "1.4.0",
47
- "@etohq/types": "1.4.0"
46
+ "@etohq/framework": "1.5.0",
47
+ "@etohq/types": "1.5.0"
48
48
  },
49
49
  "scripts": {
50
50
  "watch": "tsc --build --watch",