@ckeditor/ckeditor5-upload 41.3.1 → 41.4.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. package/dist/index-content.css +4 -0
  2. package/dist/index-editor.css +4 -0
  3. package/dist/index.css +4 -0
  4. package/dist/index.js +582 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/translations/ar.d.ts +8 -0
  7. package/dist/translations/ar.js +5 -0
  8. package/dist/translations/az.d.ts +8 -0
  9. package/dist/translations/az.js +5 -0
  10. package/dist/translations/bg.d.ts +8 -0
  11. package/dist/translations/bg.js +5 -0
  12. package/dist/translations/bn.d.ts +8 -0
  13. package/dist/translations/bn.js +5 -0
  14. package/dist/translations/ca.d.ts +8 -0
  15. package/dist/translations/ca.js +5 -0
  16. package/dist/translations/cs.d.ts +8 -0
  17. package/dist/translations/cs.js +5 -0
  18. package/dist/translations/da.d.ts +8 -0
  19. package/dist/translations/da.js +5 -0
  20. package/dist/translations/de-ch.d.ts +8 -0
  21. package/dist/translations/de-ch.js +5 -0
  22. package/dist/translations/de.d.ts +8 -0
  23. package/dist/translations/de.js +5 -0
  24. package/dist/translations/el.d.ts +8 -0
  25. package/dist/translations/el.js +5 -0
  26. package/dist/translations/en-au.d.ts +8 -0
  27. package/dist/translations/en-au.js +5 -0
  28. package/dist/translations/en-gb.d.ts +8 -0
  29. package/dist/translations/en-gb.js +5 -0
  30. package/dist/translations/en.d.ts +8 -0
  31. package/dist/translations/en.js +5 -0
  32. package/dist/translations/es-co.d.ts +8 -0
  33. package/dist/translations/es-co.js +5 -0
  34. package/dist/translations/es.d.ts +8 -0
  35. package/dist/translations/es.js +5 -0
  36. package/dist/translations/et.d.ts +8 -0
  37. package/dist/translations/et.js +5 -0
  38. package/dist/translations/fa.d.ts +8 -0
  39. package/dist/translations/fa.js +5 -0
  40. package/dist/translations/fi.d.ts +8 -0
  41. package/dist/translations/fi.js +5 -0
  42. package/dist/translations/fr.d.ts +8 -0
  43. package/dist/translations/fr.js +5 -0
  44. package/dist/translations/gl.d.ts +8 -0
  45. package/dist/translations/gl.js +5 -0
  46. package/dist/translations/he.d.ts +8 -0
  47. package/dist/translations/he.js +5 -0
  48. package/dist/translations/hi.d.ts +8 -0
  49. package/dist/translations/hi.js +5 -0
  50. package/dist/translations/hr.d.ts +8 -0
  51. package/dist/translations/hr.js +5 -0
  52. package/dist/translations/hu.d.ts +8 -0
  53. package/dist/translations/hu.js +5 -0
  54. package/dist/translations/id.d.ts +8 -0
  55. package/dist/translations/id.js +5 -0
  56. package/dist/translations/it.d.ts +8 -0
  57. package/dist/translations/it.js +5 -0
  58. package/dist/translations/ja.d.ts +8 -0
  59. package/dist/translations/ja.js +5 -0
  60. package/dist/translations/ko.d.ts +8 -0
  61. package/dist/translations/ko.js +5 -0
  62. package/dist/translations/ku.d.ts +8 -0
  63. package/dist/translations/ku.js +5 -0
  64. package/dist/translations/lt.d.ts +8 -0
  65. package/dist/translations/lt.js +5 -0
  66. package/dist/translations/lv.d.ts +8 -0
  67. package/dist/translations/lv.js +5 -0
  68. package/dist/translations/ms.d.ts +8 -0
  69. package/dist/translations/ms.js +5 -0
  70. package/dist/translations/nb.d.ts +8 -0
  71. package/dist/translations/nb.js +5 -0
  72. package/dist/translations/ne.d.ts +8 -0
  73. package/dist/translations/ne.js +5 -0
  74. package/dist/translations/nl.d.ts +8 -0
  75. package/dist/translations/nl.js +5 -0
  76. package/dist/translations/no.d.ts +8 -0
  77. package/dist/translations/no.js +5 -0
  78. package/dist/translations/pl.d.ts +8 -0
  79. package/dist/translations/pl.js +5 -0
  80. package/dist/translations/pt-br.d.ts +8 -0
  81. package/dist/translations/pt-br.js +5 -0
  82. package/dist/translations/pt.d.ts +8 -0
  83. package/dist/translations/pt.js +5 -0
  84. package/dist/translations/ro.d.ts +8 -0
  85. package/dist/translations/ro.js +5 -0
  86. package/dist/translations/ru.d.ts +8 -0
  87. package/dist/translations/ru.js +5 -0
  88. package/dist/translations/sk.d.ts +8 -0
  89. package/dist/translations/sk.js +5 -0
  90. package/dist/translations/sq.d.ts +8 -0
  91. package/dist/translations/sq.js +5 -0
  92. package/dist/translations/sr-latn.d.ts +8 -0
  93. package/dist/translations/sr-latn.js +5 -0
  94. package/dist/translations/sr.d.ts +8 -0
  95. package/dist/translations/sr.js +5 -0
  96. package/dist/translations/sv.d.ts +8 -0
  97. package/dist/translations/sv.js +5 -0
  98. package/dist/translations/th.d.ts +8 -0
  99. package/dist/translations/th.js +5 -0
  100. package/dist/translations/tk.d.ts +8 -0
  101. package/dist/translations/tk.js +5 -0
  102. package/dist/translations/tr.d.ts +8 -0
  103. package/dist/translations/tr.js +5 -0
  104. package/dist/translations/ug.d.ts +8 -0
  105. package/dist/translations/ug.js +5 -0
  106. package/dist/translations/uk.d.ts +8 -0
  107. package/dist/translations/uk.js +5 -0
  108. package/dist/translations/ur.d.ts +8 -0
  109. package/dist/translations/ur.js +5 -0
  110. package/dist/translations/uz.d.ts +8 -0
  111. package/dist/translations/uz.js +5 -0
  112. package/dist/translations/vi.d.ts +8 -0
  113. package/dist/translations/vi.js +5 -0
  114. package/dist/translations/zh-cn.d.ts +8 -0
  115. package/dist/translations/zh-cn.js +5 -0
  116. package/dist/translations/zh.d.ts +8 -0
  117. package/dist/translations/zh.js +5 -0
  118. package/dist/types/adapters/base64uploadadapter.d.ts +37 -0
  119. package/dist/types/adapters/simpleuploadadapter.d.ts +52 -0
  120. package/dist/types/augmentation.d.ts +24 -0
  121. package/dist/types/filereader.d.ts +60 -0
  122. package/dist/types/filerepository.d.ts +346 -0
  123. package/dist/types/index.d.ts +16 -0
  124. package/dist/types/uploadconfig.d.ts +94 -0
  125. package/package.json +4 -3
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+
6
+ import type { Translations } from 'ckeditor5';
7
+ declare const translations: Translations;
8
+ export default translations;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ export default {"zh":{"dictionary":{"Upload in progress":"正在上傳"},getPluralForm(n){return 0;}}}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module upload/adapters/base64uploadadapter
11
+ */
12
+ import { Plugin } from '@ckeditor/ckeditor5-core';
13
+ import FileRepository from '../filerepository.js';
14
+ /**
15
+ * A plugin that converts images inserted into the editor into [Base64 strings](https://en.wikipedia.org/wiki/Base64)
16
+ * in the {@glink installation/getting-started/getting-and-setting-data editor output}.
17
+ *
18
+ * This kind of image upload does not require server processing – images are stored with the rest of the text and
19
+ * displayed by the web browser without additional requests.
20
+ *
21
+ * Check out the {@glink features/images/image-upload/image-upload comprehensive "Image upload overview"} to learn about
22
+ * other ways to upload images into CKEditor 5.
23
+ */
24
+ export default class Base64UploadAdapter extends Plugin {
25
+ /**
26
+ * @inheritDoc
27
+ */
28
+ static get requires(): readonly [typeof FileRepository];
29
+ /**
30
+ * @inheritDoc
31
+ */
32
+ static get pluginName(): "Base64UploadAdapter";
33
+ /**
34
+ * @inheritDoc
35
+ */
36
+ init(): void;
37
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module upload/adapters/simpleuploadadapter
11
+ */
12
+ import { Plugin } from '@ckeditor/ckeditor5-core';
13
+ import FileRepository from '../filerepository.js';
14
+ /**
15
+ * The Simple upload adapter allows uploading images to an application running on your server using
16
+ * the [`XMLHttpRequest`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest) API with a
17
+ * minimal {@link module:upload/uploadconfig~SimpleUploadConfig editor configuration}.
18
+ *
19
+ * ```ts
20
+ * ClassicEditor
21
+ * .create( document.querySelector( '#editor' ), {
22
+ * simpleUpload: {
23
+ * uploadUrl: 'http://example.com',
24
+ * headers: {
25
+ * ...
26
+ * }
27
+ * }
28
+ * } )
29
+ * .then( ... )
30
+ * .catch( ... );
31
+ * ```
32
+ *
33
+ * See the {@glink features/images/image-upload/simple-upload-adapter "Simple upload adapter"} guide to learn how to
34
+ * learn more about the feature (configuration, server–side requirements, etc.).
35
+ *
36
+ * Check out the {@glink features/images/image-upload/image-upload comprehensive "Image upload overview"} to learn about
37
+ * other ways to upload images into CKEditor 5.
38
+ */
39
+ export default class SimpleUploadAdapter extends Plugin {
40
+ /**
41
+ * @inheritDoc
42
+ */
43
+ static get requires(): readonly [typeof FileRepository];
44
+ /**
45
+ * @inheritDoc
46
+ */
47
+ static get pluginName(): "SimpleUploadAdapter";
48
+ /**
49
+ * @inheritDoc
50
+ */
51
+ init(): void;
52
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ import type { SimpleUploadConfig, FileRepository, SimpleUploadAdapter, Base64UploadAdapter } from './index.js';
10
+ declare module '@ckeditor/ckeditor5-core' {
11
+ interface EditorConfig {
12
+ /**
13
+ * The configuration of the {@link module:upload/adapters/simpleuploadadapter~SimpleUploadAdapter simple upload adapter}.
14
+ *
15
+ * Read more in {@link module:upload/uploadconfig~SimpleUploadConfig}.
16
+ */
17
+ simpleUpload?: SimpleUploadConfig;
18
+ }
19
+ interface PluginsMap {
20
+ [FileRepository.pluginName]: FileRepository;
21
+ [SimpleUploadAdapter.pluginName]: SimpleUploadAdapter;
22
+ [Base64UploadAdapter.pluginName]: Base64UploadAdapter;
23
+ }
24
+ }
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ declare const FileReader_base: {
10
+ new (): import("@ckeditor/ckeditor5-utils").Observable;
11
+ prototype: import("@ckeditor/ckeditor5-utils").Observable;
12
+ };
13
+ /**
14
+ * Wrapper over the native `FileReader`.
15
+ */
16
+ export default class FileReader extends FileReader_base {
17
+ total: number;
18
+ /**
19
+ * Instance of native FileReader.
20
+ */
21
+ private readonly _reader;
22
+ /**
23
+ * Holds the data of an already loaded file. The file must be first loaded
24
+ * by using {@link module:upload/filereader~FileReader#read `read()`}.
25
+ */
26
+ private _data?;
27
+ /**
28
+ * Number of bytes loaded.
29
+ *
30
+ * @readonly
31
+ * @observable
32
+ */
33
+ loaded: number;
34
+ /**
35
+ * Creates an instance of the FileReader.
36
+ */
37
+ constructor();
38
+ /**
39
+ * Returns error that occurred during file reading.
40
+ */
41
+ get error(): DOMException | null;
42
+ /**
43
+ * Holds the data of an already loaded file. The file must be first loaded
44
+ * by using {@link module:upload/filereader~FileReader#read `read()`}.
45
+ */
46
+ get data(): string | undefined;
47
+ /**
48
+ * Reads the provided file.
49
+ *
50
+ * @param file Native File object.
51
+ * @returns Returns a promise that will be resolved with file's content.
52
+ * The promise will be rejected in case of an error or when the reading process is aborted.
53
+ */
54
+ read(file: File): Promise<string>;
55
+ /**
56
+ * Aborts file reader.
57
+ */
58
+ abort(): void;
59
+ }
60
+ export {};
@@ -0,0 +1,346 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module upload/filerepository
11
+ */
12
+ import { Plugin, PendingActions } from '@ckeditor/ckeditor5-core';
13
+ import { Collection } from '@ckeditor/ckeditor5-utils';
14
+ /**
15
+ * File repository plugin. A central point for managing file upload.
16
+ *
17
+ * To use it, first you need an upload adapter. Upload adapter's job is to handle communication with the server
18
+ * (sending the file and handling server's response). You can use one of the existing plugins introducing upload adapters
19
+ * (e.g. {@link module:easy-image/cloudservicesuploadadapter~CloudServicesUploadAdapter} or
20
+ * {@link module:adapter-ckfinder/uploadadapter~CKFinderUploadAdapter}) or write your own one – see
21
+ * the {@glink framework/deep-dive/upload-adapter Custom image upload adapter deep-dive} guide.
22
+ *
23
+ * Then, you can use {@link module:upload/filerepository~FileRepository#createLoader `createLoader()`} and the returned
24
+ * {@link module:upload/filerepository~FileLoader} instance to load and upload files.
25
+ */
26
+ export default class FileRepository extends Plugin {
27
+ /**
28
+ * Collection of loaders associated with this repository.
29
+ */
30
+ loaders: Collection<FileLoader>;
31
+ /**
32
+ * A factory function which should be defined before using `FileRepository`.
33
+ *
34
+ * It should return a new instance of {@link module:upload/filerepository~UploadAdapter} that will be used to upload files.
35
+ * {@link module:upload/filerepository~FileLoader} instance associated with the adapter
36
+ * will be passed to that function.
37
+ *
38
+ * For more information and example see {@link module:upload/filerepository~UploadAdapter}.
39
+ */
40
+ createUploadAdapter?: (loader: FileLoader) => UploadAdapter;
41
+ /**
42
+ * Loaders mappings used to retrieve loaders references.
43
+ */
44
+ private _loadersMap;
45
+ /**
46
+ * Reference to a pending action registered in a {@link module:core/pendingactions~PendingActions} plugin
47
+ * while upload is in progress. When there is no upload then value is `null`.
48
+ */
49
+ private _pendingAction;
50
+ /**
51
+ * Number of bytes uploaded.
52
+ *
53
+ * @readonly
54
+ * @observable
55
+ */
56
+ uploaded: number;
57
+ /**
58
+ * Number of total bytes to upload.
59
+ *
60
+ * It might be different than the file size because of headers and additional data.
61
+ * It contains `null` if value is not available yet, so it's better to use {@link #uploadedPercent} to monitor
62
+ * the progress.
63
+ *
64
+ * @readonly
65
+ * @observable
66
+ */
67
+ uploadTotal: number | null;
68
+ /**
69
+ * Upload progress in percents.
70
+ *
71
+ * @readonly
72
+ * @observable
73
+ */
74
+ uploadedPercent: number;
75
+ /**
76
+ * @inheritDoc
77
+ */
78
+ static get pluginName(): "FileRepository";
79
+ /**
80
+ * @inheritDoc
81
+ */
82
+ static get requires(): readonly [typeof PendingActions];
83
+ /**
84
+ * @inheritDoc
85
+ */
86
+ init(): void;
87
+ /**
88
+ * Returns the loader associated with specified file or promise.
89
+ *
90
+ * To get loader by id use `fileRepository.loaders.get( id )`.
91
+ *
92
+ * @param fileOrPromise Native file or promise handle.
93
+ */
94
+ getLoader(fileOrPromise: File | Promise<File>): FileLoader | null;
95
+ /**
96
+ * Creates a loader instance for the given file.
97
+ *
98
+ * Requires {@link #createUploadAdapter} factory to be defined.
99
+ *
100
+ * @param fileOrPromise Native File object or native Promise object which resolves to a File.
101
+ */
102
+ createLoader(fileOrPromise: File | Promise<File>): FileLoader | null;
103
+ /**
104
+ * Destroys the given loader.
105
+ *
106
+ * @param fileOrPromiseOrLoader File or Promise associated with that loader or loader itself.
107
+ */
108
+ destroyLoader(fileOrPromiseOrLoader: File | Promise<File> | FileLoader): void;
109
+ /**
110
+ * Registers or deregisters pending action bound with upload progress.
111
+ */
112
+ private _updatePendingAction;
113
+ }
114
+ declare const FileLoader_base: {
115
+ new (): import("@ckeditor/ckeditor5-utils").Observable;
116
+ prototype: import("@ckeditor/ckeditor5-utils").Observable;
117
+ };
118
+ /**
119
+ * File loader class.
120
+ *
121
+ * It is used to control the process of reading the file and uploading it using the specified upload adapter.
122
+ */
123
+ declare class FileLoader extends FileLoader_base {
124
+ /**
125
+ * Unique id of FileLoader instance.
126
+ *
127
+ * @readonly
128
+ */
129
+ readonly id: string;
130
+ /**
131
+ * Additional wrapper over the initial file promise passed to this loader.
132
+ */
133
+ private _filePromiseWrapper;
134
+ /**
135
+ * Adapter instance associated with this file loader.
136
+ */
137
+ private _adapter;
138
+ /**
139
+ * FileReader used by FileLoader.
140
+ */
141
+ private _reader;
142
+ /**
143
+ * Current status of FileLoader. It can be one of the following:
144
+ *
145
+ * * 'idle',
146
+ * * 'reading',
147
+ * * 'uploading',
148
+ * * 'aborted',
149
+ * * 'error'.
150
+ *
151
+ * When reading status can change in a following way:
152
+ *
153
+ * `idle` -> `reading` -> `idle`
154
+ * `idle` -> `reading -> `aborted`
155
+ * `idle` -> `reading -> `error`
156
+ *
157
+ * When uploading status can change in a following way:
158
+ *
159
+ * `idle` -> `uploading` -> `idle`
160
+ * `idle` -> `uploading` -> `aborted`
161
+ * `idle` -> `uploading` -> `error`
162
+ *
163
+ * @readonly
164
+ * @observable
165
+ */
166
+ status: 'idle' | 'reading' | 'uploading' | 'aborted' | 'error';
167
+ /**
168
+ * Number of bytes uploaded.
169
+ *
170
+ * @readonly
171
+ * @observable
172
+ */
173
+ uploaded: number;
174
+ /**
175
+ * Number of total bytes to upload.
176
+ *
177
+ * @readonly
178
+ * @observable
179
+ */
180
+ uploadTotal: number | null;
181
+ /**
182
+ * Upload progress in percents.
183
+ *
184
+ * @readonly
185
+ * @observable
186
+ */
187
+ uploadedPercent: number;
188
+ /**
189
+ * Response of the upload.
190
+ *
191
+ * @readonly
192
+ * @observable
193
+ */
194
+ uploadResponse?: UploadResponse | null;
195
+ /**
196
+ * Creates a new instance of `FileLoader`.
197
+ *
198
+ * @param filePromise A promise which resolves to a file instance.
199
+ * @param uploadAdapterCreator The function which returns {@link module:upload/filerepository~UploadAdapter} instance.
200
+ */
201
+ constructor(filePromise: Promise<File>, uploadAdapterCreator: (loader: FileLoader) => UploadAdapter);
202
+ /**
203
+ * A `Promise` which resolves to a `File` instance associated with this file loader.
204
+ */
205
+ get file(): Promise<File | null>;
206
+ /**
207
+ * Returns the file data. To read its data, you need for first load the file
208
+ * by using the {@link module:upload/filerepository~FileLoader#read `read()`} method.
209
+ */
210
+ get data(): string | undefined;
211
+ /**
212
+ * Reads file using {@link module:upload/filereader~FileReader}.
213
+ *
214
+ * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `filerepository-read-wrong-status` when status
215
+ * is different than `idle`.
216
+ *
217
+ * Example usage:
218
+ *
219
+ * ```ts
220
+ * fileLoader.read()
221
+ * .then( data => { ... } )
222
+ * .catch( err => {
223
+ * if ( err === 'aborted' ) {
224
+ * console.log( 'Reading aborted.' );
225
+ * } else {
226
+ * console.log( 'Reading error.', err );
227
+ * }
228
+ * } );
229
+ * ```
230
+ *
231
+ * @returns Returns promise that will be resolved with read data. Promise will be rejected if error
232
+ * occurs or if read process is aborted.
233
+ */
234
+ read(): Promise<string>;
235
+ /**
236
+ * Reads file using the provided {@link module:upload/filerepository~UploadAdapter}.
237
+ *
238
+ * Throws {@link module:utils/ckeditorerror~CKEditorError CKEditorError} `filerepository-upload-wrong-status` when status
239
+ * is different than `idle`.
240
+ * Example usage:
241
+ *
242
+ * ```ts
243
+ * fileLoader.upload()
244
+ * .then( data => { ... } )
245
+ * .catch( e => {
246
+ * if ( e === 'aborted' ) {
247
+ * console.log( 'Uploading aborted.' );
248
+ * } else {
249
+ * console.log( 'Uploading error.', e );
250
+ * }
251
+ * } );
252
+ * ```
253
+ *
254
+ * @returns Returns promise that will be resolved with response data. Promise will be rejected if error
255
+ * occurs or if read process is aborted.
256
+ */
257
+ upload(): Promise<UploadResponse>;
258
+ /**
259
+ * Aborts loading process.
260
+ */
261
+ abort(): void;
262
+ /**
263
+ * Performs cleanup.
264
+ *
265
+ * @internal
266
+ */
267
+ _destroy(): void;
268
+ /**
269
+ * Wraps a given file promise into another promise giving additional
270
+ * control (resolving, rejecting, checking if fulfilled) over it.
271
+ *
272
+ * @param filePromise The initial file promise to be wrapped.
273
+ */
274
+ private _createFilePromiseWrapper;
275
+ }
276
+ export type { FileLoader };
277
+ /**
278
+ * Upload adapter interface used by the {@link module:upload/filerepository~FileRepository file repository}
279
+ * to handle file upload. An upload adapter is a bridge between the editor and server that handles file uploads.
280
+ * It should contain a logic necessary to initiate an upload process and monitor its progress.
281
+ *
282
+ * Learn how to develop your own upload adapter for CKEditor 5 in the
283
+ * {@glink framework/deep-dive/upload-adapter "Custom upload adapter"} guide.
284
+ *
285
+ * @interface UploadAdapter
286
+ */
287
+ export interface UploadAdapter {
288
+ /**
289
+ * Executes the upload process.
290
+ * This method should return a promise that will resolve when data will be uploaded to server. Promise should be
291
+ * resolved with an object containing information about uploaded file:
292
+ *
293
+ * ```json
294
+ * {
295
+ * default: 'http://server/default-size.image.png'
296
+ * }
297
+ * ```
298
+ *
299
+ * Additionally, other image sizes can be provided:
300
+ *
301
+ * ```json
302
+ * {
303
+ * default: 'http://server/default-size.image.png',
304
+ * '160': 'http://server/size-160.image.png',
305
+ * '500': 'http://server/size-500.image.png',
306
+ * '1000': 'http://server/size-1000.image.png',
307
+ * '1052': 'http://server/default-size.image.png'
308
+ * }
309
+ * ```
310
+ *
311
+ * You can also pass additional properties from the server. In this case you need to wrap URLs
312
+ * in the `urls` object and pass additional properties along the `urls` property.
313
+ *
314
+ * ```json
315
+ * {
316
+ * myCustomProperty: 'foo',
317
+ * urls: {
318
+ * default: 'http://server/default-size.image.png',
319
+ * '160': 'http://server/size-160.image.png',
320
+ * '500': 'http://server/size-500.image.png',
321
+ * '1000': 'http://server/size-1000.image.png',
322
+ * '1052': 'http://server/default-size.image.png'
323
+ * }
324
+ * }
325
+ * ```
326
+ *
327
+ * NOTE: When returning multiple images, the widest returned one should equal the default one. It is essential to
328
+ * correctly set `width` attribute of the image. See this discussion:
329
+ * https://github.com/ckeditor/ckeditor5-easy-image/issues/4 for more information.
330
+ *
331
+ * Take a look at {@link module:upload/filerepository~UploadAdapter example Adapter implementation} and
332
+ * {@link module:upload/filerepository~FileRepository#createUploadAdapter createUploadAdapter method}.
333
+ *
334
+ * @returns Promise that should be resolved when data is uploaded.
335
+ */
336
+ upload(): Promise<UploadResponse>;
337
+ /**
338
+ * Aborts the upload process.
339
+ * After aborting it should reject promise returned from {@link #upload upload()}.
340
+ *
341
+ * Take a look at {@link module:upload/filerepository~UploadAdapter example Adapter implementation} and
342
+ * {@link module:upload/filerepository~FileRepository#createUploadAdapter createUploadAdapter method}.
343
+ */
344
+ abort?(): void;
345
+ }
346
+ export type UploadResponse = Record<string, unknown>;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module upload
11
+ */
12
+ export { default as FileRepository, type UploadAdapter, type UploadResponse, type FileLoader } from './filerepository.js';
13
+ export { default as Base64UploadAdapter } from './adapters/base64uploadadapter.js';
14
+ export { default as SimpleUploadAdapter } from './adapters/simpleuploadadapter.js';
15
+ export type { SimpleUploadConfig } from './uploadconfig.js';
16
+ import './augmentation.js';
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
3
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
4
+ */
5
+ /**
6
+ * @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
7
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
8
+ */
9
+ /**
10
+ * @module upload/uploadconfig
11
+ */
12
+ /**
13
+ * The configuration of the {@link module:upload/adapters/simpleuploadadapter~SimpleUploadAdapter simple upload adapter}.
14
+ *
15
+ * ```ts
16
+ * ClassicEditor
17
+ * .create( editorElement, {
18
+ * simpleUpload: {
19
+ * // The URL the images are uploaded to.
20
+ * uploadUrl: 'http://example.com',
21
+ *
22
+ * // Headers sent along with the XMLHttpRequest to the upload server.
23
+ * headers: {
24
+ * ...
25
+ * }
26
+ * }
27
+ * } );
28
+ * .then( ... )
29
+ * .catch( ... );
30
+ * ```
31
+ *
32
+ * See the {@glink features/images/image-upload/simple-upload-adapter "Simple upload adapter"} guide to learn more.
33
+ *
34
+ * See {@link module:core/editor/editorconfig~EditorConfig all editor configuration options}.
35
+ */
36
+ export interface SimpleUploadConfig {
37
+ /**
38
+ * The path (URL) to the server (application) which handles the file upload. When specified, enables the automatic
39
+ * upload of resources (images) inserted into the editor content.
40
+ *
41
+ * Learn more about the server application requirements in the
42
+ * {@glink features/images/image-upload/simple-upload-adapter#server-side-configuration "Server-side configuration"} section
43
+ * of the feature guide.
44
+ */
45
+ uploadUrl: string;
46
+ /**
47
+ * An object that defines additional [headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) sent with
48
+ * the request to the server during the upload. This is the right place to implement security mechanisms like
49
+ * authentication and [CSRF](https://developer.mozilla.org/en-US/docs/Glossary/CSRF) protection.
50
+ *
51
+ * ```ts
52
+ * ClassicEditor
53
+ * .create( editorElement, {
54
+ * simpleUpload: {
55
+ * headers: {
56
+ * 'X-CSRF-TOKEN': 'CSRF-Token',
57
+ * Authorization: 'Bearer <JSON Web Token>'
58
+ * }
59
+ * }
60
+ * } );
61
+ * .then( ... )
62
+ * .catch( ... );
63
+ * ```
64
+ *
65
+ * Learn more about the server application requirements in the
66
+ * {@glink features/images/image-upload/simple-upload-adapter#server-side-configuration "Server-side configuration"} section
67
+ * of the feature guide.
68
+ */
69
+ headers?: Record<string, string>;
70
+ /**
71
+ * This flag enables the
72
+ * [`withCredentials`](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials)
73
+ * property of the request sent to the server during the upload. It affects cross-site requests only and, for instance,
74
+ * allows credentials such as cookies to be sent along with the request.
75
+ *
76
+ * ```ts
77
+ * ClassicEditor
78
+ * .create( editorElement, {
79
+ * simpleUpload: {
80
+ * withCredentials: true
81
+ * }
82
+ * } );
83
+ * .then( ... )
84
+ * .catch( ... );
85
+ * ```
86
+ *
87
+ * Learn more about the server application requirements in the
88
+ * {@glink features/images/image-upload/simple-upload-adapter#server-side-configuration "Server-side configuration"} section
89
+ * of the feature guide.
90
+ *
91
+ * @default false
92
+ */
93
+ withCredentials?: boolean;
94
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-upload",
3
- "version": "41.3.1",
3
+ "version": "41.4.0-alpha.0",
4
4
  "description": "Upload feature for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -12,8 +12,8 @@
12
12
  "type": "module",
13
13
  "main": "src/index.js",
14
14
  "dependencies": {
15
- "@ckeditor/ckeditor5-core": "41.3.1",
16
- "@ckeditor/ckeditor5-utils": "41.3.1"
15
+ "@ckeditor/ckeditor5-core": "41.4.0-alpha.0",
16
+ "@ckeditor/ckeditor5-utils": "41.4.0-alpha.0"
17
17
  },
18
18
  "author": "CKSource (http://cksource.com/)",
19
19
  "license": "GPL-2.0-or-later",
@@ -25,6 +25,7 @@
25
25
  "directory": "packages/ckeditor5-upload"
26
26
  },
27
27
  "files": [
28
+ "dist",
28
29
  "lang",
29
30
  "src/**/*.js",
30
31
  "src/**/*.d.ts",