@nest-boot/file-upload 7.1.1 → 7.1.3

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,7 @@
1
+ /** GraphQL object type representing a single form field in a presigned upload. */
1
2
  export declare class FileUploadField {
3
+ /** Form field name. */
2
4
  name: string;
5
+ /** Form field value. */
3
6
  value: string;
4
7
  }
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FileUploadField = void 0;
13
13
  const graphql_1 = require("@nest-boot/graphql");
14
+ /** GraphQL object type representing a single form field in a presigned upload. */
14
15
  let FileUploadField = class FileUploadField {
15
16
  };
16
17
  exports.FileUploadField = FileUploadField;
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload-field.object.js","sourceRoot":"","sources":["../src/file-upload-field.object.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAuD;AAGhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAM3B,CAAA;AANY,0CAAe;AAE1B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;6CACN;AAGd;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;8CACL;0BALJ,eAAe;IAD3B,IAAA,oBAAU,GAAE;GACA,eAAe,CAM3B"}
1
+ {"version":3,"file":"file-upload-field.object.js","sourceRoot":"","sources":["../src/file-upload-field.object.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAuD;AAEvD,kFAAkF;AAE3E,IAAM,eAAe,GAArB,MAAM,eAAe;CAQ3B,CAAA;AARY,0CAAe;AAG1B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;6CACN;AAId;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;8CACL;0BAPJ,eAAe;IAD3B,IAAA,oBAAU,GAAE;GACA,eAAe,CAQ3B"}
@@ -1,12 +1,21 @@
1
1
  import { S3Client, S3ClientConfig } from "@aws-sdk/client-s3";
2
+ /** Defines file size and MIME type constraints for uploaded files. */
2
3
  export interface FileUploadLimit {
4
+ /** Maximum file size in bytes. */
3
5
  fileSize: number;
6
+ /** Allowed MIME type patterns (supports glob matching via micromatch). */
4
7
  mimeTypes: string[];
5
8
  }
9
+ /** Configuration options for the FileUploadModule. */
6
10
  export interface FileUploadModuleOptions {
11
+ /** S3 client instance or configuration for creating one. */
7
12
  client: S3Client | S3ClientConfig;
13
+ /** Optional custom URL prefix for presigned upload URLs. */
8
14
  url?: string;
15
+ /** S3 bucket name for storing uploaded files. */
9
16
  bucket: string;
17
+ /** Presigned URL expiration time in seconds (defaults to 3600). */
10
18
  expires?: number;
19
+ /** File upload constraints (size and MIME type limits). */
11
20
  limits?: FileUploadLimit[];
12
21
  }
@@ -1,3 +1,23 @@
1
- import { ConfigurableModuleClass } from "./file-upload.module-definition";
1
+ import { type DynamicModule } from "@nestjs/common";
2
+ import { ASYNC_OPTIONS_TYPE, ConfigurableModuleClass, OPTIONS_TYPE } from "./file-upload.module-definition";
3
+ /**
4
+ * File upload module providing upload handling via GraphQL.
5
+ *
6
+ * @remarks
7
+ * Registers the {@link FileUploadService} and GraphQL resolver
8
+ * for handling file upload operations.
9
+ */
2
10
  export declare class FileUploadModule extends ConfigurableModuleClass {
11
+ /**
12
+ * Registers the FileUploadModule with the given options.
13
+ * @param options - Configuration options
14
+ * @returns Dynamic module configuration
15
+ */
16
+ static register(options: typeof OPTIONS_TYPE): DynamicModule;
17
+ /**
18
+ * Registers the FileUploadModule asynchronously with factory functions.
19
+ * @param options - Async configuration options
20
+ * @returns Dynamic module configuration
21
+ */
22
+ static registerAsync(options: typeof ASYNC_OPTIONS_TYPE): DynamicModule;
3
23
  }
@@ -11,7 +11,30 @@ const common_1 = require("@nestjs/common");
11
11
  const file_upload_module_definition_1 = require("./file-upload.module-definition");
12
12
  const file_upload_resolver_1 = require("./file-upload.resolver");
13
13
  const file_upload_service_1 = require("./file-upload.service");
14
+ /**
15
+ * File upload module providing upload handling via GraphQL.
16
+ *
17
+ * @remarks
18
+ * Registers the {@link FileUploadService} and GraphQL resolver
19
+ * for handling file upload operations.
20
+ */
14
21
  let FileUploadModule = class FileUploadModule extends file_upload_module_definition_1.ConfigurableModuleClass {
22
+ /**
23
+ * Registers the FileUploadModule with the given options.
24
+ * @param options - Configuration options
25
+ * @returns Dynamic module configuration
26
+ */
27
+ static register(options) {
28
+ return super.register(options);
29
+ }
30
+ /**
31
+ * Registers the FileUploadModule asynchronously with factory functions.
32
+ * @param options - Async configuration options
33
+ * @returns Dynamic module configuration
34
+ */
35
+ static registerAsync(options) {
36
+ return super.registerAsync(options);
37
+ }
15
38
  };
16
39
  exports.FileUploadModule = FileUploadModule;
17
40
  exports.FileUploadModule = FileUploadModule = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.module.js","sourceRoot":"","sources":["../src/file-upload.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AAExC,mFAA0E;AAC1E,iEAA4D;AAC5D,+DAA0D;AAMnD,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,uDAAuB;CAAG,CAAA;AAAnD,4CAAgB;2BAAhB,gBAAgB;IAJ5B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,uCAAiB,EAAE,yCAAkB,CAAC;QAClD,OAAO,EAAE,CAAC,uCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAAmC"}
1
+ {"version":3,"file":"file-upload.module.js","sourceRoot":"","sources":["../src/file-upload.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4D;AAE5D,mFAIyC;AACzC,iEAA4D;AAC5D,+DAA0D;AAE1D;;;;;;GAMG;AAKI,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,uDAAuB;IAC3D;;;;OAIG;IACH,MAAM,CAAU,QAAQ,CAAC,OAA4B;QACnD,OAAO,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAU,aAAa,CAC3B,OAAkC;QAElC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;CACF,CAAA;AApBY,4CAAgB;2BAAhB,gBAAgB;IAJ5B,IAAA,eAAM,EAAC;QACN,SAAS,EAAE,CAAC,uCAAiB,EAAE,yCAAkB,CAAC;QAClD,OAAO,EAAE,CAAC,uCAAiB,CAAC;KAC7B,CAAC;GACW,gBAAgB,CAoB5B"}
@@ -1,5 +1,8 @@
1
1
  import { FileUploadField } from "./file-upload-field.object";
2
+ /** GraphQL object type representing a presigned file upload response. */
2
3
  export declare class FileUpload {
4
+ /** Form fields required for the presigned POST upload. */
3
5
  fields: FileUploadField[];
6
+ /** The presigned upload URL. */
4
7
  url: string;
5
8
  }
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FileUpload = void 0;
13
13
  const graphql_1 = require("@nest-boot/graphql");
14
14
  const file_upload_field_object_1 = require("./file-upload-field.object");
15
+ /** GraphQL object type representing a presigned file upload response. */
15
16
  let FileUpload = class FileUpload {
16
17
  };
17
18
  exports.FileUpload = FileUpload;
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.object.js","sourceRoot":"","sources":["../src/file-upload.object.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAuD;AAEvD,yEAA6D;AAGtD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAMtB,CAAA;AANY,gCAAU;AAErB;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,CAAC,0CAAe,CAAC,CAAC;;0CACJ;AAG3B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;uCACP;qBALF,UAAU;IADtB,IAAA,oBAAU,GAAE;GACA,UAAU,CAMtB"}
1
+ {"version":3,"file":"file-upload.object.js","sourceRoot":"","sources":["../src/file-upload.object.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAAuD;AAEvD,yEAA6D;AAE7D,yEAAyE;AAElE,IAAM,UAAU,GAAhB,MAAM,UAAU;CAQtB,CAAA;AARY,gCAAU;AAGrB;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,CAAC,0CAAe,CAAC,CAAC;;0CACJ;AAI3B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;uCACP;qBAPF,UAAU;IADtB,IAAA,oBAAU,GAAE;GACA,UAAU,CAQtB"}
@@ -2,16 +2,44 @@ import { Readable } from "stream";
2
2
  import { FileUpload } from "./file-upload.object";
3
3
  import { FileUploadModuleOptions } from "./file-upload-options.interface";
4
4
  import { FileUploadInput } from "./inputs/file-upload.input";
5
+ /**
6
+ * Service for handling file uploads to S3-compatible storage.
7
+ *
8
+ * @remarks
9
+ * Supports presigned POST uploads, direct uploads, and
10
+ * moving temporary files to permanent storage paths.
11
+ */
5
12
  export declare class FileUploadService {
6
13
  private readonly options;
7
- private readonly s3Client;
14
+ /** S3 client instance. @internal */ private readonly s3Client;
15
+ /** Creates a new FileUploadService instance.
16
+ * @param options - File upload module configuration options
17
+ */
8
18
  constructor(options: FileUploadModuleOptions);
19
+ /**
20
+ * Creates presigned POST URLs for uploading files.
21
+ * @param input - Array of file upload inputs with name, size, and MIME type
22
+ * @returns An array of presigned POST data (URL and form fields)
23
+ */
9
24
  create(input: FileUploadInput[]): Promise<FileUpload[]>;
25
+ /**
26
+ * Moves a temporary file to permanent storage.
27
+ * @param tmpUrl - The URL of the temporary file
28
+ * @returns The permanent URL of the file
29
+ */
10
30
  persist(tmpUrl: string): Promise<string>;
31
+ /**
32
+ * Uploads file data directly to S3.
33
+ * @param data - File content as a Readable stream, Buffer, or string
34
+ * @param metadata - Upload metadata including Content-Type and optional extension
35
+ * @param persist - Whether to move the file to permanent storage immediately
36
+ * @returns The URL of the uploaded file
37
+ */
11
38
  upload(data: Readable | Buffer | string, metadata: {
12
39
  "Content-Type": string;
13
40
  extension?: string;
14
41
  [key: string]: any;
15
42
  }, persist?: boolean): Promise<string>;
43
+ /** Constructs the full URL for a file stored in S3. @internal */
16
44
  private getFileUrl;
17
45
  }
@@ -25,7 +25,17 @@ const micromatch_1 = __importDefault(require("micromatch"));
25
25
  const mime_types_1 = __importDefault(require("mime-types"));
26
26
  const path_1 = require("path");
27
27
  const file_upload_module_definition_1 = require("./file-upload.module-definition");
28
+ /**
29
+ * Service for handling file uploads to S3-compatible storage.
30
+ *
31
+ * @remarks
32
+ * Supports presigned POST uploads, direct uploads, and
33
+ * moving temporary files to permanent storage paths.
34
+ */
28
35
  let FileUploadService = class FileUploadService {
36
+ /** Creates a new FileUploadService instance.
37
+ * @param options - File upload module configuration options
38
+ */
29
39
  constructor(options) {
30
40
  this.options = options;
31
41
  this.s3Client =
@@ -33,13 +43,17 @@ let FileUploadService = class FileUploadService {
33
43
  ? options.client
34
44
  : new client_s3_1.S3Client(options.client);
35
45
  }
46
+ /**
47
+ * Creates presigned POST URLs for uploading files.
48
+ * @param input - Array of file upload inputs with name, size, and MIME type
49
+ * @returns An array of presigned POST data (URL and form fields)
50
+ */
36
51
  async create(input) {
37
52
  const results = input.map(async (item) => {
38
53
  const key = `tmp/${(0, crypto_1.randomUUID)()}${(0, path_1.extname)(item.name)}`;
39
54
  const limit = this.options.limits?.find((v) => item.fileSize <= v.fileSize &&
40
55
  micromatch_1.default.isMatch(item.mimeType, v.mimeTypes));
41
56
  if (this.options.limits && !limit) {
42
- // 上传的文件不符合要求
43
57
  throw new common_1.BadRequestException("The uploaded file does not meet the requirements");
44
58
  }
45
59
  const conditions = [
@@ -80,7 +94,11 @@ let FileUploadService = class FileUploadService {
80
94
  });
81
95
  return await Promise.all(results);
82
96
  }
83
- // 临时文件转永久文件
97
+ /**
98
+ * Moves a temporary file to permanent storage.
99
+ * @param tmpUrl - The URL of the temporary file
100
+ * @returns The permanent URL of the file
101
+ */
84
102
  async persist(tmpUrl) {
85
103
  const tmpKey = tmpUrl.split("/tmp/")[1];
86
104
  const originKey = `tmp/${tmpKey}`;
@@ -93,6 +111,13 @@ let FileUploadService = class FileUploadService {
93
111
  await this.s3Client.send(copyCommand);
94
112
  return await this.getFileUrl(targetKey);
95
113
  }
114
+ /**
115
+ * Uploads file data directly to S3.
116
+ * @param data - File content as a Readable stream, Buffer, or string
117
+ * @param metadata - Upload metadata including Content-Type and optional extension
118
+ * @param persist - Whether to move the file to permanent storage immediately
119
+ * @returns The URL of the uploaded file
120
+ */
96
121
  async upload(data, metadata, persist = false) {
97
122
  const extension = metadata.extension ??
98
123
  (mime_types_1.default.extension(metadata["Content-Type"]) || "bin");
@@ -108,29 +133,24 @@ let FileUploadService = class FileUploadService {
108
133
  if (!persist) {
109
134
  return tmpUrl;
110
135
  }
111
- // 持久化
112
136
  return await this.persist(tmpUrl);
113
137
  }
138
+ /** Constructs the full URL for a file stored in S3. @internal */
114
139
  async getFileUrl(filePath) {
115
- // 获取 S3Client 的配置
116
140
  const config = this.s3Client.config;
117
141
  const forcePathStyle = config.forcePathStyle;
118
142
  const endpoint = await config.endpoint?.();
119
143
  if (!endpoint) {
120
144
  throw new Error("Endpoint is not configured");
121
145
  }
122
- // 构造基础 URL
123
146
  const protocol = endpoint.protocol;
124
147
  const hostname = endpoint.hostname;
125
148
  const port = endpoint.port ? `:${String(endpoint.port)}` : "";
126
149
  const baseUrl = `${protocol}//${hostname}${port}`;
127
- // 根据配置生成正确的 URL
128
150
  if (forcePathStyle) {
129
- // Path-style URL: https://endpoint/bucket/key
130
151
  return `${baseUrl}/${this.options.bucket}/${filePath}`;
131
152
  }
132
153
  else {
133
- // Virtual-hosted-style URL: https://bucket.endpoint/key
134
154
  return `${protocol}//${this.options.bucket}.${hostname}${port}/${filePath}`;
135
155
  }
136
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../src/file-upload.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../src/file-upload.service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export * from "./file-upload.module";
2
+ export * from "./file-upload.object";
2
3
  export * from "./file-upload.service";
4
+ export * from "./file-upload-field.object";
5
+ export * from "./file-upload-options.interface";
6
+ export * from "./inputs/file-upload.input";
package/dist/index.js CHANGED
@@ -15,5 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./file-upload.module"), exports);
18
+ __exportStar(require("./file-upload.object"), exports);
18
19
  __exportStar(require("./file-upload.service"), exports);
20
+ __exportStar(require("./file-upload-field.object"), exports);
21
+ __exportStar(require("./file-upload-options.interface"), exports);
22
+ __exportStar(require("./inputs/file-upload.input"), exports);
19
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,wDAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,uDAAqC;AACrC,wDAAsC;AACtC,6DAA2C;AAC3C,kEAAgD;AAChD,6DAA2C"}
@@ -1,5 +1,9 @@
1
+ /** GraphQL input type for requesting a file upload. */
1
2
  export declare class FileUploadInput {
3
+ /** Original file name including extension. */
2
4
  name: string;
5
+ /** File size in bytes. */
3
6
  fileSize: number;
7
+ /** MIME type of the file (e.g. "image/png"). */
4
8
  mimeType: string;
5
9
  }
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.FileUploadInput = void 0;
13
13
  const graphql_1 = require("@nest-boot/graphql");
14
+ /** GraphQL input type for requesting a file upload. */
14
15
  let FileUploadInput = class FileUploadInput {
15
16
  };
16
17
  exports.FileUploadInput = FileUploadInput;
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.input.js","sourceRoot":"","sources":["../../src/inputs/file-upload.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA2D;AAGpD,IAAM,eAAe,GAArB,MAAM,eAAe;CAS3B,CAAA;AATY,0CAAe;AAE1B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;6CACN;AAGd;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,aAAG,CAAC;;iDACC;AAGlB;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;iDACF;0BARP,eAAe;IAD3B,IAAA,mBAAS,GAAE;GACC,eAAe,CAS3B"}
1
+ {"version":3,"file":"file-upload.input.js","sourceRoot":"","sources":["../../src/inputs/file-upload.input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA2D;AAE3D,uDAAuD;AAEhD,IAAM,eAAe,GAArB,MAAM,eAAe;CAY3B,CAAA;AAZY,0CAAe;AAG1B;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;6CACN;AAId;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,aAAG,CAAC;;iDACC;AAIlB;IADC,IAAA,eAAK,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;;iDACF;0BAXP,eAAe;IAD3B,IAAA,mBAAS,GAAE;GACC,eAAe,CAY3B"}