Skip to content

Commit

Permalink
Merge pull request #36 from ckeditor/ck/fix-extensions
Browse files Browse the repository at this point in the history
Internal: Migrate project from `module: ESNext` to `module: NodeNext` to enforce `.js` import extensions.
Internal: Move reusable `test-utils` functions to `src/`.
Fix: Improved support for TS configurations containing `skipLibCheck: false` and non-installed `ckeditor5-premium-features`.
  • Loading branch information
Mati365 authored Sep 25, 2024
2 parents 7fe1f75 + cc8ba72 commit 72b9b82
Show file tree
Hide file tree
Showing 63 changed files with 260 additions and 237 deletions.
7 changes: 4 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,11 @@
},
"./test-utils": {
"import": {
"types": "./dist/tests/_utils/index.d.ts",
"default": "./dist/tests/_utils/index.js"
"types": "./dist/test-utils/index.d.ts",
"default": "./dist/test-utils/index.js"
}
}
},
"./package.json": "./package.json"
},
"lint-staged": {
"*.{ts,tsx,js,jsx}": [
Expand Down
16 changes: 8 additions & 8 deletions src/cdn/ck/createCKCdnBaseBundlePack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@
* For licensing, see LICENSE.md.
*/

import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack';
import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack.js';

import { waitForWindowEntry } from '../../utils/waitForWindowEntry';
import { injectScriptsInParallel } from '../../utils/injectScript';
import { without } from '../../utils/without';
import { waitForWindowEntry } from '../../utils/waitForWindowEntry.js';
import { injectScriptsInParallel } from '../../utils/injectScript.js';
import { without } from '../../utils/without.js';

import { getCKBaseBundleInstallationInfo } from '../../installation-info/getCKBaseBundleInstallationInfo';
import { createCKDocsUrl } from '../../docs/createCKDocsUrl';
import { getCKBaseBundleInstallationInfo } from '../../installation-info/getCKBaseBundleInstallationInfo.js';
import { createCKDocsUrl } from '../../docs/createCKDocsUrl.js';

import { createCKCdnUrl, type CKCdnVersion } from './createCKCdnUrl';
import { createCKCdnUrl, type CKCdnVersion } from './createCKCdnUrl.js';

import './globals.d';
import './globals.js';

/**
* Creates a pack of resources for the base CKEditor bundle.
Expand Down
14 changes: 6 additions & 8 deletions src/cdn/ck/createCKCdnPremiumBundlePack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
* For licensing, see LICENSE.md.
*/

import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack';
import type { CKCdnBaseBundlePackConfig } from './createCKCdnBaseBundlePack';
import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack.js';
import type { CKCdnBaseBundlePackConfig } from './createCKCdnBaseBundlePack.js';

import { waitForWindowEntry } from '../../utils/waitForWindowEntry';
import { injectScriptsInParallel } from '../../utils/injectScript';
import { without } from '../../utils/without';
import { waitForWindowEntry } from '../../utils/waitForWindowEntry.js';
import { injectScriptsInParallel } from '../../utils/injectScript.js';
import { without } from '../../utils/without.js';

import { createCKCdnUrl } from './createCKCdnUrl';

import './globals.d';
import { createCKCdnUrl } from './createCKCdnUrl.js';

/**
* Creates a pack of resources for the CKEditor Premium Features.
Expand Down
2 changes: 1 addition & 1 deletion src/cdn/ck/createCKCdnUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* For licensing, see LICENSE.md.
*/

import type { SemanticVersion } from '../../utils/isSemanticVersion';
import type { SemanticVersion } from '../../utils/isSemanticVersion.js';

/**
* The URL of the CKEditor CDN.
Expand Down
3 changes: 0 additions & 3 deletions src/cdn/ck/globals.d.ts → src/cdn/ck/globals.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@
* For licensing, see LICENSE.md.
*/

declare module 'ckeditor5-premium-features' {}
declare module 'ckeditor5' {}

import type * as CKEditorPremiumFeatures from 'ckeditor5-premium-features';
import type * as CKEditor from 'ckeditor5';

Expand Down
10 changes: 5 additions & 5 deletions src/cdn/ckbox/createCKBoxCdnBundlePack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
* For licensing, see LICENSE.md.
*/

import { waitForWindowEntry } from '../../utils/waitForWindowEntry';
import { getCKBoxInstallationInfo } from '../../installation-info/getCKBoxInstallationInfo';
import { waitForWindowEntry } from '../../utils/waitForWindowEntry.js';
import { getCKBoxInstallationInfo } from '../../installation-info/getCKBoxInstallationInfo.js';

import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack';
import { createCKBoxCdnUrl, type CKBoxCdnVersion } from './createCKBoxCdnUrl';
import type { CKCdnResourcesAdvancedPack } from '../../cdn/utils/loadCKCdnResourcesPack.js';
import { createCKBoxCdnUrl, type CKBoxCdnVersion } from './createCKBoxCdnUrl.js';

import './globals.d';
import './globals.js';

/**
* Creates a pack of resources for the base CKBox bundle.
Expand Down
2 changes: 1 addition & 1 deletion src/cdn/ckbox/createCKBoxCdnUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* For licensing, see LICENSE.md.
*/

import type { SemanticVersion } from '../../utils/isSemanticVersion';
import type { SemanticVersion } from '../../utils/isSemanticVersion.js';

/**
* The URL of the CKBox CDN.
Expand Down
File renamed without changes.
16 changes: 8 additions & 8 deletions src/cdn/loadCKEditorCloud.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,28 @@
* For licensing, see LICENSE.md.
*/

import { createCKCdnBaseBundlePack } from './ck/createCKCdnBaseBundlePack';
import { createCKCdnPremiumBundlePack } from './ck/createCKCdnPremiumBundlePack';
import { createCKCdnBaseBundlePack } from './ck/createCKCdnBaseBundlePack.js';
import { createCKCdnPremiumBundlePack } from './ck/createCKCdnPremiumBundlePack.js';

import { combineCKCdnBundlesPacks } from './utils/combineCKCdnBundlesPacks';
import { combineCKCdnBundlesPacks } from './utils/combineCKCdnBundlesPacks.js';
import {
createCKBoxBundlePack,
type CKBoxCdnBundlePackConfig
} from './ckbox/createCKBoxCdnBundlePack';
} from './ckbox/createCKBoxCdnBundlePack.js';

import type { ConditionalBlank } from '../types/ConditionalBlank';
import type { CKCdnVersion } from './ck/createCKCdnUrl';
import type { ConditionalBlank } from '../types/ConditionalBlank.js';
import type { CKCdnVersion } from './ck/createCKCdnUrl.js';

import {
loadCKCdnResourcesPack,
type InferCKCdnResourcesPackExportsType
} from './utils/loadCKCdnResourcesPack';
} from './utils/loadCKCdnResourcesPack.js';

