From c0b6317da80647c7a8998b9bae9e7379b19c4ed2 Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Tue, 11 Mar 2025 16:50:26 +0100 Subject: [PATCH] V15: Reduce the size of the package json schema (#18643) * chore: combine similar commands * fix: add specific ignore on tinymce * fix: override the RawEditorOptions types from tinymce this ensures that we do not have 70k lines of schema in the generated schema * fix: import only from the extension-registry this will automatically find all registered UmbExtensionManifest regardless of which package is imported --- src/Umbraco.Web.UI.Client/package.json | 4 +- .../src/external/tinymce/index.ts | 3 + .../src/json-schema/all-packages.ts | 117 ------------------ .../src/json-schema/umbraco-package-schema.ts | 2 +- .../plugins/tinymce-plugin.extension.ts | 5 +- 5 files changed, 9 insertions(+), 122 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/src/json-schema/all-packages.ts diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 994b687c0c..9d983a986d 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -173,8 +173,8 @@ "generate:icons": "node ./devops/icons/index.js", "generate:overrides": "node ./devops/tsc/index.js", "generate:jsonschema:imports": "node ./devops/json-schema-generator/index.js", - "generate:jsonschema:dist": "typescript-json-schema --required --include \"./src/json-schema/umbraco-package-schema.ts\" --out dist-cms/umbraco-package-schema.json tsconfig.json UmbracoPackage", - "generate:jsonschema": "typescript-json-schema --required --include \"./src/json-schema/umbraco-package-schema.ts\"", + "generate:jsonschema:dist": "npm run generate:jsonschema -- --out dist-cms/umbraco-package-schema.json tsconfig.json UmbracoPackage", + "generate:jsonschema": "typescript-json-schema --skipLibCheck --ignoreErrors --excludePrivate --required --include \"./src/json-schema/umbraco-package-schema.ts\"", "generate:check-const-test": "node ./devops/generate-check-const-test/index.js", "lint:errors": "npm run lint -- --quiet", "lint:fix": "npm run lint -- --fix", diff --git a/src/Umbraco.Web.UI.Client/src/external/tinymce/index.ts b/src/Umbraco.Web.UI.Client/src/external/tinymce/index.ts index 3d2e9a2f41..3d2a1e8fd6 100644 --- a/src/Umbraco.Web.UI.Client/src/external/tinymce/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/tinymce/index.ts @@ -25,6 +25,9 @@ export function renderEditor(userConfig?: RawEditorOptions) { // Declare a global variable to hold the TinyMCE instance declare global { interface Window { + /** + * @TJS-ignore + */ tinymce: TinyMCE; } } diff --git a/src/Umbraco.Web.UI.Client/src/json-schema/all-packages.ts b/src/Umbraco.Web.UI.Client/src/json-schema/all-packages.ts deleted file mode 100644 index 2f8a997a00..0000000000 --- a/src/Umbraco.Web.UI.Client/src/json-schema/all-packages.ts +++ /dev/null @@ -1,117 +0,0 @@ -import '@umbraco-cms/backoffice/app'; -import '@umbraco-cms/backoffice/class-api'; -import '@umbraco-cms/backoffice/context-api'; -import '@umbraco-cms/backoffice/controller-api'; -import '@umbraco-cms/backoffice/element-api'; -import '@umbraco-cms/backoffice/embedded-media'; -import '@umbraco-cms/backoffice/extension-api'; -import '@umbraco-cms/backoffice/formatting-api'; -import '@umbraco-cms/backoffice/localization-api'; -import '@umbraco-cms/backoffice/observable-api'; -import '@umbraco-cms/backoffice/action'; -import '@umbraco-cms/backoffice/audit-log'; -import '@umbraco-cms/backoffice/auth'; -import '@umbraco-cms/backoffice/block-custom-view'; -import '@umbraco-cms/backoffice/block-grid'; -import '@umbraco-cms/backoffice/block-list'; -import '@umbraco-cms/backoffice/block-rte'; -import '@umbraco-cms/backoffice/block-type'; -import '@umbraco-cms/backoffice/block'; -import '@umbraco-cms/backoffice/code-editor'; -import '@umbraco-cms/backoffice/collection'; -import '@umbraco-cms/backoffice/components'; -import '@umbraco-cms/backoffice/content-type'; -import '@umbraco-cms/backoffice/content'; -import '@umbraco-cms/backoffice/culture'; -import '@umbraco-cms/backoffice/current-user'; -import '@umbraco-cms/backoffice/dashboard'; -import '@umbraco-cms/backoffice/data-type'; -import '@umbraco-cms/backoffice/debug'; -import '@umbraco-cms/backoffice/dictionary'; -import '@umbraco-cms/backoffice/document-blueprint'; -import '@umbraco-cms/backoffice/document-type'; -import '@umbraco-cms/backoffice/document'; -import '@umbraco-cms/backoffice/entity-action'; -import '@umbraco-cms/backoffice/entity-bulk-action'; -import '@umbraco-cms/backoffice/entity-create-option-action'; -import '@umbraco-cms/backoffice/entity'; -import '@umbraco-cms/backoffice/event'; -import '@umbraco-cms/backoffice/extension-registry'; -import '@umbraco-cms/backoffice/health-check'; -import '@umbraco-cms/backoffice/help'; -import '@umbraco-cms/backoffice/icon'; -import '@umbraco-cms/backoffice/id'; -import '@umbraco-cms/backoffice/imaging'; -import '@umbraco-cms/backoffice/language'; -import '@umbraco-cms/backoffice/lit-element'; -import '@umbraco-cms/backoffice/localization'; -import '@umbraco-cms/backoffice/log-viewer'; -import '@umbraco-cms/backoffice/markdown-editor'; -import '@umbraco-cms/backoffice/media-type'; -import '@umbraco-cms/backoffice/media'; -import '@umbraco-cms/backoffice/member-group'; -import '@umbraco-cms/backoffice/member-type'; -import '@umbraco-cms/backoffice/member'; -import '@umbraco-cms/backoffice/menu'; -import '@umbraco-cms/backoffice/modal'; -import '@umbraco-cms/backoffice/multi-url-picker'; -import '@umbraco-cms/backoffice/notification'; -import '@umbraco-cms/backoffice/object-type'; -import '@umbraco-cms/backoffice/package'; -import '@umbraco-cms/backoffice/partial-view'; -import '@umbraco-cms/backoffice/picker-input'; -import '@umbraco-cms/backoffice/picker'; -import '@umbraco-cms/backoffice/property-action'; -import '@umbraco-cms/backoffice/property-editor'; -import '@umbraco-cms/backoffice/property-type'; -import '@umbraco-cms/backoffice/property'; -import '@umbraco-cms/backoffice/recycle-bin'; -import '@umbraco-cms/backoffice/relation-type'; -import '@umbraco-cms/backoffice/relations'; -import '@umbraco-cms/backoffice/repository'; -import '@umbraco-cms/backoffice/resources'; -import '@umbraco-cms/backoffice/router'; -import '@umbraco-cms/backoffice/rte'; -import '@umbraco-cms/backoffice/script'; -import '@umbraco-cms/backoffice/search'; -import '@umbraco-cms/backoffice/section'; -import '@umbraco-cms/backoffice/server-file-system'; -import '@umbraco-cms/backoffice/settings'; -import '@umbraco-cms/backoffice/sorter'; -import '@umbraco-cms/backoffice/static-file'; -import '@umbraco-cms/backoffice/store'; -import '@umbraco-cms/backoffice/style'; -import '@umbraco-cms/backoffice/stylesheet'; -import '@umbraco-cms/backoffice/sysinfo'; -import '@umbraco-cms/backoffice/tags'; -import '@umbraco-cms/backoffice/template'; -import '@umbraco-cms/backoffice/temporary-file'; -import '@umbraco-cms/backoffice/themes'; -import '@umbraco-cms/backoffice/tiny-mce'; -import '@umbraco-cms/backoffice/tiptap'; -import '@umbraco-cms/backoffice/translation'; -import '@umbraco-cms/backoffice/tree'; -import '@umbraco-cms/backoffice/ufm'; -import '@umbraco-cms/backoffice/user-change-password'; -import '@umbraco-cms/backoffice/user-group'; -import '@umbraco-cms/backoffice/user-permission'; -import '@umbraco-cms/backoffice/user'; -import '@umbraco-cms/backoffice/utils'; -import '@umbraco-cms/backoffice/validation'; -import '@umbraco-cms/backoffice/variant'; -import '@umbraco-cms/backoffice/webhook'; -import '@umbraco-cms/backoffice/workspace'; -import '@umbraco-cms/backoffice/external/backend-api'; -import '@umbraco-cms/backoffice/external/base64-js'; -import '@umbraco-cms/backoffice/external/diff'; -import '@umbraco-cms/backoffice/external/dompurify'; -import '@umbraco-cms/backoffice/external/lit'; -import '@umbraco-cms/backoffice/external/marked'; -import '@umbraco-cms/backoffice/external/monaco-editor'; -import '@umbraco-cms/backoffice/external/openid'; -import '@umbraco-cms/backoffice/external/router-slot'; -import '@umbraco-cms/backoffice/external/rxjs'; -import '@umbraco-cms/backoffice/external/tinymce'; -import '@umbraco-cms/backoffice/external/tiptap'; -import '@umbraco-cms/backoffice/external/uui'; -import '@umbraco-cms/backoffice/external/uuid'; diff --git a/src/Umbraco.Web.UI.Client/src/json-schema/umbraco-package-schema.ts b/src/Umbraco.Web.UI.Client/src/json-schema/umbraco-package-schema.ts index 9bd0fa2930..cf61ff1450 100644 --- a/src/Umbraco.Web.UI.Client/src/json-schema/umbraco-package-schema.ts +++ b/src/Umbraco.Web.UI.Client/src/json-schema/umbraco-package-schema.ts @@ -1,4 +1,4 @@ -import './all-packages.js'; +import '@umbraco-cms/backoffice/extension-registry'; /** * Umbraco package manifest JSON diff --git a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/plugins/tinymce-plugin.extension.ts b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/plugins/tinymce-plugin.extension.ts index a4921daf05..2506a66597 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/plugins/tinymce-plugin.extension.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/tiny-mce/plugins/tinymce-plugin.extension.ts @@ -28,9 +28,10 @@ export interface MetaTinyMcePlugin { }>; /** - * Sets the default configuration for the TinyMCE editor. This configuration will be used when the editor is initialized. - * @see [TinyMCE Configuration](https://www.tiny.cloud/docs/configure/) for more information. + * @title Sets the default configuration for the TinyMCE editor. + * @description This configuration will be used when the editor is initialized. See the [TinyMCE Configuration](https://www.tiny.cloud/docs/configure/) for more information. * @optional + * @TJS-type object * @examples [ * { * "plugins": "wordcount",