@kiyasov/platform-hono 2.0.0 → 2.0.1

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 (35) hide show
  1. package/dist/cjs/src/drivers/graphQLUpload/GraphQLUpload.d.ts +1 -1
  2. package/dist/cjs/src/drivers/graphQLUpload/Upload.d.ts +9 -4
  3. package/dist/cjs/src/drivers/graphQLUpload/Upload.js.map +1 -1
  4. package/dist/cjs/src/drivers/graphQLUpload/index.d.ts +1 -1
  5. package/dist/cjs/src/drivers/graphQLUpload/index.js.map +1 -1
  6. package/dist/cjs/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
  7. package/dist/cjs/src/drivers/graphQLUpload/processRequest.js.map +1 -1
  8. package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.d.ts +3 -3
  9. package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.js +1 -1
  10. package/dist/cjs/src/drivers/graphQLUpload/storage/capacitor-storage.js.map +1 -1
  11. package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.d.ts +3 -3
  12. package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.js +1 -1
  13. package/dist/cjs/src/drivers/graphQLUpload/storage/memory-storage.js.map +1 -1
  14. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  15. package/dist/esm/src/drivers/graphQLUpload/GraphQLUpload.d.ts +1 -1
  16. package/dist/esm/src/drivers/graphQLUpload/Upload.d.ts +9 -4
  17. package/dist/esm/src/drivers/graphQLUpload/Upload.js.map +1 -1
  18. package/dist/esm/src/drivers/graphQLUpload/index.d.ts +1 -1
  19. package/dist/esm/src/drivers/graphQLUpload/index.js.map +1 -1
  20. package/dist/esm/src/drivers/graphQLUpload/processRequest.d.ts +2 -2
  21. package/dist/esm/src/drivers/graphQLUpload/processRequest.js.map +1 -1
  22. package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.d.ts +3 -3
  23. package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.js +1 -1
  24. package/dist/esm/src/drivers/graphQLUpload/storage/capacitor-storage.js.map +1 -1
  25. package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.d.ts +3 -3
  26. package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.js +1 -1
  27. package/dist/esm/src/drivers/graphQLUpload/storage/memory-storage.js.map +1 -1
  28. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  29. package/package.json +1 -1
  30. package/src/drivers/graphQLUpload/Upload.ts +21 -8
  31. package/src/drivers/graphQLUpload/index.ts +1 -1
  32. package/src/drivers/graphQLUpload/processRequest.ts +2 -2
  33. package/src/drivers/graphQLUpload/storage/capacitor-storage.ts +3 -7
  34. package/src/drivers/graphQLUpload/storage/memory-storage.ts +3 -7
  35. package/test/graphql-upload.test.ts +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kiyasov/platform-hono",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Nest adapter for Hono",
5
5
  "author": "Islam Kiiasov",