import {
combineCdnPluginsPacks,
type CombinedPluginsPackWithFallbackScope,
type CdnPluginsPacks
} from './plugins/combineCdnPluginsPacks';
} from './plugins/combineCdnPluginsPacks.js';

/**
* A composable function that loads CKEditor Cloud Services bundles.
Expand Down
8 changes: 4 additions & 4 deletions src/cdn/plugins/combineCdnPluginsPacks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@
* For licensing, see LICENSE.md.
*/

import { mapObjectValues } from '../../utils/mapObjectValues';
import { waitForWindowEntry } from '../../utils/waitForWindowEntry';
import { mapObjectValues } from '../../utils/mapObjectValues.js';
import { waitForWindowEntry } from '../../utils/waitForWindowEntry.js';

import {
normalizeCKCdnResourcesPack,
type InferCKCdnResourcesPackExportsType,
type CKCdnResourcesAdvancedPack
} from '../utils/loadCKCdnResourcesPack';
} from '../utils/loadCKCdnResourcesPack.js';

import {
combineCKCdnBundlesPacks,
type CKCdnBundlesPacks
} from '../utils/combineCKCdnBundlesPacks';
} from '../utils/combineCKCdnBundlesPacks.js';

/**
* This function is similar to `combineCKCdnBundlesPacks` but it provides global scope
Expand Down
6 changes: 3 additions & 3 deletions src/cdn/utils/combineCKCdnBundlesPacks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
* For licensing, see LICENSE.md.
*/

import { filterBlankObjectValues } from '../../utils/filterBlankObjectValues';
import { mapObjectValues } from '../../utils/mapObjectValues';
import { filterBlankObjectValues } from '../../utils/filterBlankObjectValues.js';
import { mapObjectValues } from '../../utils/mapObjectValues.js';

import {
normalizeCKCdnResourcesPack,
type CKCdnResourcesPack,
type InferCKCdnResourcesPackExportsType,
type CKCdnResourcesAdvancedPack
} from './loadCKCdnResourcesPack';
} from './loadCKCdnResourcesPack.js';

