Installation

Usage Guides

Reference

Commands

Language Server

MCP Server

Benchmarks

TL;DR: CEM’s Go implementation is significantly faster than JavaScript-based tools. Generate benchmarks show ~10x speedup over web-component-analyzer. LSP benchmarks demonstrate sub-millisecond response times for autocomplete and validation.

Overview

CEM provides two types of benchmarks for comprehensive performance analysis:

Generate Tool Benchmarks

Performance comparison of custom element manifest generation tools.

Number of runs per tool: 100
Number of files analyzed per run: 45

Generate tool benchmark results: lower is better (seconds)
: 1.52@lit-labs/cli1.52: 0.84@custom-elements-manifest/analyzer0.84: 0.34cem generate0.34

@lit-labs/cli

Docs
1.52s
Avg Time
52.3KB
Avg Output Size
100
Runs
Warnings
Validation

Command

npx --yes @lit-labs/cli labs gen --manifest --out data/lit
Run Breakdown: Time per Run (seconds)
1.471.521.571.621.671.721100Run #

Validation Results

📄 Global
schema
  • schema-version-old: validation for manifests with schemaVersion < 2.1.0 may not produce accurate results (version: 1.0.0)
📄 benchmark/components/alert-toast.js
lifecycle
  • lifecycle-web-components: lifecycle method should not be documented in public API
    class AlertToast → method connectedCallback
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class AlertToast → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class AlertToast → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class AlertToast → field styles
📄 benchmark/components/avatar-image.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class AvatarImage → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class AvatarImage → method #onError
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class AvatarImage → static field styles
📄 benchmark/components/button-element.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ButtonElement → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ButtonElement → static field styles
📄 benchmark/components/clipboard-copy.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ClipboardCopy → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ClipboardCopy → static field styles
📄 benchmark/components/color-picker.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ColorPicker → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ColorPicker → method #onInput
📄 benchmark/components/complex-component.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ComplexComponent → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ComplexComponent → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class ComplexComponent → field styles
📄 benchmark/components/complex-types.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ComplexTypes → method render
📄 benchmark/components/dark-mode-toggle.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class DarkModeToggle → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class DarkModeToggle → method #toggle
📄 benchmark/components/dismiss-button.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class DismissButton → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class DismissButton → method #dismiss
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class DismissButton → static field styles
📄 benchmark/components/emoji-picker.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class EmojiPicker → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class EmojiPicker → static field styles
📄 benchmark/components/expand-toggle.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ExpandToggle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ExpandToggle → static field styles
📄 benchmark/components/expandable-panel.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ExpandablePanel → method render
📄 benchmark/components/field-label.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class FieldLabel → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class FieldLabel → static field styles
📄 benchmark/components/file-uploader.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class FileUploader → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class FileUploader → method #onChange
📄 benchmark/components/icon-badge.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class IconBadge → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class IconBadge → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class IconBadge → field styles
📄 benchmark/components/image-gallery.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ImageGallery → method render
📄 benchmark/components/inline-edit.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class InlineEdit → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #startEdit
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #onInput
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #onBlur
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class InlineEdit → static field styles
📄 benchmark/components/keyboard-shortcut.js
lifecycle
  • lifecycle-web-components: lifecycle method should not be documented in public API
    class KeyboardShortcut → method connectedCallback
  • lifecycle-web-components: lifecycle method should not be documented in public API
    class KeyboardShortcut → method disconnectedCallback
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class KeyboardShortcut → method render
📄 benchmark/components/load-spinner.js
lifecycle
  • lifecycle-web-components: lifecycle method should not be documented in public API
    class LoadSpinner → method connectedCallback
  • lifecycle-web-components: lifecycle method should not be documented in public API
    class LoadSpinner → method disconnectedCallback
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class LoadSpinner → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class LoadSpinner → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class LoadSpinner → field styles
📄 benchmark/components/markdown-viewer.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MarkdownViewer → method render
📄 benchmark/components/message-bubble.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MessageBubble → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class MessageBubble → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class MessageBubble → field styles
📄 benchmark/components/multi-slot.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MultiSlot → method render
📄 benchmark/components/no-decorator.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class NoDecoratorElement → method render
📄 benchmark/components/notification-banner.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class NotificationBanner → method render
📄 benchmark/components/privacy-test.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class PrivacyTest → method render
private
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _handleClick
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _updateState
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class PrivacyTest → static field styles
📄 benchmark/components/progress-circle.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ProgressCircle → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ProgressCircle → method #color
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ProgressCircle → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class ProgressCircle → field styles
📄 benchmark/components/range-slider.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class RangeSlider → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class RangeSlider → method #onInput
📄 benchmark/components/resize-handle.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ResizeHandle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ResizeHandle → static field styles
📄 benchmark/components/search-bar.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SearchBar → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class SearchBar → method #onInput
📄 benchmark/components/section-header.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SectionHeader → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class SectionHeader → static field styles
📄 benchmark/components/skeleton-block.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SkeletonBlock → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class SkeletonBlock → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class SkeletonBlock → field styles
📄 benchmark/components/split-pane.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SplitPane → method render
📄 benchmark/components/star-rating.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class StarRating → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class StarRating → method #setRating
📄 benchmark/components/step-progress.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class StepProgress → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class StepProgress → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class StepProgress → field styles
📄 benchmark/components/tab-navigation.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TabNavigation → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class TabNavigation → method #select
📄 benchmark/components/tag-list.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TagList → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class TagList → static field styles
📄 benchmark/components/text-ticker.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TextTicker → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class TextTicker → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class TextTicker → field styles
📄 benchmark/components/theme-toggle.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ThemeToggle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ThemeToggle → static field styles
📄 benchmark/components/toast-stack.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ToastStack → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ToastStack → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class ToastStack → field styles
📄 benchmark/components/toggle-switch.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ToggleSwitch → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ToggleSwitch → method #onToggle
📄 benchmark/components/user-avatar.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class UserAvatar → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class UserAvatar → static field styles
📄 benchmark/components/user-list.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class UserList → method render
📄 benchmark/components/visually-hidden.js
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class VisuallyHidden → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class VisuallyHidden → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class VisuallyHidden → field styles