6
6
  "repository": {
@@ -2,12 +2,11 @@ import { ReadStream, ReadStreamOptions, WriteStream } from './fs-capacitor';
2
2
  import { StorageFile } from './storage';
3
3
 
4
4
  /**
5
- * Represents a file upload with metadata and stream access.
6
- * Compatible with capacitor storage for streaming file content.
7
- *
8
- * Extends StorageFile with optional stream support for capacitor storage.
5
+ * Memory upload file with optional stream support.
6
+ * Used for files stored in memory (buffer-based).
7
+ * Stream and capacitor fields are optional since not all storage types support them.
9
8
  */
10
- export interface FileUpload extends StorageFile {
9
+ export interface MemoryUploadFile extends StorageFile {
11
10
  /** Creates a readable stream for the file content (capacitor storage only) */
12
11
  createReadStream?(options?: ReadStreamOptions): ReadStream;
13
12
  /** The write stream capacitor (capacitor storage only) */
@@ -16,15 +15,29 @@ export interface FileUpload extends StorageFile {
16
15
  file?: File;
17
16
  }
18
17
 
18
+ /**
19
+ * Stream upload file with guaranteed stream support.
20
+ * Used in GraphQL resolvers when CapacitorStorage is the default storage.
21
+ * Ensures createReadStream and capacitor are always available for streaming file content.
22
+ */
23
+ export interface StreamUploadFile extends StorageFile {
24
+ /** Creates a readable stream for the file content */
25
+ createReadStream(options?: ReadStreamOptions): ReadStream;
26
+ /** The write stream capacitor */
27
+ capacitor: WriteStream;
28
+ /** Original File object if available */
29
+ file?: File;
30
+ }
31
+
19
32
  /**
20
33
  * Upload promise wrapper for GraphQL file uploads.
21
34
  * Manages the asynchronous file upload process with proper error handling.
22
35
  */
23
36
  export class Upload {
24
- promise: Promise<FileUpload>;
25
- resolve: (file?: FileUpload) => void;
37
+ promise: Promise<MemoryUploadFile>;
38
+ resolve: (file?: MemoryUploadFile) => void;
26
39
  reject: (error?: Error | string) => void;
27
- file?: FileUpload;
40
+ file?: MemoryUploadFile;
28
41
 
29
42
  constructor() {
30
43
  this.promise = new Promise((resolve, reject) => {
@@ -1,5 +1,5 @@
1
1
  // Core
2
- export { Upload, FileUpload } from './Upload';
2
+ export { Upload, MemoryUploadFile, StreamUploadFile } from './Upload';
3
3
  export { GraphQLUpload } from './GraphQLUpload';
4
4
  export { processRequest, ProcessRequestOptions } from './processRequest';
5
5
 
@@ -2,14 +2,14 @@ import { Context } from 'hono';
2
2
 
3
3
  import { CapacitorStorage } from './storage/capacitor-storage';
4
4
  import { Storage } from './storage/storage';
5
- import { FileUpload, Upload } from './Upload';
5
+ import { MemoryUploadFile, Upload } from './Upload';
6
6
 
7
7
  /**
8
8
  * Options for processing GraphQL file uploads
9
9
  */
10
10
  export interface ProcessRequestOptions {
11
11
  /** Storage implementation to use for uploaded files */
12
- storage?: Storage<FileUpload>;
12
+ storage?: Storage<MemoryUploadFile>;
13
13
  /** Maximum file size in bytes */
14
14
  maxFileSize?: number;
15
15
  /** Temporary directory for capacitor storage */
@@ -2,13 +2,13 @@ import { HonoRequest } from 'hono';
2
2
  import { Readable } from 'stream';
3
3
 
4
4
  import { ReadStream, ReadStreamOptions, WriteStream } from '../fs-capacitor';
5
- import { FileUpload } from '../Upload';
5
+ import { StreamUploadFile } from '../Upload';
6
6
  import { Storage, StorageOptions } from './storage';
7
7
 
8
8
  /**
9
9
  * File upload with stream support for capacitor storage
10
10
  */
11
- export interface CapacitorStorageFile extends FileUpload {
11
+ export interface CapacitorStorageFile extends StreamUploadFile {
12
12
  /** Original File object */
13
13
  file: File;
14
14
  /** Creates a readable stream for the file content */
@@ -76,11 +76,7 @@ export class CapacitorStorage implements Storage<CapacitorStorageFile> {
76
76
  };
77
77
  }
78
78
 
79
- public async removeFile(
80
- file: CapacitorStorageFile,
81
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
82
- force?: boolean,
83
- ): Promise<void> {
79
+ public async removeFile(file: CapacitorStorageFile): Promise<void> {
84
80
  file.capacitor.release();
85
81
  }
86
82
  }
@@ -1,12 +1,12 @@
1
1
  import { HonoRequest } from 'hono';
2
2
 
3
- import { FileUpload } from '../Upload';
3
+ import { MemoryUploadFile } from '../Upload';
4
4
  import { Storage, StorageOptions } from './storage';
5
5
 
6
6
  /**
7
7
  * In-memory storage file with buffer
8
8
  */
9
- export interface MemoryStorageFile extends FileUpload {
9
+ export interface MemoryStorageFile extends MemoryUploadFile {
10
10
  /** Buffer containing the file data */
11
11
  buffer: Buffer;
12
12
  /** Original File object */
@@ -50,11 +50,7 @@ export class MemoryStorage implements Storage<MemoryStorageFile> {
50
50
  };
51
51
  }
52
52
 
53
- public async removeFile(
54
- file: MemoryStorageFile,
55
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
56
- force?: boolean,
57
- ): Promise<void> {
53
+ public async removeFile(file: MemoryStorageFile): Promise<void> {
58
54
  if ('buffer' in file) {
59
55
  delete (file as MemoryStorageFile).buffer;
60
56
  }
@@ -13,7 +13,7 @@ import {
13
13
  type MemoryStorageFile,
14
14
  } from '../src/drivers/graphQLUpload/storage/memory-storage';
15
15
  import { Storage } from '../src/drivers/graphQLUpload/storage/storage';
16
- import { FileUpload, Upload } from '../src/drivers/graphQLUpload/Upload';
16
+ import { MemoryUploadFile, Upload } from '../src/drivers/graphQLUpload/Upload';
17
17
  import {
18
18
  asContext,
19
19
  asHonoRequest,
@@ -34,7 +34,7 @@ describe('GraphQL Upload', () => {
34
34
 
35
35
  test('should resolve upload with file', async () => {
36
36
  const upload = new Upload();
37
- const mockFile: FileUpload = {
37
+ const mockFile: MemoryUploadFile = {
38
38
  fieldName: 'file',
39
39
  originalFilename: 'test.txt',
40
40
  mimetype: 'text/plain',
@@ -392,8 +392,8 @@ describe('GraphQL Upload', () => {
392
392
  });
393
393
 
394
394
  test('should use custom storage when provided', async () => {
395
- const customStorage: Storage<FileUpload> = {
396
- async handleFile(file, _req, fieldName): Promise<FileUpload> {
395
+ const customStorage: Storage<MemoryUploadFile> = {
396
+ async handleFile(file, _req, fieldName): Promise<MemoryUploadFile> {
397
397
  return {
398
398
  fieldName,
399
399
  originalFilename: file.name,