/**
* Combines multiple CKEditor CDN bundles packs into a single pack.
Expand Down
10 changes: 5 additions & 5 deletions src/cdn/utils/loadCKCdnResourcesPack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
* For licensing, see LICENSE.md.
*/

import type { Awaitable } from '../../types/Awaitable';
import type { Awaitable } from '../../types/Awaitable.js';

import { injectScript, type InjectScriptProps } from '../../utils/injectScript';
import { injectStylesheet } from '../../utils/injectStylesheet';
import { preloadResource } from '../../utils/preloadResource';
import { uniq } from '../../utils/uniq';
import { injectScript, type InjectScriptProps } from '../../utils/injectScript.js';
import { injectStylesheet } from '../../utils/injectStylesheet.js';
import { preloadResource } from '../../utils/preloadResource.js';
import { uniq } from '../../utils/uniq.js';

/**
* Loads pack of resources (scripts and stylesheets) and returns the exported global variables (if any).
Expand Down
2 changes: 1 addition & 1 deletion src/docs/createCKDocsUrl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* For licensing, see LICENSE.md.
*/

import type { SemanticVersion } from '../utils/isSemanticVersion';
import type { SemanticVersion } from '../utils/isSemanticVersion.js';

export const CK_DOCS_URL = 'https://ckeditor.com/docs/ckeditor5';

Expand Down
48 changes: 24 additions & 24 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,45 +4,45 @@
*/

import './globals.d';
import './cdn/ck/globals.d';
import './cdn/ckbox/globals.d';
import './cdn/ck/globals.js';
import './cdn/ckbox/globals.js';

export type { Awaitable } from './types/Awaitable';
export type { Awaitable } from './types/Awaitable.js';

export { createDefer, type Defer } from './utils/defer';
export { waitFor, type WaitForConfig } from './utils/waitFor';
export { injectScript, injectScriptsInParallel, INJECTED_SCRIPTS } from './utils/injectScript';
export { injectStylesheet, INJECTED_STYLESHEETS } from './utils/injectStylesheet';
export { isSSR } from './utils/isSSR';
export { once } from './utils/once';
export { overwriteArray } from './utils/overwriteArray';
export { overwriteObject } from './utils/overwriteObject';
export { preloadResource } from './utils/preloadResource';
export { shallowCompareArrays } from './utils/shallowCompareArrays';
export { uid } from './utils/uid';
export { uniq } from './utils/uniq';
export { waitForWindowEntry } from './utils/waitForWindowEntry';
export { filterObjectValues } from './utils/filterObjectValues';
export { filterBlankObjectValues } from './utils/filterBlankObjectValues';
export { mapObjectValues } from './utils/mapObjectValues';
export { without } from './utils/without';
export { createDefer, type Defer } from './utils/defer.js';
export { waitFor, type WaitForConfig } from './utils/waitFor.js';
export { injectScript, injectScriptsInParallel, INJECTED_SCRIPTS } from './utils/injectScript.js';
export { injectStylesheet, INJECTED_STYLESHEETS } from './utils/injectStylesheet.js';
export { isSSR } from './utils/isSSR.js';
export { once } from './utils/once.js';
export { overwriteArray } from './utils/overwriteArray.js';
export { overwriteObject } from './utils/overwriteObject.js';
export { preloadResource } from './utils/preloadResource.js';
export { shallowCompareArrays } from './utils/shallowCompareArrays.js';
export { uid } from './utils/uid.js';
export { uniq } from './utils/uniq.js';
export { waitForWindowEntry } from './utils/waitForWindowEntry.js';
export { filterObjectValues } from './utils/filterObjectValues.js';
export { filterBlankObjectValues } from './utils/filterBlankObjectValues.js';
export { mapObjectValues } from './utils/mapObjectValues.js';
export { without } from './utils/without.js';

export {
CK_CDN_URL,
createCKCdnUrl
} from './cdn/ck/createCKCdnUrl';
} from './cdn/ck/createCKCdnUrl.js';

export {
CKBOX_CDN_URL,
createCKBoxCdnUrl
} from './cdn/ckbox/createCKBoxCdnUrl';
} from './cdn/ckbox/createCKBoxCdnUrl.js';

export {
loadCKEditorCloud,
type CKEditorCloudConfig,
type CKEditorCloudResult
} from './cdn/loadCKEditorCloud';
} from './cdn/loadCKEditorCloud.js';

