index.d.ts 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465
  1. // Type definitions for uppy 0.24
  2. // Project: https://uppy.io
  3. // Definitions by: My Self <https://github.com/me>
  4. // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
  5. // TypeScript Version: 2.3
  6. export as namespace Uppy;
  7. export namespace Store {
  8. // todo
  9. type State = any;
  10. type EventRemover = () => void;
  11. interface Store {
  12. getState(): State;
  13. setState(patch: State): void;
  14. subscribe(listener: any): EventRemover;
  15. }
  16. // todo
  17. type DefaultStore = Store;
  18. // todo
  19. type ReduxStore = Store;
  20. }
  21. export interface Local {
  22. strings: {
  23. youCanOnlyUploadX: {
  24. 0: string;
  25. 1: string;
  26. },
  27. youHaveToAtLeastSelectX: {
  28. 0: string;
  29. 1: string;
  30. },
  31. exceedsSize: string;
  32. youCanOnlyUploadFileTypes: string;
  33. uppyServerError: string;
  34. failedToUpload: string;
  35. noInternetConnection: string;
  36. connectedToInternet: string;
  37. };
  38. }
  39. export namespace plugins {
  40. interface DashboardOptions extends core.CoreConfig {
  41. onRequestCloseModal: () => any;
  42. disablePageScrollWhenModalOpen: boolean;
  43. closeModalOnClickOutside: boolean;
  44. trigger: string | HTMLElement;
  45. inline: boolean;
  46. defaultTabIcon: string;
  47. hideUploadButton: boolean;
  48. width: string;
  49. height: string;
  50. note: string;
  51. showLinkToFileUploadResult: boolean;
  52. proudlyDisplayPoweredByUppy: boolean;
  53. metaFields: string[];
  54. plugins: core.Plugin[];
  55. disableStatusBar: boolean;
  56. showProgressDetails: boolean;
  57. hideProgressAfterFinish: boolean;
  58. disableInformer: boolean;
  59. disableThumbnailGenerator: boolean;
  60. }
  61. class Dashboard extends core.Plugin {
  62. constructor(uppy: core.Uppy, opts: Partial<DashboardOptions>);
  63. addTarget(plugin: core.Plugin): HTMLElement;
  64. hideAllPanels(): void;
  65. showPanel(id: string): void;
  66. requestCloseModal(): void;
  67. getFocusableNodes(): HTMLElement[];
  68. setFocusToFirstNode(): void;
  69. setFocusToBrowse(): void;
  70. maintainFocus(): void;
  71. openModal(): void;
  72. closeModal(): void;
  73. isModalOpen(): boolean;
  74. onKeydown(event: KeyboardEvent): void;
  75. handleClickOutside(): void;
  76. handlePaste(ev: ClipboardEvent): void;
  77. handleInputChange(ev: Event): void;
  78. initEvents(): void;
  79. removeEvents(): void;
  80. updateDashboardElWidth(): void;
  81. toggleFileCard(fileId: string): void;
  82. handleDrop(files: File[] | FileList): void;
  83. render(state: Store.State): void;
  84. discoverProviderPlugins(): void;
  85. install(): void;
  86. uninstall(): void;
  87. }
  88. interface DragDropOptions extends core.CoreConfig {
  89. inputName: string;
  90. allowMultipleFiles: boolean;
  91. width: string;
  92. height: string;
  93. note: string;
  94. }
  95. class DragDrop extends core.Plugin {
  96. constructor(uppy: core.Uppy, opts: Partial<DragDropOptions>);
  97. checkDragDropSupport(): void;
  98. handleDrop(files: File[] | FileList): void;
  99. handleInputChange(ev: Event): void;
  100. }
  101. interface FileOptions {
  102. headers: any;
  103. [key: string]: any;
  104. }
  105. interface ProcessTimeout {
  106. done(): void;
  107. process(): void;
  108. }
  109. interface FormDataUploadOptions {
  110. metaFields: string[];
  111. fieldName: string;
  112. }
  113. interface XHRUploadOptions extends core.CoreConfig {
  114. limit: string;
  115. bundle: boolean;
  116. formData: FormData;
  117. headers: any;
  118. metaFields: string[];
  119. fieldName: string;
  120. timeout: number;
  121. responseUrlFieldName: string;
  122. endpoint: string;
  123. method: 'GET' | 'POST' | 'HEAD';
  124. }
  125. class XHRUpload extends core.Plugin {
  126. constructor(uppy: core.Uppy, opts: Partial<XHRUploadOptions>);
  127. getOptions(file: File): FileOptions;
  128. createProgressTimeout(timeout: number, timeoutHandler: any): ProcessTimeout;
  129. createFormDataUpload(file: File, opts: Partial<FormDataUploadOptions>): FormData;
  130. createBareUpload(file: File): any;
  131. upload(file: File, current: number, total: number): Promise<File>;
  132. uploadRemote(file: File, current: number, total: number): Promise<File>;
  133. uploadBundle(files: File[] | FileList): Promise<void>;
  134. uploadBundle(files: File[] | FileList): Promise<{
  135. successful: File[];
  136. failed: any;
  137. }>;
  138. handleUpload(fileIDs: string[]): Promise<null>;
  139. }
  140. interface GoogleDriveOptions extends core.CoreConfig {
  141. expires: number;
  142. serviceWorker: boolean;
  143. indexedDB: any;
  144. host: string;
  145. }
  146. class GoogleDrive extends core.Plugin {
  147. constructor(uppy: core.Uppy, opts: Partial<GoogleDriveOptions>);
  148. loadFilesStateFromLocalStorage(): void;
  149. getWaitingFiles(): { [fileID: string]: File };
  150. getUploadingFiles(): { [fileID: string]: File };
  151. saveFilesStateToLocalStorage(): void;
  152. loadFileBlobsFromServiceWorker(): void;
  153. loadFileBlobsFromIndexedDB(): void;
  154. deleteBlobs(): Promise<any>;
  155. }
  156. interface InstagramOptions extends core.CoreConfig {
  157. host: string;
  158. }
  159. class Instagram extends core.Plugin {
  160. constructor(uppy: core.Uppy, opts: Partial<InstagramOptions>);
  161. }
  162. interface WebcamOptions extends core.CoreConfig {
  163. countdown: boolean;
  164. }
  165. interface WebcamMedia {
  166. source: string;
  167. name: string;
  168. data: File;
  169. type: string;
  170. }
  171. class Webcam extends core.Plugin {
  172. constructor(uppy: core.Uppy, opts: Partial<WebcamOptions>);
  173. isSupported(): boolean;
  174. getConstraints(): { audio: boolean; video: boolean; };
  175. start(): Promise<void>;
  176. startRecording(): void;
  177. stopRecording(): Promise<void>;
  178. stop(): void;
  179. getVideoElement(): HTMLVideoElement;
  180. oneTwoThreeSmile(): Promise<void>;
  181. takeSnapshot(): void;
  182. getImage(): Promise<WebcamMedia>;
  183. getVideo(): Promise<WebcamMedia>;
  184. focus(): void;
  185. }
  186. interface TusOptions extends core.CoreConfig {
  187. limit: number;
  188. endpoint: string;
  189. uploadUrl: string;
  190. useFastRemoteRetry: boolean;
  191. resume: boolean;
  192. autoRetry: boolean;
  193. }
  194. class Tus extends core.Plugin {
  195. constructor(uppy: core.Uppy, opts: Partial<TusOptions>);
  196. }
  197. interface StatusBarOptions extends core.CoreConfig {
  198. showProgressDetails: boolean;
  199. hideUploadButton: boolean;
  200. hideAfterFinish: boolean;
  201. }
  202. class StatusBar extends core.Plugin {
  203. constructor(uppy: core.Uppy, opts: Partial<StatusBarOptions>);
  204. }
  205. interface UrlOptions extends core.CoreConfig {
  206. host: string;
  207. }
  208. class Url extends core.Plugin {
  209. constructor(uppy: core.Uppy, opts: Partial<UrlOptions>);
  210. }
  211. interface DropboxOptions extends core.CoreConfig {
  212. host: string;
  213. }
  214. class Dropbox extends core.Plugin {
  215. constructor(uppy: core.Uppy, opts: Partial<DropboxOptions>);
  216. }
  217. interface AwsS3Options extends core.CoreConfig {
  218. limit: number;
  219. host: string;
  220. timeout: number;
  221. }
  222. class AwsS3 extends core.Plugin {
  223. constructor(uppy: core.Uppy, opts: Partial<AwsS3Options>);
  224. }
  225. interface GoldenRetrieverOptions extends core.CoreConfig {
  226. expires: number;
  227. serviceWorker: boolean;
  228. indexedDB: any;
  229. }
  230. class GoldenRetriever extends core.Plugin {
  231. constructor(uppy: core.Uppy, opts: Partial<GoldenRetrieverOptions>);
  232. }
  233. interface ThumbnailGeneratorOptions extends core.CoreConfig {
  234. thumbnailWidth: number;
  235. }
  236. class ThumbnailGenerator extends core.Plugin {
  237. constructor(uppy: core.Uppy, opts: Partial<ThumbnailGeneratorOptions>);
  238. }
  239. interface TransloaditOptions extends core.CoreConfig {
  240. params: any;
  241. service: string;
  242. waitForEncoding: boolean;
  243. waitForMetadata: boolean;
  244. importFromUploadURLs: boolean;
  245. alwaysRunAssembly: boolean;
  246. }
  247. class Transloadit extends core.Plugin {
  248. constructor(uppy: core.Uppy, opts: Partial<TransloaditOptions>);
  249. }
  250. interface DummyOptions extends core.CoreConfig {
  251. }
  252. class Dummy extends core.Plugin {
  253. constructor(uppy: core.Uppy, opts: Partial<DummyOptions>);
  254. }
  255. interface FileInputOptions extends core.CoreConfig {
  256. pretty: boolean;
  257. inputName: string;
  258. }
  259. class FileInput extends core.Plugin {
  260. constructor(uppy: core.Uppy, opts: Partial<FileInputOptions>);
  261. }
  262. interface FormOptions extends core.CoreConfig {
  263. getMetaFromForm: boolean;
  264. addResultToForm: boolean;
  265. submitOnSuccess: boolean;
  266. triggerUploadOnSubmit: boolean;
  267. resultName: string;
  268. }
  269. class Form extends core.Plugin {
  270. constructor(uppy: core.Uppy, opts: Partial<FormOptions>);
  271. }
  272. interface TypeColor {
  273. [type: string]: {
  274. bg: string | number;
  275. text: string | number;
  276. };
  277. }
  278. interface InformerOptions extends core.CoreConfig {
  279. typeColors: TypeColor;
  280. }
  281. class Informer extends core.Plugin {
  282. constructor(uppy: core.Uppy, opts: Partial<InformerOptions>);
  283. }
  284. interface MagicLogOptions extends core.CoreConfig {
  285. }
  286. class MagicLog extends core.Plugin {
  287. constructor(uppy: core.Uppy, opts: Partial<MagicLogOptions>);
  288. }
  289. interface ProgressBarOptions extends core.CoreConfig {
  290. hideAfterFinish: boolean;
  291. fixed: boolean;
  292. }
  293. class ProgressBar extends core.Plugin {
  294. constructor(uppy: core.Uppy, opts: Partial<ProgressBarOptions>);
  295. }
  296. interface ReduxDevToolsOptions extends core.CoreConfig {
  297. }
  298. class ReduxDevTools extends core.Plugin {
  299. constructor(uppy: core.Uppy, opts: Partial<ReduxDevToolsOptions>);
  300. }
  301. }
  302. export const Dashboard: plugins.Dashboard;
  303. export const DragDrop: plugins.DragDrop;
  304. export const XHRUpload: plugins.XHRUpload;
  305. export const GoogleDrive: plugins.GoogleDrive;
  306. export const Instagram: plugins.Instagram;
  307. export const Webcam: plugins.Webcam;
  308. export const Tus: plugins.Tus;
  309. export const StatusBar: plugins.StatusBar;
  310. export const Url: plugins.Url;
  311. export const Dropbox: plugins.Dropbox;
  312. export const AwsS3: plugins.AwsS3;
  313. export const GoldenRetriever: plugins.GoldenRetriever;
  314. export const ThumbnailGenerator: plugins.ThumbnailGenerator;
  315. export const Transloadit: plugins.Transloadit;
  316. export const Dummy: plugins.Dummy;
  317. export const FileInput: plugins.FileInput;
  318. export const Form: plugins.Form;
  319. export const Informer: plugins.Informer;
  320. export const MagicLog: plugins.MagicLog;
  321. export const ProgressBar: plugins.ProgressBar;
  322. export const ReduxDevTools: plugins.ReduxDevTools;
  323. export namespace core {
  324. interface CoreConfig {
  325. id: string;
  326. autoProceed: boolean;
  327. debug: boolean;
  328. restrictions: {
  329. maxFileSize: false,
  330. maxNumberOfFiles: false,
  331. minNumberOfFiles: false,
  332. allowedFileTypes: false
  333. };
  334. target: string | Plugin;
  335. meta: any;
  336. // onBeforeFileAdded: (currentFile, files) => currentFile,
  337. // onBeforeUpload: (files) => files,
  338. locale: Local;
  339. store: Store.Store;
  340. }
  341. class Plugin {
  342. constructor(uppy: Uppy, opts?: {
  343. replaceTargetContent?: boolean;
  344. });
  345. getPluginState(): Store.State;
  346. setPluginState(update: any): Store.State;
  347. update(state?: Store.State): void;
  348. mount(target: any, plugin: any): void;
  349. render(state: Store.State): void;
  350. addTarget(plugin: any): void;
  351. unmount(): void;
  352. install(): void;
  353. uninstall(): void;
  354. }
  355. type LogType = 'info' | 'warning' | 'error';
  356. interface SuccessedFile {
  357. data: File;
  358. extension: string;
  359. id: string;
  360. isPaused: boolean;
  361. isRemote: boolean;
  362. meta: {
  363. name: string;
  364. type: string;
  365. };
  366. name: string;
  367. preview: string;
  368. progress: {
  369. uploadStarted: number;
  370. uploadComplete: boolean;
  371. percentage: number;
  372. bytesUploaded: number;
  373. bytesTotal: number;
  374. };
  375. remote: string;
  376. size: number;
  377. source: string;
  378. type: string;
  379. uploadURL: string;
  380. }
  381. interface Result {
  382. failed: any[];
  383. successful: SuccessedFile[];
  384. }
  385. class Uppy {
  386. constructor(conf: Partial<CoreConfig>);
  387. on(event: string, callback: (...args: any[]) => any): Uppy;
  388. on(event: 'upload-success', callback: (fileCount: File, body: any, uploadurl: string) => any): Uppy;
  389. on(event: 'complete', callback: (result: Result) => void): Uppy;
  390. off(event: string, callback: any): Uppy;
  391. updateAll(state: Store.State): void;
  392. setState(patch: Store.State): void;
  393. getState(): Store.State;
  394. readonly state: Store.State;
  395. setFileState(fileID: string, state: Store.State): void;
  396. resetProgress(): void;
  397. addPreProcessor(fn: any): void;
  398. removePreProcessor(fn: any): void;
  399. addPostProcessor(fn: any): void;
  400. removePostProcessor(fn: any): void;
  401. addUploader(fn: any): void;
  402. removeUploader(fn: any): void;
  403. setMeta(data: any): void;
  404. setFileMeta(fileID: string, data: any): void;
  405. getFile(fileID: string): File;
  406. getFiles(): File[];
  407. addFile(file: File): void;
  408. removeFile(fileID: string): void;
  409. pauseResume(fileID: string): boolean;
  410. pauseAll(): void;
  411. resumeAll(): void;
  412. retryAll(): void;
  413. cancelAll(): void;
  414. retryUpload(fileID: string): any;
  415. reset(): void;
  416. actions(): void;
  417. updateOnlineStatus(): void;
  418. getID(): string;
  419. // use<T extends Plugin>(Plugin: T, opts: any): Uppy;
  420. use(Plugin: plugins.Dashboard, opts: Partial<plugins.DashboardOptions>): Uppy;
  421. use(Plugin: plugins.DragDrop, opts: Partial<plugins.DragDropOptions>): Uppy;
  422. use(Plugin: plugins.XHRUpload, opts: Partial<plugins.XHRUploadOptions>): Uppy;
  423. use(Plugin: plugins.GoogleDrive, opts: Partial<plugins.GoogleDriveOptions>): Uppy;
  424. use(Plugin: plugins.Instagram, opts: Partial<plugins.InstagramOptions>): Uppy;
  425. use(Plugin: plugins.Webcam, opts: Partial<plugins.WebcamOptions>): Uppy;
  426. use(Plugin: plugins.Tus, opts: Partial<plugins.TusOptions>): Uppy;
  427. use(Plugin: plugins.StatusBar, opts: Partial<plugins.StatusBarOptions>): Uppy;
  428. use(Plugin: plugins.Url, opts: Partial<plugins.UrlOptions>): Uppy;
  429. use(Plugin: plugins.Dropbox, opts: Partial<plugins.DropboxOptions>): Uppy;
  430. use(Plugin: plugins.AwsS3, opts: Partial<plugins.AwsS3Options>): Uppy;
  431. use(Plugin: plugins.GoldenRetriever, opts: Partial<plugins.GoldenRetrieverOptions>): Uppy;
  432. use(Plugin: plugins.ThumbnailGenerator, opts: Partial<plugins.ThumbnailGeneratorOptions>): Uppy;
  433. use(Plugin: plugins.Transloadit, opts: Partial<plugins.TransloaditOptions>): Uppy;
  434. use(Plugin: plugins.Dummy, opts: Partial<plugins.DummyOptions>): Uppy;
  435. use(Plugin: plugins.FileInput, opts: Partial<plugins.FileInputOptions>): Uppy;
  436. use(Plugin: plugins.Form, opts: Partial<plugins.FormOptions>): Uppy;
  437. use(Plugin: plugins.Informer, opts: Partial<plugins.InformerOptions>): Uppy;
  438. use(Plugin: plugins.MagicLog, opts: Partial<plugins.MagicLogOptions>): Uppy;
  439. use(Plugin: plugins.ProgressBar, opts: Partial<plugins.ProgressBarOptions>): Uppy;
  440. use(Plugin: plugins.ReduxDevTools, opts: Partial<plugins.ReduxDevToolsOptions>): Uppy;
  441. getPlugin(name: string): Plugin;
  442. iteratePlugins(method: any): void;
  443. removePlugin(instance: Plugin): void;
  444. close(): void;
  445. info(message: string | { message: string; details: string; }, type?: LogType, duration?: number): void;
  446. hideInfo(): void;
  447. log(msg: string, type?: LogType): void;
  448. run(): Uppy;
  449. restore(uploadID: string): Promise<any>;
  450. addResultData(uploadID: string, data: any): void;
  451. upload(): Promise<any>;
  452. }
  453. }
  454. export function Core(conf?: Partial<core.CoreConfig>): core.Uppy;