index.d.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import 'egg';
  2. import { Readable } from 'stream';
  3. interface EggFile {
  4. field: string;
  5. filename: string;
  6. encoding: string;
  7. mime: string;
  8. filepath: string;
  9. }
  10. interface MultipartOptions {
  11. autoFields?: boolean;
  12. requireFile?: boolean; // required file submit, default is true
  13. defCharset?: string;
  14. limits?: {
  15. fieldNameSize?: number;
  16. fieldSize?: number;
  17. fields?: number;
  18. fileSize?: number;
  19. files?: number;
  20. parts?: number;
  21. headerPairs?: number;
  22. };
  23. checkFile?(
  24. fieldname: string,
  25. file: any,
  26. filename: string,
  27. encoding: string,
  28. mimetype: string
  29. ): void | Error;
  30. }
  31. interface MultipartFileStream extends Readable {
  32. fields: any;
  33. filename: string;
  34. fieldname: string;
  35. mime: string;
  36. mimeType: string;
  37. transferEncoding: string;
  38. encoding: string;
  39. truncated: boolean;
  40. }
  41. interface ScheduleOptions {
  42. type?: string;
  43. cron?: string;
  44. cronOptions?: {
  45. tz?: string;
  46. utc?: boolean;
  47. iterator?: boolean;
  48. currentDate?: string|number|Date;
  49. endDate?: string|number|Date;
  50. };
  51. interval?: number|string;
  52. immediate?: boolean;
  53. disable?: boolean;
  54. env?: string[];
  55. }
  56. declare module 'egg' {
  57. interface Context {
  58. /**
  59. * clean up request tmp files helper
  60. * @param {EggFile[]} files file paths need to clenup, default is `ctx.request.files`.
  61. * @return {Promise<void>}
  62. */
  63. cleanupRequestFiles(files?: EggFile[]): Promise<void>;
  64. /**
  65. * save request multipart data and files to `ctx.request`
  66. * @return {Promise<void>}
  67. */
  68. saveRequestFiles(): Promise<void>;
  69. /**
  70. * create multipart.parts instance, to get separated files.
  71. * @param {MultipartOptions} options
  72. * @return {Function} return a function which return a Promise
  73. */
  74. multipart(options?: MultipartOptions): (fn?: Function) => Promise<any>;
  75. /**
  76. * get upload file stream
  77. * @param {MultipartOptions} options
  78. * @return {Promise<MultipartFileStream>}
  79. */
  80. getFileStream(options?: MultipartOptions): Promise<MultipartFileStream>
  81. }
  82. interface Request {
  83. /**
  84. * Files Object Array
  85. */
  86. files: EggFile[];
  87. }
  88. type MatchItem = string | RegExp | ((ctx: Context) => boolean);
  89. interface EggAppConfig {
  90. multipart: {
  91. mode?: string;
  92. fileModeMatch?: MatchItem | MatchItem[];
  93. autoFields?: boolean;
  94. defaultCharset?: string;
  95. fieldNameSize?: number;
  96. fieldSize?: string|number;
  97. fields?: number;
  98. fileSize?: string|number;
  99. files?: number;
  100. whitelist?: ((filename: string) => boolean)|string[];
  101. fileExtensions?: string[];
  102. tmpdir?: string;
  103. cleanSchedule?: ScheduleOptions;
  104. }
  105. }
  106. }