export type {
CdnPluginsPacks
} from './cdn/plugins/combineCdnPluginsPacks';
} from './cdn/plugins/combineCdnPluginsPacks.js';
4 changes: 2 additions & 2 deletions src/installation-info/getCKBaseBundleInstallationInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
* For licensing, see LICENSE.md.
*/

import type { BundleInstallationInfo } from './types';
import type { BundleInstallationInfo } from './types.js';

import { isSemanticVersion } from '../utils/isSemanticVersion';
import { isSemanticVersion } from '../utils/isSemanticVersion.js';

/**
* Returns information about the base CKEditor bundle installation.
Expand Down
4 changes: 2 additions & 2 deletions src/installation-info/getCKBoxInstallationInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
* For licensing, see LICENSE.md.
*/

import type { BundleInstallationInfo } from './types';
import type { BundleInstallationInfo } from './types.js';

import { isSemanticVersion } from '../utils/isSemanticVersion';
import { isSemanticVersion } from '../utils/isSemanticVersion.js';

/**
* Returns information about the CKBox installation.
Expand Down
2 changes: 1 addition & 1 deletion src/installation-info/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* For licensing, see LICENSE.md.
*/

import type { SemanticVersion } from '../utils/isSemanticVersion';
import type { SemanticVersion } from '../utils/isSemanticVersion.js';

/**
* The source from which CKEditor was installed.
Expand Down
27 changes: 27 additions & 0 deletions src/test-utils/cdn/mocks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
* @license Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md.
*/

import { createCKCdnUrl } from '../../cdn/ck/createCKCdnUrl.js';
import { createCKBoxCdnUrl } from '../../cdn/ckbox/createCKBoxCdnUrl.js';

/**
* The URL of the CKEditor CDN.
*/
export const CDN_MOCK_SCRIPT_URL = createCKCdnUrl( 'ckeditor5', 'ckeditor5.umd.js', '43.0.0' );

/**
* The URL of the CKEditor CDN.
*/
export const CDN_MOCK_STYLESHEET_URL = createCKCdnUrl( 'ckeditor5', 'ckeditor5.css', '43.0.0' );

/**
* The URL of the CKBox CDN.
*/
export const CKBOX_CDN_MOCK_SCRIPT_URL = createCKBoxCdnUrl( 'ckbox', 'ckbox.js', '2.5.1' );

/**
* The URL of the CKBox CDN.
*/
export const CKBOX_CDN_MOCK_STYLESHEET_URL = createCKBoxCdnUrl( 'ckbox', 'styles/themes/lark.css', '2.5.1' );
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,22 @@
* For licensing, see LICENSE.md.
*/

import { CKBOX_CDN_URL, createCKBoxCdnUrl } from '@/cdn/ckbox/createCKBoxCdnUrl';

import { INJECTED_SCRIPTS } from '@/utils/injectScript';
import { INJECTED_STYLESHEETS } from '@/utils/injectStylesheet';
import { INJECTED_SCRIPTS } from '../../utils/injectScript.js';
import { INJECTED_STYLESHEETS } from '../../utils/injectStylesheet.js';
import { CKBOX_CDN_URL } from '../../cdn/ckbox/createCKBoxCdnUrl.js';

/**
* The URL of the CKBox CDN.
* Removes all CKBox resources from the DOM.
*/
export const CKBOX_CDN_MOCK_SCRIPT_URL = createCKBoxCdnUrl( 'ckbox', 'ckbox.js', '2.5.1' );

/**
* The URL of the CKBox CDN.
*/
export const CKBOX_CDN_MOCK_STYLESHEET_URL = createCKBoxCdnUrl( 'ckbox', 'styles/themes/lark.css', '2.5.1' );
export function removeCkBoxResources(): void {
removeCkBoxCdnScripts();
removeCkBoxCdnLinks();
}

/**
* Removes all CKBox scripts from the DOM.
*/
export function removeCkBoxCdnScripts(): void {
function removeCkBoxCdnScripts(): void {
[ ...document.querySelectorAll( 'script' ) ]
.filter( script => script.src.startsWith( CKBOX_CDN_URL ) )
.forEach( script => {
Expand All @@ -35,7 +32,7 @@ export function removeCkBoxCdnScripts(): void {
/**
* Removes all CKBox stylesheets and preloads from the DOM.
*/
export function removeCkBoxCdnLinks(): void {
function removeCkBoxCdnLinks(): void {
[ ...document.querySelectorAll( 'link' ) ]
.filter( link => link.href.startsWith( CKBOX_CDN_URL ) )
.forEach( link => {
Expand Down
Loading

0 comments on commit 72b9b82

Please sign in to comment.