@custom-elements-manifest/analyzer

Docs
0.84s
Avg Time
66.1KB
Avg Output Size
100
Runs
Warnings
Validation

Command

npx --yes @custom-elements-manifest/analyzer analyze --outdir data/cea --globs benchmark/components/*.ts
Run Breakdown: Time per Run (seconds)
0.810.820.840.850.860.881100Run #

Validation Results

📄 Global
schema
  • schema-version-old: validation for manifests with schemaVersion < 2.1.0 may not produce accurate results (version: 1.0.0)
📄 benchmark/components/alert-toast.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class AlertToast → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class AlertToast → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class AlertToast → field styles
📄 benchmark/components/avatar-image.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class AvatarImage → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class AvatarImage → method #onError
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class AvatarImage → static field styles
📄 benchmark/components/button-element.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ButtonElement → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ButtonElement → static field styles
📄 benchmark/components/clipboard-copy.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ClipboardCopy → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ClipboardCopy → static field styles
📄 benchmark/components/color-picker.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ColorPicker → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ColorPicker → method #onInput
📄 benchmark/components/complex-component.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ComplexComponent → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ComplexComponent → static field styles
📄 benchmark/components/complex-types.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ComplexTypes → method render
📄 benchmark/components/dark-mode-toggle.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class DarkModeToggle → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class DarkModeToggle → method #toggle
📄 benchmark/components/dismiss-button.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class DismissButton → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class DismissButton → method #dismiss
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class DismissButton → static field styles
📄 benchmark/components/emoji-picker.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class EmojiPicker → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class EmojiPicker → static field styles
📄 benchmark/components/expand-toggle.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ExpandToggle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ExpandToggle → static field styles
📄 benchmark/components/expandable-panel.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ExpandablePanel → method render
📄 benchmark/components/field-label.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class FieldLabel → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class FieldLabel → static field styles
📄 benchmark/components/file-uploader.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class FileUploader → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class FileUploader → method #onChange
📄 benchmark/components/icon-badge.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class IconBadge → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class IconBadge → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class IconBadge → field styles
📄 benchmark/components/image-gallery.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ImageGallery → method render
📄 benchmark/components/inline-edit.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class InlineEdit → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #startEdit
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #onInput
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class InlineEdit → method #onBlur
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class InlineEdit → static field styles
📄 benchmark/components/keyboard-shortcut.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class KeyboardShortcut → method render
📄 benchmark/components/load-spinner.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class LoadSpinner → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class LoadSpinner → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class LoadSpinner → field styles
📄 benchmark/components/markdown-viewer.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MarkdownViewer → method render
📄 benchmark/components/message-bubble.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MessageBubble → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class MessageBubble → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class MessageBubble → field styles
📄 benchmark/components/multi-slot.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class MultiSlot → method render
📄 benchmark/components/no-decorator.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class NoDecoratorElement → method render
📄 benchmark/components/notification-banner.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class NotificationBanner → method render
📄 benchmark/components/privacy-test.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class PrivacyTest → method render
private
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _handleClick
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _updateState
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class PrivacyTest → static field styles
📄 benchmark/components/progress-circle.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ProgressCircle → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ProgressCircle → method #color
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ProgressCircle → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class ProgressCircle → field styles
📄 benchmark/components/range-slider.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class RangeSlider → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class RangeSlider → method #onInput
📄 benchmark/components/resize-handle.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ResizeHandle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ResizeHandle → static field styles
📄 benchmark/components/search-bar.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SearchBar → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class SearchBar → method #onInput
📄 benchmark/components/section-header.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SectionHeader → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class SectionHeader → static field styles
📄 benchmark/components/skeleton-block.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SkeletonBlock → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class SkeletonBlock → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class SkeletonBlock → field styles
📄 benchmark/components/split-pane.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class SplitPane → method render
📄 benchmark/components/star-rating.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class StarRating → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class StarRating → method #setRating
📄 benchmark/components/step-progress.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class StepProgress → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class StepProgress → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class StepProgress → field styles
📄 benchmark/components/tab-navigation.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TabNavigation → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class TabNavigation → method #select
📄 benchmark/components/tag-list.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TagList → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class TagList → static field styles
📄 benchmark/components/text-ticker.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class TextTicker → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class TextTicker → static field styles
📄 benchmark/components/theme-toggle.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ThemeToggle → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ThemeToggle → static field styles
📄 benchmark/components/toast-stack.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ToastStack → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class ToastStack → static field styles
verbose
  • verbose-defaults: default value is very long, consider simplifying or moving to external configuration
    class ToastStack → field styles
📄 benchmark/components/toggle-switch.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class ToggleSwitch → method render
private
  • private-hash-methods: ECMAScript private method should never be documented in public API
    class ToggleSwitch → method #onToggle
📄 benchmark/components/user-avatar.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class UserAvatar → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class UserAvatar → static field styles
📄 benchmark/components/user-list.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class UserList → method render
📄 benchmark/components/visually-hidden.ts
lifecycle
  • lifecycle-lit-render: render method in Lit element should not be documented in public API
    class VisuallyHidden → method render
implementation
  • implementation-static-styles: static styles field is implementation detail, should not be documented in public API
    class VisuallyHidden → static field styles

cem generate

Docs
0.34s
Avg Time
73.6KB
Avg Output Size
100
Runs
Invalid
Validation

Command

cem generate -o data/cem/custom-elements.json benchmark/components/*.ts
Run Breakdown: Time per Run (seconds)
0.330.340.350.360.370.381100Run #

Validation Results

3 Errors
  • schema-additional-properties: property 'attribute' not allowed (/modules/44/declarations/0/members/0)
  • schema-additional-properties: property 'type', 'default', 'attribute' not allowed (/modules/44/declarations/0/members/0)
  • schema-invalid-enum: invalid value, must be one of: method
📄 benchmark/components/privacy-test.js
private
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _handleClick
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _updateState
  • private-underscore-methods: underscore-prefixed method should be marked as private or protected, or should not be documented in public API
    class PrivacyTest → method _privateMethod

LSP Server Benchmarks

Last benchmark run:

HTML File Operations

Pure LSP protocol timing in .html files. Each benchmark measures the time from LSP request to response completion, using multiple iterations to calculate statistical distributions (mean, median, P95, P99).

Server StartupCEM: 3.43ms3.43mswc-toolkit: 3.36ms3.36msHover Info(290 chars)(505 chars)CEM: 0.47ms0.47mswc-toolkit: 1.22ms1.22msAutocompletion(122.0 items)(130.3 items)CEM: 2.12ms2.12mswc-toolkit: 2.27ms2.27msDiagnosticsCEM: 2036.25ms2036.25mswc-toolkit: 5033.22ms5033.22msFind ReferencesCEM: 31.75ms31.75mswc-toolkit: 1.93ms1.93msCEM LSPwc-toolkit