@ckeditor/ckeditor5-utils 40.0.0 → 40.2.0
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.
- package/CHANGELOG.md +26 -26
- package/LICENSE.md +3 -3
- package/package.json +1 -1
- package/src/abortabledebounce.d.ts +17 -0
- package/src/abortabledebounce.js +22 -0
- package/src/areconnectedthroughproperties.d.ts +11 -11
- package/src/areconnectedthroughproperties.js +73 -73
- package/src/ckeditorerror.d.ts +123 -123
- package/src/ckeditorerror.js +176 -176
- package/src/collection.d.ts +433 -427
- package/src/collection.js +583 -575
- package/src/comparearrays.d.ts +30 -30
- package/src/comparearrays.js +47 -47
- package/src/config.d.ts +163 -163
- package/src/config.js +163 -162
- package/src/count.d.ts +18 -18
- package/src/count.js +24 -24
- package/src/delay.d.ts +19 -19
- package/src/delay.js +26 -26
- package/src/diff.d.ts +31 -31
- package/src/diff.js +115 -115
- package/src/difftochanges.d.ts +59 -59
- package/src/difftochanges.js +79 -79
- package/src/dom/createelement.d.ts +57 -57
- package/src/dom/createelement.js +40 -40
- package/src/dom/emittermixin.d.ts +142 -142
- package/src/dom/emittermixin.js +239 -239
- package/src/dom/findclosestscrollableancestor.d.ts +11 -11
- package/src/dom/findclosestscrollableancestor.js +31 -31
- package/src/dom/getancestors.d.ts +17 -17
- package/src/dom/getancestors.js +27 -27
- package/src/dom/getborderwidths.d.ts +24 -24
- package/src/dom/getborderwidths.js +24 -24
- package/src/dom/getcommonancestor.d.ts +12 -12
- package/src/dom/getcommonancestor.js +25 -25
- package/src/dom/getdatafromelement.d.ts +14 -14
- package/src/dom/getdatafromelement.js +20 -20
- package/src/dom/getpositionedancestor.d.ts +10 -10
- package/src/dom/getpositionedancestor.js +22 -22
- package/src/dom/global.d.ts +32 -32
- package/src/dom/global.js +35 -35
- package/src/dom/indexof.d.ts +14 -14
- package/src/dom/indexof.js +21 -21
- package/src/dom/insertat.d.ts +15 -15
- package/src/dom/insertat.js +17 -17
- package/src/dom/iscomment.d.ts +11 -11
- package/src/dom/iscomment.js +14 -14
- package/src/dom/isnode.d.ts +11 -11
- package/src/dom/isnode.js +21 -21
- package/src/dom/isrange.d.ts +11 -11
- package/src/dom/isrange.js +13 -13
- package/src/dom/istext.d.ts +11 -11
- package/src/dom/istext.js +13 -13
- package/src/dom/isvalidattributename.d.ts +10 -10
- package/src/dom/isvalidattributename.js +22 -22
- package/src/dom/isvisible.d.ts +18 -18
- package/src/dom/isvisible.js +20 -20
- package/src/dom/iswindow.d.ts +11 -11
- package/src/dom/iswindow.js +22 -22
- package/src/dom/position.d.ts +211 -211
- package/src/dom/position.js +313 -313
- package/src/dom/rect.d.ts +195 -195
- package/src/dom/rect.js +474 -474
- package/src/dom/remove.d.ts +13 -13
- package/src/dom/remove.js +18 -18
- package/src/dom/resizeobserver.d.ts +74 -74
- package/src/dom/resizeobserver.js +126 -126
- package/src/dom/scroll.d.ts +73 -73
- package/src/dom/scroll.js +383 -383
- package/src/dom/setdatainelement.d.ts +14 -14
- package/src/dom/setdatainelement.js +20 -20
- package/src/dom/tounit.d.ts +22 -22
- package/src/dom/tounit.js +16 -16
- package/src/elementreplacer.d.ts +31 -31
- package/src/elementreplacer.js +43 -43
- package/src/emittermixin.d.ts +312 -312
- package/src/emittermixin.js +453 -453
- package/src/env.d.ts +117 -117
- package/src/env.js +122 -122
- package/src/eventinfo.d.ts +58 -58
- package/src/eventinfo.js +26 -26
- package/src/fastdiff.d.ts +112 -112
- package/src/fastdiff.js +248 -248
- package/src/first.d.ts +11 -11
- package/src/first.js +17 -17
- package/src/focustracker.d.ts +75 -75
- package/src/focustracker.js +95 -95
- package/src/index.d.ts +64 -61
- package/src/index.js +63 -60
- package/src/inserttopriorityarray.d.ts +30 -30
- package/src/inserttopriorityarray.js +21 -21
- package/src/isiterable.d.ts +14 -14
- package/src/isiterable.js +16 -16
- package/src/keyboard.d.ts +126 -126
- package/src/keyboard.js +221 -221
- package/src/keystrokehandler.d.ts +87 -87
- package/src/keystrokehandler.js +122 -122
- package/src/language.d.ts +17 -17
- package/src/language.js +19 -19
- package/src/locale.d.ts +120 -120
- package/src/locale.js +76 -76
- package/src/mapsequal.d.ts +15 -15
- package/src/mapsequal.js +27 -27
- package/src/mix.d.ts +85 -85
- package/src/mix.js +50 -50
- package/src/nth.d.ts +16 -16
- package/src/nth.js +24 -24
- package/src/objecttomap.d.ts +23 -23
- package/src/objecttomap.js +27 -27
- package/src/observablemixin.d.ts +560 -560
- package/src/observablemixin.js +580 -580
- package/src/priorities.d.ts +33 -33
- package/src/priorities.js +23 -23
- package/src/retry.d.ts +33 -0
- package/src/retry.js +47 -0
- package/src/splicearray.d.ts +26 -26
- package/src/splicearray.js +40 -40
- package/src/spy.d.ts +21 -21
- package/src/spy.js +22 -22
- package/src/toarray.d.ts +25 -25
- package/src/toarray.js +7 -7
- package/src/tomap.d.ts +19 -19
- package/src/tomap.js +29 -29
- package/src/translation-service.d.ts +168 -168
- package/src/translation-service.js +198 -198
- package/src/uid.d.ts +15 -15
- package/src/uid.js +57 -57
- package/src/unicode.d.ts +54 -54
- package/src/unicode.js +85 -85
- package/src/verifylicense.d.ts +15 -15
- package/src/verifylicense.js +87 -87
- package/src/version.d.ts +10 -10
- package/src/version.js +153 -153
- package/src/wait.d.ts +16 -0
- package/src/wait.js +29 -0
package/src/version.js
CHANGED
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license Copyright (c) 2003-2023, 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
|
-
* @module utils/version
|
|
7
|
-
*/
|
|
8
|
-
import CKEditorError from './ckeditorerror';
|
|
9
|
-
const version = '40.
|
|
10
|
-
export default version;
|
|
11
|
-
// The second argument is not a month. It is `monthIndex` and starts from `0`.
|
|
12
|
-
export const releaseDate = new Date(2023,
|
|
13
|
-
/* istanbul ignore next -- @preserve */
|
|
14
|
-
if (globalThis.CKEDITOR_VERSION) {
|
|
15
|
-
/**
|
|
16
|
-
* This error is thrown when due to a mistake in how CKEditor 5 was installed or initialized, some
|
|
17
|
-
* of its modules were duplicated (evaluated and executed twice). Module duplication leads to inevitable runtime
|
|
18
|
-
* errors.
|
|
19
|
-
*
|
|
20
|
-
* There are many situations in which some modules can be loaded twice. In the worst case scenario,
|
|
21
|
-
* you may need to check your project for each of these issues and fix them all.
|
|
22
|
-
*
|
|
23
|
-
* # Trying to add a plugin to an existing build
|
|
24
|
-
*
|
|
25
|
-
* If you import an existing CKEditor 5 build and a plugin like this:
|
|
26
|
-
*
|
|
27
|
-
* ```ts
|
|
28
|
-
* import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
|
|
29
|
-
* import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';
|
|
30
|
-
* ```
|
|
31
|
-
*
|
|
32
|
-
* Then your project loads some CKEditor 5 packages twice. How does it happen?
|
|
33
|
-
*
|
|
34
|
-
* The build package contains a file which is already compiled with webpack. This means
|
|
35
|
-
* that it contains all the necessary code from e.g. `@ckeditor/ckeditor5-engine` and `@ckeditor/ckeditor5-utils`.
|
|
36
|
-
*
|
|
37
|
-
* However, the `Highlight` plugin imports some of the modules from these packages, too. If you ask webpack to
|
|
38
|
-
* build such a project, you will end up with the modules being included (and run) twice &
|
|
39
|
-
* included inside the build package, and second, because they are required by the `Highlight` plugin.
|
|
40
|
-
*
|
|
41
|
-
* Therefore, **you must never add plugins to an existing build** unless your plugin has no dependencies.
|
|
42
|
-
*
|
|
43
|
-
* Adding plugins to a build is done by taking the source version of this build (so, before it was built with webpack)
|
|
44
|
-
* and adding plugins there. In this situation, webpack will know that it only needs to load each plugin once.
|
|
45
|
-
*
|
|
46
|
-
* Read more in the {@glink installation/plugins/installing-plugins Installing plugins} guide.
|
|
47
|
-
*
|
|
48
|
-
* # Confused an editor build with an editor implementation
|
|
49
|
-
*
|
|
50
|
-
* This scenario is very similar to the previous one, but has a different origin.
|
|
51
|
-
*
|
|
52
|
-
* Let's assume that you wanted to use CKEditor 5 from source, as explained in the
|
|
53
|
-
* {@glink installation/advanced/alternative-setups/integrating-from-source-webpack "Building from source"} section
|
|
54
|
-
* or in the {@glink framework/quick-start "Quick start"} guide of CKEditor 5 Framework.
|
|
55
|
-
*
|
|
56
|
-
* The correct way to do so is to import an editor and plugins and run them together like this:
|
|
57
|
-
*
|
|
58
|
-
* ```ts
|
|
59
|
-
* import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
|
|
60
|
-
* import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
|
|
61
|
-
* import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
|
|
62
|
-
* import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
|
|
63
|
-
* import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
|
|
64
|
-
*
|
|
65
|
-
* ClassicEditor
|
|
66
|
-
* .create( document.querySelector( '#editor' ), {
|
|
67
|
-
* plugins: [ Essentials, Paragraph, Bold, Italic ],
|
|
68
|
-
* toolbar: [ 'bold', 'italic' ]
|
|
69
|
-
* } )
|
|
70
|
-
* .then( editor => {
|
|
71
|
-
* console.log( 'Editor was initialized', editor );
|
|
72
|
-
* } )
|
|
73
|
-
* .catch( error => {
|
|
74
|
-
* console.error( error.stack );
|
|
75
|
-
* } );
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* However, you might have mistakenly imported a build instead of the source `ClassicEditor`. In this case
|
|
79
|
-
* your imports will look like this:
|
|
80
|
-
*
|
|
81
|
-
* ```ts
|
|
82
|
-
* import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
|
|
83
|
-
* import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
|
|
84
|
-
* import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
|
|
85
|
-
* import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
|
|
86
|
-
* import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
|
|
87
|
-
* ```
|
|
88
|
-
*
|
|
89
|
-
* This creates the same situation as in the previous section because you use a build together with source plugins.
|
|
90
|
-
*
|
|
91
|
-
* Remember: `@ckeditor/ckeditor5-build-*` packages contain editor builds and `@ckeditor/ckeditor5-editor-*` contain source editors.
|
|
92
|
-
*
|
|
93
|
-
* # Loading two or more builds on one page
|
|
94
|
-
*
|
|
95
|
-
* If you use CKEditor 5 builds, you might have loaded two (or more) `ckeditor.js` files on one web page.
|
|
96
|
-
* Check your web page for duplicated `<script>` elements or make sure your page builder/bundler includes CKEditor only once.
|
|
97
|
-
*
|
|
98
|
-
* If you want to use two different types of editors at once, see the
|
|
99
|
-
* {@glink installation/advanced/using-two-editors "Using two different editors"}
|
|
100
|
-
* section.
|
|
101
|
-
*
|
|
102
|
-
* # Using outdated packages
|
|
103
|
-
*
|
|
104
|
-
* Building CKEditor 5 from source requires using multiple npm packages. These packages have their dependencies
|
|
105
|
-
* to other packages. If you use the latest version of, for example, `@ckeditor/ckeditor5-editor-classic` with
|
|
106
|
-
* an outdated version of `@ckeditor/ckeditor5-image`, npm or yarn will need to install two different versions of
|
|
107
|
-
* `@ckeditor/ckeditor5-core` because `@ckeditor/ckeditor5-editor-classic` and `@ckeditor/ckeditor5-image` may require
|
|
108
|
-
* different versions of the core package.
|
|
109
|
-
*
|
|
110
|
-
* The solution to this issue is to update all packages to their latest version. We recommend
|
|
111
|
-
* using tools like [`npm-check-updates`](https://www.npmjs.com/package/npm-check-updates) which simplify this process.
|
|
112
|
-
*
|
|
113
|
-
* # Conflicting version of dependencies
|
|
114
|
-
*
|
|
115
|
-
* This is a special case of the previous scenario. If you use CKEditor 5 with some third-party plugins,
|
|
116
|
-
* it may happen that even if you use the latest versions of the official packages and the latest version of
|
|
117
|
-
* these third-party packages, there will be a conflict between some of their dependencies.
|
|
118
|
-
*
|
|
119
|
-
* Such a problem can be resolved by either downgrading CKEditor 5 packages (which we do not recommend) or
|
|
120
|
-
* asking the author of the third-party package to upgrade its depdendencies (or forking their project and doing this yourself).
|
|
121
|
-
*
|
|
122
|
-
* **Note:** All official CKEditor 5 packages (excluding integrations and `ckeditor5-dev-*` packages) are released in the
|
|
123
|
-
* same major version. This
|
|
124
|
-
* whether you use packages coming from the same CKEditor 5 version. You can read more about versioning in the
|
|
125
|
-
* {@glink updating/versioning-policy Versioning policy} guide.
|
|
126
|
-
*
|
|
127
|
-
* # Packages were duplicated in `node_modules`
|
|
128
|
-
*
|
|
129
|
-
* In some situations, especially when calling `npm install` multiple times, it may happen
|
|
130
|
-
* that npm will not correctly "deduplicate" packages.
|
|
131
|
-
*
|
|
132
|
-
* Normally, npm deduplicates all packages so, for example, `@ckeditor/ckeditor5-core` is installed only once in `node_modules/`.
|
|
133
|
-
* However, it is known to fail to do so from time to time.
|
|
134
|
-
*
|
|
135
|
-
* We recommend checking if any of the steps listed below help:
|
|
136
|
-
*
|
|
137
|
-
* * `rm -rf node_modules && npm install` to make sure you have a clean `node_modules/` directory. This step
|
|
138
|
-
* is known to help in most cases.
|
|
139
|
-
* * If you use `yarn.lock` or `package-lock.json`, remove it before `npm install`.
|
|
140
|
-
* * Check whether all CKEditor 5 packages are up to date and reinstall them
|
|
141
|
-
* if you changed anything (`rm -rf node_modules && npm install`).
|
|
142
|
-
*
|
|
143
|
-
* If all packages are correct and compatible with each other, the steps above are known to help. If not, you may
|
|
144
|
-
* try to check with `npm ls` how many times packages like `@ckeditor/ckeditor5-core`, `@ckeditor/ckeditor5-engine` and
|
|
145
|
-
*`@ckeditor/ckeditor5-utils` are installed. If more than once, verify which package causes that.
|
|
146
|
-
*
|
|
147
|
-
* @error ckeditor-duplicated-modules
|
|
148
|
-
*/
|
|
149
|
-
throw new CKEditorError('ckeditor-duplicated-modules', null);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
globalThis.CKEDITOR_VERSION = version;
|
|
153
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, 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
|
+
* @module utils/version
|
|
7
|
+
*/
|
|
8
|
+
import CKEditorError from './ckeditorerror';
|
|
9
|
+
const version = '40.2.0';
|
|
10
|
+
export default version;
|
|
11
|
+
// The second argument is not a month. It is `monthIndex` and starts from `0`.
|
|
12
|
+
export const releaseDate = new Date(2023, 11, 12);
|
|
13
|
+
/* istanbul ignore next -- @preserve */
|
|
14
|
+
if (globalThis.CKEDITOR_VERSION) {
|
|
15
|
+
/**
|
|
16
|
+
* This error is thrown when due to a mistake in how CKEditor 5 was installed or initialized, some
|
|
17
|
+
* of its modules were duplicated (evaluated and executed twice). Module duplication leads to inevitable runtime
|
|
18
|
+
* errors.
|
|
19
|
+
*
|
|
20
|
+
* There are many situations in which some modules can be loaded twice. In the worst case scenario,
|
|
21
|
+
* you may need to check your project for each of these issues and fix them all.
|
|
22
|
+
*
|
|
23
|
+
* # Trying to add a plugin to an existing build
|
|
24
|
+
*
|
|
25
|
+
* If you import an existing CKEditor 5 build and a plugin like this:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
|
|
29
|
+
* import Highlight from '@ckeditor/ckeditor5-highlight/src/highlight';
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* Then your project loads some CKEditor 5 packages twice. How does it happen?
|
|
33
|
+
*
|
|
34
|
+
* The build package contains a file which is already compiled with webpack. This means
|
|
35
|
+
* that it contains all the necessary code from e.g. `@ckeditor/ckeditor5-engine` and `@ckeditor/ckeditor5-utils`.
|
|
36
|
+
*
|
|
37
|
+
* However, the `Highlight` plugin imports some of the modules from these packages, too. If you ask webpack to
|
|
38
|
+
* build such a project, you will end up with the modules being included (and run) twice – first, because they are
|
|
39
|
+
* included inside the build package, and second, because they are required by the `Highlight` plugin.
|
|
40
|
+
*
|
|
41
|
+
* Therefore, **you must never add plugins to an existing build** unless your plugin has no dependencies.
|
|
42
|
+
*
|
|
43
|
+
* Adding plugins to a build is done by taking the source version of this build (so, before it was built with webpack)
|
|
44
|
+
* and adding plugins there. In this situation, webpack will know that it only needs to load each plugin once.
|
|
45
|
+
*
|
|
46
|
+
* Read more in the {@glink installation/plugins/installing-plugins Installing plugins} guide.
|
|
47
|
+
*
|
|
48
|
+
* # Confused an editor build with an editor implementation
|
|
49
|
+
*
|
|
50
|
+
* This scenario is very similar to the previous one, but has a different origin.
|
|
51
|
+
*
|
|
52
|
+
* Let's assume that you wanted to use CKEditor 5 from source, as explained in the
|
|
53
|
+
* {@glink installation/advanced/alternative-setups/integrating-from-source-webpack "Building from source"} section
|
|
54
|
+
* or in the {@glink framework/quick-start "Quick start"} guide of CKEditor 5 Framework.
|
|
55
|
+
*
|
|
56
|
+
* The correct way to do so is to import an editor and plugins and run them together like this:
|
|
57
|
+
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* import ClassicEditor from '@ckeditor/ckeditor5-editor-classic/src/classiceditor';
|
|
60
|
+
* import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
|
|
61
|
+
* import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
|
|
62
|
+
* import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
|
|
63
|
+
* import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
|
|
64
|
+
*
|
|
65
|
+
* ClassicEditor
|
|
66
|
+
* .create( document.querySelector( '#editor' ), {
|
|
67
|
+
* plugins: [ Essentials, Paragraph, Bold, Italic ],
|
|
68
|
+
* toolbar: [ 'bold', 'italic' ]
|
|
69
|
+
* } )
|
|
70
|
+
* .then( editor => {
|
|
71
|
+
* console.log( 'Editor was initialized', editor );
|
|
72
|
+
* } )
|
|
73
|
+
* .catch( error => {
|
|
74
|
+
* console.error( error.stack );
|
|
75
|
+
* } );
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* However, you might have mistakenly imported a build instead of the source `ClassicEditor`. In this case
|
|
79
|
+
* your imports will look like this:
|
|
80
|
+
*
|
|
81
|
+
* ```ts
|
|
82
|
+
* import ClassicEditor from '@ckeditor/ckeditor5-build-classic';
|
|
83
|
+
* import Essentials from '@ckeditor/ckeditor5-essentials/src/essentials';
|
|
84
|
+
* import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
|
|
85
|
+
* import Bold from '@ckeditor/ckeditor5-basic-styles/src/bold';
|
|
86
|
+
* import Italic from '@ckeditor/ckeditor5-basic-styles/src/italic';
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* This creates the same situation as in the previous section because you use a build together with source plugins.
|
|
90
|
+
*
|
|
91
|
+
* Remember: `@ckeditor/ckeditor5-build-*` packages contain editor builds and `@ckeditor/ckeditor5-editor-*` contain source editors.
|
|
92
|
+
*
|
|
93
|
+
* # Loading two or more builds on one page
|
|
94
|
+
*
|
|
95
|
+
* If you use CKEditor 5 builds, you might have loaded two (or more) `ckeditor.js` files on one web page.
|
|
96
|
+
* Check your web page for duplicated `<script>` elements or make sure your page builder/bundler includes CKEditor only once.
|
|
97
|
+
*
|
|
98
|
+
* If you want to use two different types of editors at once, see the
|
|
99
|
+
* {@glink installation/advanced/using-two-editors "Using two different editors"}
|
|
100
|
+
* section.
|
|
101
|
+
*
|
|
102
|
+
* # Using outdated packages
|
|
103
|
+
*
|
|
104
|
+
* Building CKEditor 5 from source requires using multiple npm packages. These packages have their dependencies
|
|
105
|
+
* to other packages. If you use the latest version of, for example, `@ckeditor/ckeditor5-editor-classic` with
|
|
106
|
+
* an outdated version of `@ckeditor/ckeditor5-image`, npm or yarn will need to install two different versions of
|
|
107
|
+
* `@ckeditor/ckeditor5-core` because `@ckeditor/ckeditor5-editor-classic` and `@ckeditor/ckeditor5-image` may require
|
|
108
|
+
* different versions of the core package.
|
|
109
|
+
*
|
|
110
|
+
* The solution to this issue is to update all packages to their latest version. We recommend
|
|
111
|
+
* using tools like [`npm-check-updates`](https://www.npmjs.com/package/npm-check-updates) which simplify this process.
|
|
112
|
+
*
|
|
113
|
+
* # Conflicting version of dependencies
|
|
114
|
+
*
|
|
115
|
+
* This is a special case of the previous scenario. If you use CKEditor 5 with some third-party plugins,
|
|
116
|
+
* it may happen that even if you use the latest versions of the official packages and the latest version of
|
|
117
|
+
* these third-party packages, there will be a conflict between some of their dependencies.
|
|
118
|
+
*
|
|
119
|
+
* Such a problem can be resolved by either downgrading CKEditor 5 packages (which we do not recommend) or
|
|
120
|
+
* asking the author of the third-party package to upgrade its depdendencies (or forking their project and doing this yourself).
|
|
121
|
+
*
|
|
122
|
+
* **Note:** All official CKEditor 5 packages (excluding integrations and `ckeditor5-dev-*` packages) are released in the
|
|
123
|
+
* same major version. This means that in the `x.y.z` version, the `x` is the same for all packages. This is the simplest way to check
|
|
124
|
+
* whether you use packages coming from the same CKEditor 5 version. You can read more about versioning in the
|
|
125
|
+
* {@glink updating/versioning-policy Versioning policy} guide.
|
|
126
|
+
*
|
|
127
|
+
* # Packages were duplicated in `node_modules`
|
|
128
|
+
*
|
|
129
|
+
* In some situations, especially when calling `npm install` multiple times, it may happen
|
|
130
|
+
* that npm will not correctly "deduplicate" packages.
|
|
131
|
+
*
|
|
132
|
+
* Normally, npm deduplicates all packages so, for example, `@ckeditor/ckeditor5-core` is installed only once in `node_modules/`.
|
|
133
|
+
* However, it is known to fail to do so from time to time.
|
|
134
|
+
*
|
|
135
|
+
* We recommend checking if any of the steps listed below help:
|
|
136
|
+
*
|
|
137
|
+
* * `rm -rf node_modules && npm install` to make sure you have a clean `node_modules/` directory. This step
|
|
138
|
+
* is known to help in most cases.
|
|
139
|
+
* * If you use `yarn.lock` or `package-lock.json`, remove it before `npm install`.
|
|
140
|
+
* * Check whether all CKEditor 5 packages are up to date and reinstall them
|
|
141
|
+
* if you changed anything (`rm -rf node_modules && npm install`).
|
|
142
|
+
*
|
|
143
|
+
* If all packages are correct and compatible with each other, the steps above are known to help. If not, you may
|
|
144
|
+
* try to check with `npm ls` how many times packages like `@ckeditor/ckeditor5-core`, `@ckeditor/ckeditor5-engine` and
|
|
145
|
+
*`@ckeditor/ckeditor5-utils` are installed. If more than once, verify which package causes that.
|
|
146
|
+
*
|
|
147
|
+
* @error ckeditor-duplicated-modules
|
|
148
|
+
*/
|
|
149
|
+
throw new CKEditorError('ckeditor-duplicated-modules', null);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
globalThis.CKEDITOR_VERSION = version;
|
|
153
|
+
}
|
package/src/wait.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, 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
|
+
* @module utils/wait
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Returns a promise that is resolved after the specified time.
|
|
10
|
+
*
|
|
11
|
+
* @param timeout The time in milliseconds to wait.
|
|
12
|
+
* @param options.signal A signal to abort the waiting.
|
|
13
|
+
*/
|
|
14
|
+
export default function wait(timeout: number, options?: {
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
}): Promise<void>;
|
package/src/wait.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, 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
|
+
* @module utils/wait
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Returns a promise that is resolved after the specified time.
|
|
10
|
+
*
|
|
11
|
+
* @param timeout The time in milliseconds to wait.
|
|
12
|
+
* @param options.signal A signal to abort the waiting.
|
|
13
|
+
*/
|
|
14
|
+
export default function wait(timeout, options = {}) {
|
|
15
|
+
return new Promise((resolve, reject) => {
|
|
16
|
+
const signal = options.signal || (new AbortController()).signal;
|
|
17
|
+
signal.throwIfAborted();
|
|
18
|
+
const timer = setTimeout(timeoutHandler, timeout);
|
|
19
|
+
signal.addEventListener('abort', abortHandler, { once: true });
|
|
20
|
+
function timeoutHandler() {
|
|
21
|
+
signal.removeEventListener('abort', abortHandler);
|
|
22
|
+
resolve();
|
|
23
|
+
}
|
|
24
|
+
function abortHandler() {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
reject(signal.reason);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|