From 0709019311245fecb1923ae3caba495afe0bed8c Mon Sep 17 00:00:00 2001 From: John Kreitlow <863023+radium-v@users.noreply.github.com> Date: Wed, 11 Feb 2026 22:08:09 -0800 Subject: [PATCH 1/2] chore: enable verbatimModuleSyntax to identify type-only imports and exports --- packages/fast-element/src/binding/one-way.ts | 6 +- packages/fast-element/src/binding/two-way.ts | 10 +- .../fast-element/src/components/attributes.ts | 2 +- .../src/components/element-controller.spec.ts | 8 +- .../src/components/element-controller.ts | 6 +- .../src/components/fast-definitions.ts | 6 +- .../src/components/fast-element.ts | 4 +- .../src/components/hydration.spec.ts | 6 +- packages/fast-element/src/context.ts | 2 +- packages/fast-element/src/di/di.ts | 9 +- packages/fast-element/src/dom.ts | 2 +- packages/fast-element/src/index.ts | 202 +++++++++--------- packages/fast-element/src/observable.ts | 22 +- .../fast-element/src/observation/arrays.ts | 2 +- .../src/observation/notifier.spec.ts | 2 +- .../src/observation/observable.spec.ts | 6 +- .../src/observation/observable.ts | 6 +- .../src/observation/update-queue.ts | 2 +- packages/fast-element/src/platform.ts | 2 +- packages/fast-element/src/state/reactive.ts | 2 +- packages/fast-element/src/state/state.ts | 4 +- packages/fast-element/src/state/watch.ts | 4 +- .../src/styles/css-binding-directive.ts | 2 +- packages/fast-element/src/styles/css.ts | 10 +- .../fast-element/src/styles/styles.spec.ts | 22 +- .../src/templating/binding.spec.ts | 18 +- .../fast-element/src/templating/children.ts | 5 +- .../src/templating/compiler.spec.ts | 18 +- .../fast-element/src/templating/compiler.ts | 14 +- .../src/templating/html-binding-directive.ts | 18 +- .../src/templating/html-directive.ts | 4 +- .../src/templating/node-observation.ts | 5 +- packages/fast-element/src/templating/ref.ts | 2 +- .../fast-element/src/templating/render.ts | 24 +-- .../fast-element/src/templating/repeat.ts | 20 +- .../fast-element/src/templating/slotted.ts | 5 +- .../src/templating/template.spec.ts | 16 +- .../fast-element/src/templating/template.ts | 18 +- .../fast-element/src/templating/view.spec.ts | 8 +- packages/fast-element/src/templating/view.ts | 4 +- packages/fast-element/tsconfig.json | 2 +- 41 files changed, 276 insertions(+), 254 deletions(-) diff --git a/packages/fast-element/src/binding/one-way.ts b/packages/fast-element/src/binding/one-way.ts index bf3597b29c9..ecd2e1a0b72 100644 --- a/packages/fast-element/src/binding/one-way.ts +++ b/packages/fast-element/src/binding/one-way.ts @@ -1,6 +1,10 @@ import type { DOMPolicy } from "../dom.js"; import type { Subscriber } from "../observation/notifier.js"; -import { Expression, ExpressionObserver, Observable } from "../observation/observable.js"; +import { + type Expression, + type ExpressionObserver, + Observable, +} from "../observation/observable.js"; import { Binding } from "./binding.js"; class OneWayBinding extends Binding< diff --git a/packages/fast-element/src/binding/two-way.ts b/packages/fast-element/src/binding/two-way.ts index 65566b25b11..0da947ba49c 100644 --- a/packages/fast-element/src/binding/two-way.ts +++ b/packages/fast-element/src/binding/two-way.ts @@ -3,14 +3,14 @@ import { isString, Message } from "../interfaces.js"; import type { Subscriber } from "../observation/notifier.js"; import { ExecutionContext, - Expression, - ExpressionController, - ExpressionObserver, + type Expression, + type ExpressionController, + type ExpressionObserver, Observable, - ObservationRecord, + type ObservationRecord, } from "../observation/observable.js"; import { FAST, makeSerializationNoop } from "../platform.js"; -import { Binding, BindingDirective } from "./binding.js"; +import { Binding, type BindingDirective } from "./binding.js"; /** * The twoWay binding options. diff --git a/packages/fast-element/src/components/attributes.ts b/packages/fast-element/src/components/attributes.ts index 994ae871eaa..50295481e13 100644 --- a/packages/fast-element/src/components/attributes.ts +++ b/packages/fast-element/src/components/attributes.ts @@ -1,4 +1,4 @@ -import { Accessor, Observable } from "../observation/observable.js"; +import { type Accessor, Observable } from "../observation/observable.js"; import type { Notifier } from "../observation/notifier.js"; import { isString } from "../interfaces.js"; import { Updates } from "../observation/update-queue.js"; diff --git a/packages/fast-element/src/components/element-controller.spec.ts b/packages/fast-element/src/components/element-controller.spec.ts index a352073697d..fd49613b35d 100644 --- a/packages/fast-element/src/components/element-controller.spec.ts +++ b/packages/fast-element/src/components/element-controller.spec.ts @@ -1,15 +1,15 @@ import chai, { expect } from "chai"; +import spies from "chai-spies"; +import { toHTML } from "../__test__/helpers.js"; import { ElementStyles } from "../index.debug.js"; -import type { HostBehavior, HostController } from "../styles/host.js"; import { observable, Observable } from "../observation/observable.js"; import { css } from "../styles/css.js"; +import type { HostBehavior, HostController } from "../styles/host.js"; import { html } from "../templating/template.js"; import { uniqueElementName } from "../testing/fixture.js"; -import { toHTML } from "../__test__/helpers.js"; import { deferHydrationAttribute, ElementController, HydratableElementController, needsHydrationAttribute } from "./element-controller.js"; -import { FASTElementDefinition, PartialFASTElementDefinition, TemplateOptions } from "./fast-definitions.js"; +import { FASTElementDefinition, type PartialFASTElementDefinition } from "./fast-definitions.js"; import { FASTElement } from "./fast-element.js"; -import spies from "chai-spies"; chai.use(spies); diff --git a/packages/fast-element/src/components/element-controller.ts b/packages/fast-element/src/components/element-controller.ts index afbfe646292..30fec6355c1 100644 --- a/packages/fast-element/src/components/element-controller.ts +++ b/packages/fast-element/src/components/element-controller.ts @@ -1,8 +1,8 @@ -import { Message, Mutable } from "../interfaces.js"; +import { Message, type Mutable } from "../interfaces.js"; import { PropertyChangeNotifier } from "../observation/notifier.js"; import { ExecutionContext, - ExpressionController, + type ExpressionController, Observable, SourceLifetime, } from "../observation/observable.js"; @@ -16,7 +16,7 @@ import type { ElementView } from "../templating/view.js"; import { UnobservableMutationObserver } from "../utilities.js"; import { FASTElementDefinition, - ShadowRootOptions, + type ShadowRootOptions, TemplateOptions, } from "./fast-definitions.js"; import type { FASTElement } from "./fast-element.js"; diff --git a/packages/fast-element/src/components/fast-definitions.ts b/packages/fast-element/src/components/fast-definitions.ts index eccfdb5f514..f5c2e910125 100644 --- a/packages/fast-element/src/components/fast-definitions.ts +++ b/packages/fast-element/src/components/fast-definitions.ts @@ -1,7 +1,7 @@ -import { Constructable, isString, KernelServiceId } from "../interfaces.js"; +import { type Constructable, isString, KernelServiceId } from "../interfaces.js"; import { Observable } from "../observation/observable.js"; import { createTypeRegistry, FAST, type TypeRegistry } from "../platform.js"; -import { ComposableStyles, ElementStyles } from "../styles/element-styles.js"; +import { type ComposableStyles, ElementStyles } from "../styles/element-styles.js"; import type { ElementViewTemplate } from "../templating/template.js"; import { AttributeConfiguration, AttributeDefinition } from "./attributes.js"; @@ -18,7 +18,7 @@ export const fastElementRegistry: TypeRegistry = FAST.get () => createTypeRegistry() ); -export { TypeRegistry }; +export type { TypeRegistry }; /** * Shadow root initialization options. diff --git a/packages/fast-element/src/components/fast-element.ts b/packages/fast-element/src/components/fast-element.ts index 2d53e9cfc1d..810d3664188 100644 --- a/packages/fast-element/src/components/fast-element.ts +++ b/packages/fast-element/src/components/fast-element.ts @@ -1,8 +1,8 @@ -import { Constructable, isFunction } from "../interfaces.js"; +import { type Constructable, isFunction } from "../interfaces.js"; import { ElementController } from "./element-controller.js"; import { FASTElementDefinition, - PartialFASTElementDefinition, + type PartialFASTElementDefinition, } from "./fast-definitions.js"; /** diff --git a/packages/fast-element/src/components/hydration.spec.ts b/packages/fast-element/src/components/hydration.spec.ts index cda93e720f2..11f532bde88 100644 --- a/packages/fast-element/src/components/hydration.spec.ts +++ b/packages/fast-element/src/components/hydration.spec.ts @@ -1,12 +1,12 @@ import chai, { expect } from "chai"; +import spies from "chai-spies"; import "../debug.js"; -import { css, HostBehavior, Updates } from "../index.js"; +import { css, Updates, type HostBehavior } from "../index.js"; import { html } from "../templating/template.js"; import { uniqueElementName } from "../testing/exports.js"; import { ElementController, HydratableElementController } from "./element-controller.js"; -import { FASTElementDefinition, PartialFASTElementDefinition } from "./fast-definitions.js"; +import { FASTElementDefinition, type PartialFASTElementDefinition } from "./fast-definitions.js"; import { FASTElement } from "./fast-element.js"; -import spies from "chai-spies"; import { HydrationMarkup } from "./hydration.js"; chai.use(spies) diff --git a/packages/fast-element/src/context.ts b/packages/fast-element/src/context.ts index 91b7709658a..83f073f8128 100644 --- a/packages/fast-element/src/context.ts +++ b/packages/fast-element/src/context.ts @@ -1,4 +1,4 @@ -import { Constructable, Message, ParameterDecorator } from "./interfaces.js"; +import { type Constructable, Message, type ParameterDecorator } from "./interfaces.js"; import { Metadata } from "./metadata.js"; import { FAST } from "./platform.js"; diff --git a/packages/fast-element/src/di/di.ts b/packages/fast-element/src/di/di.ts index 6d39c336379..2d07eff0f0c 100644 --- a/packages/fast-element/src/di/di.ts +++ b/packages/fast-element/src/di/di.ts @@ -2,8 +2,13 @@ * Big thanks to https://github.com/fkleuver and the https://github.com/aurelia/aurelia project * for the bulk of this code and many of the associated tests. */ -import { Context, ContextDecorator, ContextEvent, UnknownContext } from "../context.js"; -import { Class, Constructable, Message } from "../interfaces.js"; +import { + Context, + type ContextDecorator, + ContextEvent, + type UnknownContext, +} from "../context.js"; +import { type Class, type Constructable, Message } from "../interfaces.js"; import { Metadata } from "../metadata.js"; import { emptyArray, FAST } from "../platform.js"; diff --git a/packages/fast-element/src/dom.ts b/packages/fast-element/src/dom.ts index 0ae8530ddba..7bb44c990d4 100644 --- a/packages/fast-element/src/dom.ts +++ b/packages/fast-element/src/dom.ts @@ -1,4 +1,4 @@ -import { Message, TrustedTypesPolicy } from "./interfaces.js"; +import { Message, type TrustedTypesPolicy } from "./interfaces.js"; import { FAST } from "./platform.js"; /** diff --git a/packages/fast-element/src/index.ts b/packages/fast-element/src/index.ts index 5889b53988c..74a47902078 100644 --- a/packages/fast-element/src/index.ts +++ b/packages/fast-element/src/index.ts @@ -1,170 +1,166 @@ // Kernel export type { Callable, - Constructable, Class, + Constructable, Disposable, FASTGlobal, TrustedTypesPolicy, } from "./interfaces.js"; -export { FAST, emptyArray } from "./platform.js"; +export { emptyArray, FAST } from "./platform.js"; // DOM -export { DOMAspect, DOMSink, DOMPolicy, DOM } from "./dom.js"; +export { DOM, DOMAspect, type DOMPolicy, type DOMSink } from "./dom.js"; // Observation -export { - Accessor, - Expression, - ExecutionContext, - ExpressionController, - ExpressionObserver, - ExpressionNotifier, - Observable, - observable, - ObservationRecord, - SourceLifetime, - volatile, -} from "./observation/observable.js"; -export { - Notifier, - PropertyChangeNotifier, - Subscriber, - SubscriberSet, -} from "./observation/notifier.js"; export { ArrayObserver, - LengthObserver, lengthOf, + Sort, + sortedCount, Splice, SpliceStrategy, SpliceStrategySupport, - Sort, - SortObserver, - sortedCount, + type LengthObserver, + type SortObserver, } from "./observation/arrays.js"; -export { UpdateQueue, Updates } from "./observation/update-queue.js"; +export { + PropertyChangeNotifier, + SubscriberSet, + type Notifier, + type Subscriber, +} from "./observation/notifier.js"; +export { + ExecutionContext, + Observable, + observable, + SourceLifetime, + volatile, + type Accessor, + type Expression, + type ExpressionController, + type ExpressionNotifier, + type ExpressionObserver, + type ObservationRecord, +} from "./observation/observable.js"; +export { Updates, type UpdateQueue } from "./observation/update-queue.js"; // Binding -export { Binding, BindingDirective } from "./binding/binding.js"; -export { listener, oneWay } from "./binding/one-way.js"; -export { oneTime } from "./binding/one-time.js"; +export { Binding, type BindingDirective } from "./binding/binding.js"; export { normalizeBinding } from "./binding/normalize.js"; +export { oneTime } from "./binding/one-time.js"; +export { listener, oneWay } from "./binding/one-way.js"; // Styles +export { CSSBindingDirective } from "./styles/css-binding-directive.js"; export { - ComposableStyles, - ConstructibleStyleStrategy, - ElementStyles, -} from "./styles/element-styles.js"; -export { css, CSSTemplateTag, CSSValue } from "./styles/css.js"; -export { - AddBehavior, cssDirective, CSSDirective, - CSSDirectiveDefinition, + type AddBehavior, + type CSSDirectiveDefinition, } from "./styles/css-directive.js"; -export { HostController, HostBehavior } from "./styles/host.js"; -export { StyleStrategy, StyleTarget } from "./styles/style-strategy.js"; -export { CSSBindingDirective } from "./styles/css-binding-directive.js"; +export { css, type CSSTemplateTag, type CSSValue } from "./styles/css.js"; +export { + ElementStyles, + type ComposableStyles, + type ConstructibleStyleStrategy, +} from "./styles/element-styles.js"; +export { type HostBehavior } from "./styles/host.js"; +export type { HostController } from "./styles/host.js"; +export type { StyleStrategy, StyleTarget } from "./styles/style-strategy.js"; // Templating -export { - CaptureType, - ElementViewTemplate, - html, - HTMLTemplateCompilationResult, - HTMLTemplateTag, - InlineTemplateDirective, - SyntheticViewTemplate, - TemplateValue, - ViewTemplate, -} from "./templating/template.js"; -export { CompilationStrategy, Compiler } from "./templating/compiler.js"; -export { Markup, Parser } from "./templating/markup.js"; -export { +export { children, ChildrenDirective } from "./templating/children.js"; +export type { + ChildListDirectiveOptions, + ChildrenDirectiveOptions, + SubtreeDirectiveOptions, +} from "./templating/children.js"; +export { Compiler } from "./templating/compiler.js"; +export type { CompilationStrategy } from "./templating/compiler.js"; +export { HTMLBindingDirective } from "./templating/html-binding-directive.js"; +export type { ContentTemplate, ContentView, - HTMLBindingDirective, } from "./templating/html-binding-directive.js"; export { + htmlDirective, + HTMLDirective, + StatelessAttachedAttributeDirective, +} from "./templating/html-directive.js"; +export type { AddViewBehaviorFactory, Aspected, CompiledViewBehaviorFactory, - htmlDirective, - HTMLDirective, HTMLDirectiveDefinition, PartialHTMLDirectiveDefinition, - StatelessAttachedAttributeDirective, ViewBehavior, ViewBehaviorFactory, ViewBehaviorTargets, ViewController, } from "./templating/html-directive.js"; +export { Markup, Parser } from "./templating/markup.js"; +export { elements, NodeObservationDirective } from "./templating/node-observation.js"; +export type { + ElementsFilter, + NodeBehaviorOptions, +} from "./templating/node-observation.js"; export { ref, RefDirective } from "./templating/ref.js"; -export { when } from "./templating/when.js"; -export { - repeat, - RepeatBehavior, - RepeatDirective, - RepeatOptions, -} from "./templating/repeat.js"; -export { - slotted, - SlottedDirective, - SlottedDirectiveOptions, -} from "./templating/slotted.js"; -export { - children, - ChildrenDirective, - ChildrenDirectiveOptions, - ChildListDirectiveOptions, - SubtreeDirectiveOptions, -} from "./templating/children.js"; -export { +export { render, RenderBehavior, RenderDirective } from "./templating/render.js"; +export { repeat, RepeatBehavior, RepeatDirective } from "./templating/repeat.js"; +export type { RepeatOptions } from "./templating/repeat.js"; +export { slotted, SlottedDirective } from "./templating/slotted.js"; +export type { SlottedDirectiveOptions } from "./templating/slotted.js"; +export { html, InlineTemplateDirective, ViewTemplate } from "./templating/template.js"; +export type { + CaptureType, + ElementViewTemplate, + HTMLTemplateCompilationResult, + HTMLTemplateTag, + SyntheticViewTemplate, + TemplateValue, +} from "./templating/template.js"; +export { HTMLView, HydrationBindingError } from "./templating/view.js"; +export type { ElementView, - HTMLView, + HydratableView, SyntheticView, View, - HydratableView, - HydrationBindingError, } from "./templating/view.js"; -export { - elements, - ElementsFilter, - NodeBehaviorOptions, - NodeObservationDirective, -} from "./templating/node-observation.js"; -export { render, RenderBehavior, RenderDirective } from "./templating/render.js"; +export { when } from "./templating/when.js"; // Components -export { customElement, FASTElement } from "./components/fast-element.js"; -export { - FASTElementDefinition, - PartialFASTElementDefinition, - ShadowRootOptions, - fastElementRegistry, - TemplateOptions, - TypeRegistry, - type TemplateLifecycleCallbacks, -} from "./components/fast-definitions.js"; export { attr, AttributeConfiguration, AttributeDefinition, - AttributeMode, booleanConverter, - DecoratorAttributeConfiguration, nullableBooleanConverter, nullableNumberConverter, +} from "./components/attributes.js"; +export type { + AttributeMode, + DecoratorAttributeConfiguration, ValueConverter, } from "./components/attributes.js"; export { ElementController, - ElementControllerStrategy, HydratableElementController, - type HydrationControllerCallbacks, needsHydrationAttribute, Stages, + type HydrationControllerCallbacks, } from "./components/element-controller.js"; +export type { ElementControllerStrategy } from "./components/element-controller.js"; +export { + FASTElementDefinition, + fastElementRegistry, + TemplateOptions, + type TemplateLifecycleCallbacks, +} from "./components/fast-definitions.js"; +export type { + PartialFASTElementDefinition, + ShadowRootOptions, + TypeRegistry, +} from "./components/fast-definitions.js"; +export { customElement, FASTElement } from "./components/fast-element.js"; export { deferHydrationAttribute, isHydratable } from "./components/hydration.js"; diff --git a/packages/fast-element/src/observable.ts b/packages/fast-element/src/observable.ts index e4322a2cd5f..37da1bc3dae 100644 --- a/packages/fast-element/src/observable.ts +++ b/packages/fast-element/src/observable.ts @@ -2,22 +2,20 @@ * Observable exports for easy access to the Observable API */ export { - Accessor, - Expression, ExecutionContext, - ExpressionController, - ExpressionObserver, - ExpressionNotifier, Observable, observable, - ObservationRecord, SourceLifetime, volatile, } from "./observation/observable.js"; +export type { + Accessor, + Expression, + ExpressionController, + ExpressionNotifier, + ExpressionObserver, + ObservationRecord, +} from "./observation/observable.js"; -export { - Notifier, - PropertyChangeNotifier, - Subscriber, - SubscriberSet, -} from "./observation/notifier.js"; +export { PropertyChangeNotifier, SubscriberSet } from "./observation/notifier.js"; +export type { Notifier, Subscriber } from "./observation/notifier.js"; diff --git a/packages/fast-element/src/observation/arrays.ts b/packages/fast-element/src/observation/arrays.ts index 82e090a7a2e..8fbfc1c5963 100644 --- a/packages/fast-element/src/observation/arrays.ts +++ b/packages/fast-element/src/observation/arrays.ts @@ -1,5 +1,5 @@ import { emptyArray } from "../platform.js"; -import { Notifier, Subscriber, SubscriberSet } from "./notifier.js"; +import { type Notifier, type Subscriber, SubscriberSet } from "./notifier.js"; import { Observable } from "./observable.js"; import { Updates } from "./update-queue.js"; diff --git a/packages/fast-element/src/observation/notifier.spec.ts b/packages/fast-element/src/observation/notifier.spec.ts index e2d12a9122f..5306274cadb 100644 --- a/packages/fast-element/src/observation/notifier.spec.ts +++ b/packages/fast-element/src/observation/notifier.spec.ts @@ -1,5 +1,5 @@ import { expect } from "chai"; -import { PropertyChangeNotifier, Subscriber, SubscriberSet } from "./notifier.js"; +import { PropertyChangeNotifier, type Subscriber, SubscriberSet } from "./notifier.js"; describe(`A SubscriberSet`, () => { const oneThroughTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; diff --git a/packages/fast-element/src/observation/observable.spec.ts b/packages/fast-element/src/observation/observable.spec.ts index 0c308a2c6e1..c8dec55f81c 100644 --- a/packages/fast-element/src/observation/observable.spec.ts +++ b/packages/fast-element/src/observation/observable.spec.ts @@ -1,8 +1,8 @@ import { expect } from "chai"; -import { Updates } from "./update-queue.js"; -import { PropertyChangeNotifier, SubscriberSet } from "./notifier.js"; -import { ExecutionContext, Expression, Observable, observable, volatile } from "./observable.js"; import { Fake } from "../testing/fakes.js"; +import { PropertyChangeNotifier, SubscriberSet } from "./notifier.js"; +import { Observable, observable, volatile, type Expression } from "./observable.js"; +import { Updates } from "./update-queue.js"; describe("The Observable", () => { class Model { diff --git a/packages/fast-element/src/observation/observable.ts b/packages/fast-element/src/observation/observable.ts index 965980bf83e..bb4c4be0fe7 100644 --- a/packages/fast-element/src/observation/observable.ts +++ b/packages/fast-element/src/observation/observable.ts @@ -1,14 +1,14 @@ import { - Disposable, + type Disposable, isFunction, isString, KernelServiceId, Message, } from "../interfaces.js"; import { createMetadataLocator, FAST, makeSerializationNoop } from "../platform.js"; -import { Updates } from "./update-queue.js"; -import { PropertyChangeNotifier, SubscriberSet } from "./notifier.js"; import type { Notifier, Subscriber } from "./notifier.js"; +import { PropertyChangeNotifier, SubscriberSet } from "./notifier.js"; +import { Updates } from "./update-queue.js"; /** * Represents a getter/setter property accessor on an object. diff --git a/packages/fast-element/src/observation/update-queue.ts b/packages/fast-element/src/observation/update-queue.ts index 572f69946d3..b7bbeff2509 100644 --- a/packages/fast-element/src/observation/update-queue.ts +++ b/packages/fast-element/src/observation/update-queue.ts @@ -1,4 +1,4 @@ -import { Callable, KernelServiceId } from "../interfaces.js"; +import { type Callable, KernelServiceId } from "../interfaces.js"; import { FAST } from "../platform.js"; /** diff --git a/packages/fast-element/src/platform.ts b/packages/fast-element/src/platform.ts index 45227d4dcf0..c3329fa5c43 100644 --- a/packages/fast-element/src/platform.ts +++ b/packages/fast-element/src/platform.ts @@ -1,4 +1,4 @@ -import { FASTGlobal, noop } from "./interfaces.js"; +import { type FASTGlobal, noop } from "./interfaces.js"; import "./polyfills.js"; // ensure FAST global - duplicated debug.ts diff --git a/packages/fast-element/src/state/reactive.ts b/packages/fast-element/src/state/reactive.ts index 808ea123514..d9daffc620f 100644 --- a/packages/fast-element/src/state/reactive.ts +++ b/packages/fast-element/src/state/reactive.ts @@ -1,6 +1,6 @@ import { noop } from "../interfaces.js"; import { Observable } from "../observation/observable.js"; -import { ObjectVisitor, visitObject } from "./visitor.js"; +import { type ObjectVisitor, visitObject } from "./visitor.js"; const observed = new WeakSet(); diff --git a/packages/fast-element/src/state/state.ts b/packages/fast-element/src/state/state.ts index a9da0428481..67496b238d3 100644 --- a/packages/fast-element/src/state/state.ts +++ b/packages/fast-element/src/state/state.ts @@ -1,8 +1,8 @@ // Inspired by https://www.starbeamjs.com/ -import { Disposable, isFunction, isString } from "../interfaces.js"; +import { type Disposable, isFunction, isString } from "../interfaces.js"; import type { Subscriber } from "../observation/notifier.js"; -import { ExpressionNotifier, Observable } from "../observation/observable.js"; +import { type ExpressionNotifier, Observable } from "../observation/observable.js"; import { reactive } from "./reactive.js"; /** diff --git a/packages/fast-element/src/state/watch.ts b/packages/fast-element/src/state/watch.ts index e48ca6d1d20..0e1505d82db 100644 --- a/packages/fast-element/src/state/watch.ts +++ b/packages/fast-element/src/state/watch.ts @@ -1,8 +1,8 @@ -import { Disposable, isFunction, noop } from "../interfaces.js"; +import { type Disposable, isFunction, noop } from "../interfaces.js"; import { ArrayObserver } from "../observation/arrays.js"; import type { Notifier, Subscriber } from "../observation/notifier.js"; import { Observable } from "../observation/observable.js"; -import { ObjectVisitor, visitObject } from "./visitor.js"; +import { type ObjectVisitor, visitObject } from "./visitor.js"; interface WatchData { notifiers: Notifier[]; diff --git a/packages/fast-element/src/styles/css-binding-directive.ts b/packages/fast-element/src/styles/css-binding-directive.ts index 77097147ad3..f2aa8c26a8f 100644 --- a/packages/fast-element/src/styles/css-binding-directive.ts +++ b/packages/fast-element/src/styles/css-binding-directive.ts @@ -1,7 +1,7 @@ import type { Binding, BindingDirective } from "../binding/binding.js"; import type { Subscriber } from "../observation/notifier.js"; import type { ExpressionObserver } from "../observation/observable.js"; -import { AddBehavior, CSSDirective } from "./css-directive.js"; +import { type AddBehavior, CSSDirective } from "./css-directive.js"; import type { ComposableStyles } from "./element-styles.js"; import type { HostBehavior, HostController } from "./host.js"; diff --git a/packages/fast-element/src/styles/css.ts b/packages/fast-element/src/styles/css.ts index dae0822cc02..99009a9686e 100644 --- a/packages/fast-element/src/styles/css.ts +++ b/packages/fast-element/src/styles/css.ts @@ -1,11 +1,11 @@ -import { isFunction, isString } from "../interfaces.js"; -import type { Expression } from "../observation/observable.js"; import { Binding } from "../binding/binding.js"; import { oneWay } from "../binding/one-way.js"; -import type { HostBehavior, HostController } from "./host.js"; -import { AddBehavior, CSSDirective } from "./css-directive.js"; -import { ComposableStyles, ElementStyles } from "./element-styles.js"; +import { isFunction, isString } from "../interfaces.js"; +import type { Expression } from "../observation/observable.js"; import { CSSBindingDirective } from "./css-binding-directive.js"; +import { type AddBehavior, CSSDirective } from "./css-directive.js"; +import { type ComposableStyles, ElementStyles } from "./element-styles.js"; +import type { HostBehavior, HostController } from "./host.js"; /** * Represents the types of values that can be interpolated into a template. diff --git a/packages/fast-element/src/styles/styles.spec.ts b/packages/fast-element/src/styles/styles.spec.ts index 6c19c460d67..344549de4a2 100644 --- a/packages/fast-element/src/styles/styles.spec.ts +++ b/packages/fast-element/src/styles/styles.spec.ts @@ -1,23 +1,23 @@ import { expect } from "chai"; +import { Binding } from "../binding/binding.js"; +import { oneTime } from "../binding/one-time.js"; import { AdoptedStyleSheetsStrategy, StyleElementStrategy } from "../components/element-controller.js"; -import type { StyleTarget } from "./style-strategy.js"; +import { customElement, FASTElement } from "../components/fast-element.js"; +import { ExecutionContext } from "../observation/observable.js"; +import { ref } from "../templating/ref.js"; +import { html } from "../templating/template.js"; import { uniqueElementName } from "../testing/fixture.js"; -import { AddBehavior, cssDirective, CSSDirective } from "./css-directive.js"; +import { CSSBindingDirective } from "./css-binding-directive.js"; +import { cssDirective, CSSDirective, type AddBehavior } from "./css-directive.js"; import { css } from "./css.js"; import { - ComposableStyles, - ElementStyles + ElementStyles, + type ComposableStyles } from "./element-styles.js"; import type { HostBehavior } from "./host.js"; -import { html} from "../templating/template.js" -import { ref} from "../templating/ref.js" -import { FASTElement, customElement } from "../components/fast-element.js"; -import { ExecutionContext } from "../observation/observable.js"; -import { CSSBindingDirective } from "./css-binding-directive.js"; -import { Binding } from "../binding/binding.js"; -import { oneTime } from "../binding/one-time.js"; +import type { StyleTarget } from "./style-strategy.js"; if (ElementStyles.supportsAdoptedStyleSheets) { describe("AdoptedStyleSheetsStrategy", () => { diff --git a/packages/fast-element/src/templating/binding.spec.ts b/packages/fast-element/src/templating/binding.spec.ts index 77c1abd25cf..8e31658e56b 100644 --- a/packages/fast-element/src/templating/binding.spec.ts +++ b/packages/fast-element/src/templating/binding.spec.ts @@ -1,18 +1,18 @@ import { expect } from "chai"; -import { HTMLBindingDirective } from "./html-binding-directive.js"; -import { observable } from "../observation/observable.js"; -import { html, ViewTemplate } from "./template.js"; import { createTrackableDOMPolicy, toHTML } from "../__test__/helpers.js"; -import { SyntheticView, HTMLView } from "./view.js"; -import { Updates } from "../observation/update-queue.js"; -import { DOM, DOMPolicy } from "../dom.js"; +import { oneTime } from "../binding/one-time.js"; +import { listener, oneWay } from "../binding/one-way.js"; import { Signal, signal } from "../binding/signal.js"; -import { twoWay, TwoWayBindingOptions } from "../binding/two-way.js"; +import { twoWay, type TwoWayBindingOptions } from "../binding/two-way.js"; +import { DOM, type DOMPolicy } from "../dom.js"; +import { observable } from "../observation/observable.js"; +import { Updates } from "../observation/update-queue.js"; import { Fake } from "../testing/fakes.js"; +import { HTMLBindingDirective } from "./html-binding-directive.js"; import { HTMLDirective } from "./html-directive.js"; import { nextId } from "./markup.js"; -import { oneWay, listener } from "../binding/one-way.js"; -import { oneTime } from "../binding/one-time.js"; +import { html, ViewTemplate } from "./template.js"; +import { HTMLView, type SyntheticView } from "./view.js"; describe("The HTML binding directive", () => { class Model { diff --git a/packages/fast-element/src/templating/children.ts b/packages/fast-element/src/templating/children.ts index 9c012d1a135..dce1c524d95 100644 --- a/packages/fast-element/src/templating/children.ts +++ b/packages/fast-element/src/templating/children.ts @@ -1,6 +1,9 @@ import { isString, noop } from "../interfaces.js"; import { HTMLDirective } from "./html-directive.js"; -import { NodeBehaviorOptions, NodeObservationDirective } from "./node-observation.js"; +import { + type NodeBehaviorOptions, + NodeObservationDirective, +} from "./node-observation.js"; import type { CaptureType } from "./template.js"; /** diff --git a/packages/fast-element/src/templating/compiler.spec.ts b/packages/fast-element/src/templating/compiler.spec.ts index c563b1c106e..adb1c0e68e3 100644 --- a/packages/fast-element/src/templating/compiler.spec.ts +++ b/packages/fast-element/src/templating/compiler.spec.ts @@ -1,17 +1,17 @@ import { expect } from "chai"; +import { createTrackableDOMPolicy, toHTML } from "../__test__/helpers.js"; +import { oneWay } from "../binding/one-way.js"; import { customElement, FASTElement } from "../components/fast-element.js"; -import { Markup } from './markup.js'; +import { DOM, DOMAspect, type DOMPolicy } from "../dom.js"; +import { ElementStyles } from "../index.debug.js"; import { css } from "../styles/css.js"; -import { createTrackableDOMPolicy, toHTML } from "../__test__/helpers.js"; -import { HTMLBindingDirective } from "./html-binding-directive.js"; +import { Fake } from "../testing/fakes.js"; +import { uniqueElementName } from "../testing/fixture.js"; import { Compiler } from "./compiler.js"; -import { CompiledViewBehaviorFactory, HTMLDirective, ViewBehaviorFactory } from "./html-directive.js"; +import { HTMLBindingDirective } from "./html-binding-directive.js"; +import { HTMLDirective, type CompiledViewBehaviorFactory, type ViewBehaviorFactory } from "./html-directive.js"; +import { Markup } from './markup.js'; import { html } from "./template.js"; -import { ElementStyles } from "../index.debug.js"; -import { uniqueElementName } from "../testing/fixture.js"; -import { Fake } from "../testing/fakes.js"; -import { DOM, DOMAspect, DOMPolicy } from "../dom.js"; -import { oneWay } from "../binding/one-way.js"; /** * Used to satisfy TS by exposing some internal properties of the diff --git a/packages/fast-element/src/templating/compiler.ts b/packages/fast-element/src/templating/compiler.ts index 6f332929722..019fa36ec6e 100644 --- a/packages/fast-element/src/templating/compiler.ts +++ b/packages/fast-element/src/templating/compiler.ts @@ -1,17 +1,17 @@ +import { oneTime } from "../binding/one-time.js"; +import { oneWay } from "../binding/one-way.js"; +import { DOM, type DOMPolicy } from "../dom.js"; import { isFunction, isString, Message } from "../interfaces.js"; import type { ExecutionContext } from "../observation/observable.js"; import { FAST } from "../platform.js"; -import { DOM, DOMPolicy } from "../dom.js"; -import { oneTime } from "../binding/one-time.js"; -import { oneWay } from "../binding/one-way.js"; -import { nextId, Parser } from "./markup.js"; import { HTMLBindingDirective } from "./html-binding-directive.js"; import { - Aspected, - CompiledViewBehaviorFactory, + type Aspected, + type CompiledViewBehaviorFactory, HTMLDirective, - ViewBehaviorFactory, + type ViewBehaviorFactory, } from "./html-directive.js"; +import { nextId, Parser } from "./markup.js"; import type { HTMLTemplateCompilationResult as TemplateCompilationResult } from "./template.js"; import { HTMLView } from "./view.js"; diff --git a/packages/fast-element/src/templating/html-binding-directive.ts b/packages/fast-element/src/templating/html-binding-directive.ts index 1a04825c0ca..48d466624db 100644 --- a/packages/fast-element/src/templating/html-binding-directive.ts +++ b/packages/fast-element/src/templating/html-binding-directive.ts @@ -1,20 +1,20 @@ +import type { Binding, BindingDirective } from "../binding/binding.js"; import { isHydratable } from "../components/hydration.js"; -import { DOM, DOMAspect, DOMPolicy } from "../dom.js"; +import { DOM, DOMAspect, type DOMPolicy } from "../dom.js"; import { Message } from "../interfaces.js"; import { ExecutionContext, - Expression, - ExpressionObserver, + type Expression, + type ExpressionObserver, } from "../observation/observable.js"; import { FAST } from "../platform.js"; -import type { Binding, BindingDirective } from "../binding/binding.js"; import { - AddViewBehaviorFactory, - Aspected, + type AddViewBehaviorFactory, + type Aspected, HTMLDirective, - ViewBehavior, - ViewBehaviorFactory, - ViewController, + type ViewBehavior, + type ViewBehaviorFactory, + type ViewController, } from "./html-directive.js"; import { Markup } from "./markup.js"; import { HydrationStage } from "./view.js"; diff --git a/packages/fast-element/src/templating/html-directive.ts b/packages/fast-element/src/templating/html-directive.ts index 701e1247343..3114083008e 100644 --- a/packages/fast-element/src/templating/html-directive.ts +++ b/packages/fast-element/src/templating/html-directive.ts @@ -1,6 +1,6 @@ -import { DOMAspect, DOMPolicy } from "../dom.js"; -import type { Constructable, Mutable } from "../interfaces.js"; import type { Binding } from "../binding/binding.js"; +import { DOMAspect, type DOMPolicy } from "../dom.js"; +import type { Constructable, Mutable } from "../interfaces.js"; import type { ExpressionController } from "../observation/observable.js"; import { createTypeRegistry, makeSerializationNoop } from "../platform.js"; import { Markup } from "./markup.js"; diff --git a/packages/fast-element/src/templating/node-observation.ts b/packages/fast-element/src/templating/node-observation.ts index 5ed42380ec1..f36aa9b4b2e 100644 --- a/packages/fast-element/src/templating/node-observation.ts +++ b/packages/fast-element/src/templating/node-observation.ts @@ -1,5 +1,8 @@ import { emptyArray } from "../platform.js"; -import { StatelessAttachedAttributeDirective, ViewController } from "./html-directive.js"; +import { + StatelessAttachedAttributeDirective, + type ViewController, +} from "./html-directive.js"; /** * Options for configuring node observation behavior. diff --git a/packages/fast-element/src/templating/ref.ts b/packages/fast-element/src/templating/ref.ts index a39db5003fb..7c8b57c8089 100644 --- a/packages/fast-element/src/templating/ref.ts +++ b/packages/fast-element/src/templating/ref.ts @@ -1,7 +1,7 @@ import { HTMLDirective, StatelessAttachedAttributeDirective, - ViewController, + type ViewController, } from "./html-directive.js"; import type { CaptureType } from "./template.js"; diff --git a/packages/fast-element/src/templating/render.ts b/packages/fast-element/src/templating/render.ts index 996799721a7..0ff4b3aa7d1 100644 --- a/packages/fast-element/src/templating/render.ts +++ b/packages/fast-element/src/templating/render.ts @@ -1,32 +1,32 @@ +import { Binding, type BindingDirective } from "../binding/binding.js"; +import { normalizeBinding } from "../binding/normalize.js"; +import { oneTime } from "../binding/one-time.js"; +import { oneWay } from "../binding/one-way.js"; import { FASTElementDefinition } from "../components/fast-definitions.js"; import type { FASTElement } from "../components/fast-element.js"; import { isHydratable } from "../components/hydration.js"; import type { DOMPolicy } from "../dom.js"; -import { Constructable, isFunction, isString } from "../interfaces.js"; -import { Binding, BindingDirective } from "../binding/binding.js"; +import { type Constructable, isFunction, isString } from "../interfaces.js"; import type { Subscriber } from "../observation/notifier.js"; import type { ExecutionContext, Expression, ExpressionObserver, } from "../observation/observable.js"; -import { oneTime } from "../binding/one-time.js"; -import { oneWay } from "../binding/one-way.js"; -import { normalizeBinding } from "../binding/normalize.js"; import type { ContentTemplate, ContentView } from "./html-binding-directive.js"; import { - AddViewBehaviorFactory, + type AddViewBehaviorFactory, HTMLDirective, - ViewBehavior, - ViewBehaviorFactory, - ViewController, + type ViewBehavior, + type ViewBehaviorFactory, + type ViewController, } from "./html-directive.js"; import { Markup } from "./markup.js"; import { - CaptureType, + type CaptureType, html, - SyntheticViewTemplate, - TemplateValue, + type SyntheticViewTemplate, + type TemplateValue, ViewTemplate, } from "./template.js"; import { HydrationStage } from "./view.js"; diff --git a/packages/fast-element/src/templating/repeat.ts b/packages/fast-element/src/templating/repeat.ts index 77e23e499fd..7326727ed89 100644 --- a/packages/fast-element/src/templating/repeat.ts +++ b/packages/fast-element/src/templating/repeat.ts @@ -1,16 +1,20 @@ +import type { Binding, BindingDirective } from "../binding/binding.js"; +import { normalizeBinding } from "../binding/normalize.js"; import { HydrationMarkup, isHydratable } from "../components/hydration.js"; import { ArrayObserver, Sort, Splice } from "../observation/arrays.js"; import type { Notifier, Subscriber } from "../observation/notifier.js"; -import { Expression, ExpressionObserver, Observable } from "../observation/observable.js"; +import { + type Expression, + type ExpressionObserver, + Observable, +} from "../observation/observable.js"; import { emptyArray } from "../platform.js"; -import type { Binding, BindingDirective } from "../binding/binding.js"; -import { normalizeBinding } from "../binding/normalize.js"; import { - AddViewBehaviorFactory, + type AddViewBehaviorFactory, HTMLDirective, - ViewBehavior, - ViewBehaviorFactory, - ViewController, + type ViewBehavior, + type ViewBehaviorFactory, + type ViewController, } from "./html-directive.js"; import { Markup } from "./markup.js"; import type { @@ -19,7 +23,7 @@ import type { SyntheticViewTemplate, ViewTemplate, } from "./template.js"; -import { HTMLView, HydrationStage, HydrationView, SyntheticView } from "./view.js"; +import { HTMLView, HydrationStage, HydrationView, type SyntheticView } from "./view.js"; /** * Options for configuring repeat behavior. diff --git a/packages/fast-element/src/templating/slotted.ts b/packages/fast-element/src/templating/slotted.ts index 0f92b9832f8..59accb4ca3a 100644 --- a/packages/fast-element/src/templating/slotted.ts +++ b/packages/fast-element/src/templating/slotted.ts @@ -1,6 +1,9 @@ import { isString } from "../interfaces.js"; import { HTMLDirective } from "./html-directive.js"; -import { NodeBehaviorOptions, NodeObservationDirective } from "./node-observation.js"; +import { + type NodeBehaviorOptions, + NodeObservationDirective, +} from "./node-observation.js"; import type { CaptureType } from "./template.js"; const slotEvent = "slotchange"; diff --git a/packages/fast-element/src/templating/template.spec.ts b/packages/fast-element/src/templating/template.spec.ts index 4725fb03feb..75a57b839bf 100644 --- a/packages/fast-element/src/templating/template.spec.ts +++ b/packages/fast-element/src/templating/template.spec.ts @@ -1,14 +1,14 @@ import { expect } from "chai"; -import { html, ViewTemplate } from "./template.js"; -import { Markup, nextId, Parser } from "./markup.js"; -import { HTMLBindingDirective } from "./html-binding-directive.js"; -import { HTMLDirective, ViewBehaviorFactory, Aspected, htmlDirective, AddViewBehaviorFactory, CompiledViewBehaviorFactory } from "./html-directive.js"; -import { Constructable, isString } from "../interfaces.js"; -import { Fake } from "../testing/fakes.js"; -import { DOMAspect, DOMPolicy } from "../dom.js"; import { createTrackableDOMPolicy } from "../__test__/helpers.js"; -import { Compiler } from "./compiler.js"; import { oneWay } from "../binding/one-way.js"; +import { DOMAspect, type DOMPolicy } from "../dom.js"; +import { isString, type Constructable } from "../interfaces.js"; +import { Fake } from "../testing/fakes.js"; +import { Compiler } from "./compiler.js"; +import { HTMLBindingDirective } from "./html-binding-directive.js"; +import { HTMLDirective, htmlDirective, type AddViewBehaviorFactory, type Aspected, type CompiledViewBehaviorFactory, type ViewBehaviorFactory } from "./html-directive.js"; +import { Markup, nextId, Parser } from "./markup.js"; +import { html, ViewTemplate } from "./template.js"; describe(`The html tag template helper`, () => { it(`transforms a string into a ViewTemplate.`, () => { diff --git a/packages/fast-element/src/templating/template.ts b/packages/fast-element/src/templating/template.ts index be1448cbb99..aaa3509e8e0 100644 --- a/packages/fast-element/src/templating/template.ts +++ b/packages/fast-element/src/templating/template.ts @@ -1,19 +1,19 @@ +import { Binding } from "../binding/binding.js"; +import { oneTime } from "../binding/one-time.js"; +import { oneWay } from "../binding/one-way.js"; import type { DOMPolicy } from "../dom.js"; import { isFunction, isString, Message } from "../interfaces.js"; -import { Binding } from "../binding/binding.js"; import type { Expression } from "../observation/observable.js"; import { FAST, makeSerializationNoop } from "../platform.js"; -import { oneWay } from "../binding/one-way.js"; -import { oneTime } from "../binding/one-time.js"; -import { HTMLBindingDirective } from "./html-binding-directive.js"; import { Compiler } from "./compiler.js"; +import { HTMLBindingDirective } from "./html-binding-directive.js"; import { - AddViewBehaviorFactory, - Aspected, - CompiledViewBehaviorFactory, + type AddViewBehaviorFactory, + type Aspected, + type CompiledViewBehaviorFactory, HTMLDirective, - HTMLDirectiveDefinition, - ViewBehaviorFactory, + type HTMLDirectiveDefinition, + type ViewBehaviorFactory, } from "./html-directive.js"; import { nextId } from "./markup.js"; import type { ElementView, HTMLView, SyntheticView } from "./view.js"; diff --git a/packages/fast-element/src/templating/view.spec.ts b/packages/fast-element/src/templating/view.spec.ts index ac1eab4a9b2..a17f161cd5e 100644 --- a/packages/fast-element/src/templating/view.spec.ts +++ b/packages/fast-element/src/templating/view.spec.ts @@ -2,7 +2,13 @@ import { expect } from "chai"; import { Message } from "../interfaces.js"; import { ExecutionContext } from "../observation/observable.js"; import { FAST } from "../platform.js"; -import { AddViewBehaviorFactory, HTMLDirective, ViewBehavior, ViewBehaviorFactory, ViewController } from "./html-directive.js"; +import { + HTMLDirective, + type AddViewBehaviorFactory, + type ViewBehavior, + type ViewBehaviorFactory, + type ViewController, +} from "./html-directive.js"; import { Markup } from "./markup.js"; import { html } from "./template.js"; import { HTMLView } from "./view.js"; diff --git a/packages/fast-element/src/templating/view.ts b/packages/fast-element/src/templating/view.ts index a2403c9f2e3..484e6f9a381 100644 --- a/packages/fast-element/src/templating/view.ts +++ b/packages/fast-element/src/templating/view.ts @@ -4,9 +4,8 @@ import { createRangeForNodes, HydrationTargetElementError, targetFactory, - ViewBehaviorBoundaries, + type ViewBehaviorBoundaries, } from "../hydration/target-builder.js"; -import type { ViewTemplate } from "../templating/template.js"; import type { Disposable } from "../interfaces.js"; import { ExecutionContext, @@ -14,6 +13,7 @@ import { SourceLifetime, } from "../observation/observable.js"; import { makeSerializationNoop } from "../platform.js"; +import type { ViewTemplate } from "../templating/template.js"; import type { CompiledViewBehaviorFactory, ViewBehavior, diff --git a/packages/fast-element/tsconfig.json b/packages/fast-element/tsconfig.json index 48cc885b699..46c860bd519 100644 --- a/packages/fast-element/tsconfig.json +++ b/packages/fast-element/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "declarationDir": "dist/dts", "outDir": "dist/esm", - "importsNotUsedAsValues": "error", + "verbatimModuleSyntax": true, "experimentalDecorators": true, "emitDecoratorMetadata": true, "noImplicitAny": false, From c0922190ea9dd5f9e7a1aba28ba7df58628674f1 Mon Sep 17 00:00:00 2001 From: John Kreitlow <863023+radium-v@users.noreply.github.com> Date: Wed, 11 Feb 2026 22:08:41 -0800 Subject: [PATCH 2/2] Change files --- ...-fast-element-065d2f58-8e71-46cb-8b0b-7c73b42483eb.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 change/@microsoft-fast-element-065d2f58-8e71-46cb-8b0b-7c73b42483eb.json diff --git a/change/@microsoft-fast-element-065d2f58-8e71-46cb-8b0b-7c73b42483eb.json b/change/@microsoft-fast-element-065d2f58-8e71-46cb-8b0b-7c73b42483eb.json new file mode 100644 index 00000000000..0fcbb11a3da --- /dev/null +++ b/change/@microsoft-fast-element-065d2f58-8e71-46cb-8b0b-7c73b42483eb.json @@ -0,0 +1,7 @@ +{ + "type": "patch", + "comment": "chore: enable verbatimModuleSyntax to identify type-only imports and exports", + "packageName": "@microsoft/fast-element", + "email": "863023+radium-v@users.noreply.github.com", + "dependentChangeType": "none" +}